diff --git a/.github/workflows/wai-conformance.yml b/.github/workflows/wai-conformance.yml index 2895123d8..c5af6daa3 100644 --- a/.github/workflows/wai-conformance.yml +++ b/.github/workflows/wai-conformance.yml @@ -361,16 +361,19 @@ jobs: # jpegai_ops.rs holds the JPEG AI scale path (integer-operators §13.6.1) to its committed # lowered graphs and certificate here; its cases on the jpegai/v1 bundle skip here and # run in wai-jpegai-e2e.yml, which fetches the bundle and requires them. + # jpegai_nets_ops.rs does the same for its other integer networks (§13.6.2): the + # committed synthetic networks' lowered graphs and certificate, and every kernel + # policy on them, here; its jpegai/v1 cases there. # int_video_ops.rs and wir1_ops.rs hold WIV1 and WIR1, which decode through the # operator set's stage operators with no graph (integer-operators §13.5), to their # stage forms, goldens and refusals; `i32_forms` builds E9's 32-bit form, which they # and int_ops_differential.rs hold to the exact one. - name: Fast integer kernels ≡ reference kernels (overflow checks on) working-directory: wai/wai-rs - run: cargo test --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int,generate,score,staged,stage_measure,legacy_int,i32_forms --lib --test int_kernels_vectors --test int_kernels_geometry --test int_synth_ops --test int_ops_differential --test int_splat_ops --test int_audio_ops --test int_hyper_ops --test int_mlicpp --test int_mlicpp_preflight --test int_mlicpp_ops --test int_world_ops --test int_world_memory --test jpegai_ops --test int_video_ops --test wir1_ops --test int_audio --test int_splat --test generate --test cli_generate_score --test int_payload --test int_payload_preflight --test int_payload_cost --test int_set_cache --test int_video_enc_memory --test cli_stage --test staged_resources --test stage_measure --test stage_measure_bounds --test int_video --test int_video_halfpel --test int_video_keyframe --test int_world --test int_world2 --test jpegai_bitstream_calibration + run: cargo test --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int,generate,score,staged,stage_measure,legacy_int,i32_forms --lib --test int_kernels_vectors --test int_kernels_geometry --test int_synth_ops --test int_ops_differential --test int_splat_ops --test int_audio_ops --test int_hyper_ops --test int_mlicpp --test int_mlicpp_preflight --test int_mlicpp_ops --test int_world_ops --test int_world_memory --test jpegai_ops --test jpegai_nets_ops --test int_video_ops --test wir1_ops --test int_audio --test int_splat --test generate --test cli_generate_score --test int_payload --test int_payload_preflight --test int_payload_cost --test int_set_cache --test int_video_enc_memory --test cli_stage --test staged_resources --test stage_measure --test stage_measure_bounds --test int_video --test int_video_halfpel --test int_video_keyframe --test int_world --test int_world2 --test jpegai_bitstream_calibration - name: Fast integer kernels ≡ reference kernels (release, overflow checks off) working-directory: wai/wai-rs - run: cargo test --release --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int,generate,score,staged,stage_measure,legacy_int,i32_forms --lib --test int_kernels_vectors --test int_kernels_geometry --test int_synth_ops --test int_ops_differential --test int_splat_ops --test int_audio_ops --test int_hyper_ops --test int_mlicpp --test int_mlicpp_preflight --test int_mlicpp_ops --test int_world_ops --test int_world_memory --test jpegai_ops --test int_video_ops --test wir1_ops --test int_audio --test int_splat --test generate --test cli_generate_score --test int_payload --test int_payload_preflight --test int_payload_cost --test int_set_cache --test int_video_enc_memory --test cli_stage --test staged_resources --test stage_measure --test stage_measure_bounds --test manifest_parse_memory --test manifest_reader_equivalence --test int_video --test int_video_halfpel --test int_video_keyframe --test int_world --test int_world2 --test jpegai_bitstream_calibration + run: cargo test --release --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int,generate,score,staged,stage_measure,legacy_int,i32_forms --lib --test int_kernels_vectors --test int_kernels_geometry --test int_synth_ops --test int_ops_differential --test int_splat_ops --test int_audio_ops --test int_hyper_ops --test int_mlicpp --test int_mlicpp_preflight --test int_mlicpp_ops --test int_world_ops --test int_world_memory --test jpegai_ops --test jpegai_nets_ops --test int_video_ops --test wir1_ops --test int_audio --test int_splat --test generate --test cli_generate_score --test int_payload --test int_payload_preflight --test int_payload_cost --test int_set_cache --test int_video_enc_memory --test cli_stage --test staged_resources --test stage_measure --test stage_measure_bounds --test manifest_parse_memory --test manifest_reader_equivalence --test int_video --test int_video_halfpel --test int_video_keyframe --test int_world --test int_world2 --test jpegai_bitstream_calibration # The integer decode path builds under each of its features alone, so a sink can take # one medium without the others, and for wasm32 (a browser sink); `int_payload` arms a # medium only under its feature, and none needs `neural`. So does the staged-measurement diff --git a/.github/workflows/wai-jpegai-e2e.yml b/.github/workflows/wai-jpegai-e2e.yml index 971e25276..8fc31a75e 100644 --- a/.github/workflows/wai-jpegai-e2e.yml +++ b/.github/workflows/wai-jpegai-e2e.yml @@ -24,10 +24,12 @@ name: WAI JPEG-AI whole decode (pinned inputs, required) # - two decodes in one process are byte-identical and the reconstruction binding # verifies the second and rejects a one-byte change; # - the bundle's bounds certificate (wai/extensions/integer-operators.md §8.5, -# §13.6.1: the two scale graphs) is byte for byte the one committed under the -# set's digest in wai/ops-conformance/certificates/, which is the listing digest -# the set-form pin below covers, from both certifiers (wai-verify and the -# independent tools/wai_ops_check.py), and its verdict meets acc32; +# §13.6: the two scale graphs and the four graphs of its other integer +# networks) is byte for byte the one committed under the set's digest in +# wai/ops-conformance/certificates/, which is the listing digest the set-form +# pin below covers, from both certifiers (wai-verify and the independent +# tools/wai_ops_check.py); its verdict meets acc64, and the scale path's graphs +# meet acc32 (§11, role_profiles); # - the decoded pixels hash to WAI_JPEGAI_EXPECT_SHA256 below: the value measured # from these inputs on an Apple Silicon Mac (aarch64 macOS, native) and # reproduced by an x86_64 Linux build (glibc, run under QEMU user-mode @@ -111,6 +113,7 @@ on: - 'wai/wai-rs/tests/jpegai_reconstruction_binding.rs' - 'wai/wai-rs/tests/jpegai_cross_platform.rs' - 'wai/wai-rs/tests/jpegai_ops.rs' + - 'wai/wai-rs/tests/jpegai_nets_ops.rs' - 'wai/wai-rs/tests/jpegai_memory.rs' - 'wai/wai-rs/src/int_set_cache.rs' - 'wai/wai-rs/src/int_ops.rs' @@ -151,6 +154,7 @@ on: - 'wai/wai-rs/tests/jpegai_reconstruction_binding.rs' - 'wai/wai-rs/tests/jpegai_cross_platform.rs' - 'wai/wai-rs/tests/jpegai_ops.rs' + - 'wai/wai-rs/tests/jpegai_nets_ops.rs' - 'wai/wai-rs/tests/jpegai_memory.rs' - 'wai/wai-rs/src/int_set_cache.rs' - 'wai/wai-rs/src/int_ops.rs' @@ -203,7 +207,7 @@ jobs: if: needs.relevant.outputs.run == 'true' name: fetch pinned JPEG-AI inputs → whole decode + pixel hash, required runs-on: linux - timeout-minutes: 30 + timeout-minutes: 60 env: WAI_REQUIRE_SOTA_VECTORS: '1' WAI_JPEGAI_DIR: ${{ github.workspace }}/jpegai_e2e @@ -229,7 +233,7 @@ jobs: # bundle is not committed, so its certificate is, under the set's digest (the # listing of norm.json and weights/*, as the set-form pin covers it), and # listed in wai/ops-conformance/certificates/external.json. - - name: The bundle's bounds certificate is the committed one, and meets acc32 + - name: The bundle's bounds certificate is the committed one; it meets acc64, and its scale path acc32 shell: bash working-directory: wai run: | @@ -240,7 +244,8 @@ jobs: for n in hs_y hs_uv hyp_y hyp_uv synth_y synth_uv mcm0_y mcm1_y mcm2_y mcm3_y icci; do M+=(--member "weights/$n.json=$D/$n.json") done - wai-verify/target/release/wai-verify bounds --capability wai.image.jpegai "${M[@]}" --profile acc32 \ + wai-verify/target/release/wai-verify bounds --capability wai.image.jpegai "${M[@]}" \ + --profile acc64 --role-profile hs_y=acc32 --role-profile hs_uv=acc32 \ --out "${RUNNER_TEMP:-/tmp}/jpegai-bounds.json" \ --check ops-conformance/certificates/wai.image.jpegai/3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37.json # The same certificate from the independent certifier (Python standard library @@ -248,7 +253,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: '3.11' - - name: The independent certifier writes the same certificate, and it meets acc32 + - name: The independent certifier writes the same certificate; it meets acc64, and its scale path acc32 shell: bash working-directory: wai run: | @@ -259,7 +264,7 @@ jobs: M+=(--member "weights/$n.json=$D/$n.json") done python3 -I tools/wai_ops_check.py certify --capability wai.image.jpegai --lowering jpegai-int/1 "${M[@]}" \ - --profile acc32 --out "${RUNNER_TEMP:-/tmp}/jpegai-bounds-py.json" \ + --profile acc64 --role-profile hs_y=acc32 --role-profile hs_uv=acc32 --out "${RUNNER_TEMP:-/tmp}/jpegai-bounds-py.json" \ --check ops-conformance/certificates/wai.image.jpegai/3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37.json # The operator set's lowering of the bundle's scale path (integer-operators # §13.6.1), run through the interpreter with every value held to its certified @@ -340,3 +345,38 @@ jobs: echo "::error::a JPEG-AI test skipped instead of checking its input" exit 1 fi + + # The other integer networks through the integer operator set (integer-operators + # §13.6.2, lowered by jpegai-int/1 to rec_y, rec_uv, syn_y and syn_uv), on this + # bundle: the lowering of the networks as the decoder parses them is the lowering of + # their bytes and the committed certificate's graphs, under acc64; each network + # through its graph gives the direct network's values on the test codestream; every + # value each operator forms there lies within its certified interval (the measured + # accumulators of §13.6.2); and every kernel policy runs the graphs alike. + - name: The hyper decoders, context stages and synthesis through the integer operator set, on the pinned bundle (missing input = failure) + shell: bash + working-directory: wai/wai-rs + run: | + set -o pipefail + log="${RUNNER_TEMP:-/tmp}/jpegai-nets-ops.log" + [ "${WAI_REQUIRE_SOTA_VECTORS:-}" = 1 ] \ + || { echo "::error::WAI_REQUIRE_SOTA_VECTORS must be 1 in this job"; exit 1; } + export WAI_JPEGAI_CODESTREAM="$WAI_JPEGAI_DIR/test256.bin" + export WAI_JPEGAI_WEIGHTS_DIR="$WAI_JPEGAI_DIR" + export WAI_JPEGAI_NORM="$WAI_JPEGAI_DIR/norm.json" + cargo test --release --no-default-features --features neural_int,legacy_int --test jpegai_nets_ops \ + -- --show-output 2>&1 | tee "$log" + for t in the_committed_bundle_lowers_to_its_committed_networks \ + the_pinned_bundle_lowers_its_networks_to_its_certificate \ + the_networks_decode_through_the_lowering_as_directly \ + the_whole_decode_through_the_networks_is_the_pinned_decode \ + the_networks_keep_to_their_certificate_on_the_test_codestream \ + every_load_check_of_the_networks_refuses_model_mismatch \ + a_value_past_its_range_is_refused_field_range \ + every_kernel_policy_runs_the_networks_alike; do + grep -q "^test $t \.\.\. ok$" "$log" || { echo "::error::$t did not run and pass"; exit 1; } + done + if grep -nE 'SKIPPED|NOT VERIFIED' "$log"; then + echo "::error::a JPEG-AI test skipped instead of checking its input" + exit 1 + fi diff --git a/.github/workflows/wai-ops-differential.yml b/.github/workflows/wai-ops-differential.yml index 49a9f8610..be49d420b 100644 --- a/.github/workflows/wai-ops-differential.yml +++ b/.github/workflows/wai-ops-differential.yml @@ -12,7 +12,9 @@ name: wai-ops differential (nightly) # integer renderer, against its direct renderer with the direct guard, and # wai.image.jpegai's scale path and entropy decodes, against its direct computation, # which panics (or, without overflow checks, may compute on) where the operator set -# refuses a stream; and WIV1 (wai.video.int_motion, the P-frames of wai.video.int_hyper) +# refuses a stream, and its hyper decoders, context stages and synthesis (the graphs of +# integer-operators §13.6.2), against its direct networks, which compute on where the +# operator set refuses a value past its i32 checks; and WIV1 (wai.video.int_motion, the P-frames of wai.video.int_hyper) # and WIR1 (the four int_refine capabilities), which decode through the stage operators # alone and make no planned break. # diff --git a/wai/CHANGELOG.md b/wai/CHANGELOG.md index 46fe58132..eea93f6ef 100644 --- a/wai/CHANGELOG.md +++ b/wai/CHANGELOG.md @@ -6,6 +6,48 @@ wire format may change and such changes are recorded here. ## v0.4.0 — current +### `wai.image.jpegai`'s hyper decoders, context stages and synthesis through the integer operator set + +- **§13.6.2 is normative.** [integer-operators](extensions/integer-operators.md) §13.6.2 + writes the topology of the capability's other integer networks as four `WHG1` graphs, + lowered by `jpegai-int/1` from the bundle's eight weight files in §13.0's canonical + form: `rec_y` and `rec_uv` (each plane's hyper decoder, and for luma its four context + stages, from the hyper-latent and the dequantised residual to the reconstructed + latent) and `syn_y` and `syn_uv` (the synthesis). §1's claim widens to what these + networks give for their inputs. The independent checker (`tools/wai_ops_check.py`), + written from the text alone, reproduces every lowered graph and certificate byte for + byte. +- **Ranges.** Every activation an operator can grow, and every input but the + hyper-latent, is checked within i32 (`A32`), so every sum is bounded by the weights. + On the test codestream inputs stay within 21 bits, activations within 24, and the + largest sum is 37 bits against certified bounds of 42 to 60: `acc64` holds for every + sum, and no wider accumulator is needed (§13.6.2, *Accumulators, measured*). +- **Profiles.** The `ops` member is `{ wai-ops/1, acc64, full, jpegai-int/1, + role_profiles: { hs_y: acc32, hs_uv: acc32 } }`: the set meets `acc64`, and its scale + path still `acc32` (§11's new `role_profiles`; both certifiers take + `--role-profile`). The certificate of `jpegai/v1` (`3e243dc1…`) holds the six graphs. +- **The switch.** `jpegai_decode::{decode, decode_with_stages}` run the hyper decoders, + context stages and synthesis through the operator set (`jpegai_ops::Networks`, + `jpegai_decode::load_networks`); `decode_loaded` takes the scale path and the networks + loaded once, with the eICCI net. Every committed and pinned output is unchanged: the + `Synthesis` stage hash and every other stage hash of `tests/jpegai_cross_platform.rs`, + and the decoded RGB SHA-256 that `wai-jpegai-e2e.yml` pins. The direct networks run + only in `jpegai_decode::legacy`, test-only (`legacy_int`). The neural sink lowers and + loads the networks from the members' bytes through the store of loaded sets. +- **No loader panics.** `Weights::from_json`, `IntNet::from_json` and + `IcciNet::from_json` return a `Result` (`jpegai_synthesis::BadMember`); a mistyped + member is refused `model_mismatch` where it panicked, and the sink reports that + refusal rather than decoding through the float path. +- **Planned breaks** (integer-operators §15.3 item 4, SPEC §8): a weight file that + breaks §13.6.2's member rules or shapes, or networks whose certificate does not meet + `acc64` (`model_mismatch`); a dequantised residual, a latent or an activation of the + networks past i32 as a Q16 value (`field_range`), where the decoder computed on. No + committed bundle or codestream reaches either. +- **CI.** `tests/jpegai_nets_ops.rs` runs in both fast-kernel steps of + `wai-conformance.yml` on the committed synthetic networks, and in `wai-jpegai-e2e.yml` + on `jpegai/v1`, each pinned case required by name; the differential gains the + networks' half, per push and nightly. + ### wai-quantum 0.6.3: the wide stabilizer tableau, matrix product states at any angle, and fewer passes for the state vector, noisy shots and sparse Pauli sums Every pinned digest is unchanged, and the state vector and the sparse-Pauli engine give the @@ -170,6 +212,7 @@ same bits as before. [integer-operators](extensions/integer-operators.md) §13.5 alone, and register `{ wai-ops/1, stage: rans64 t4097/lenient/canonical }`: with no parameter set, the member has no profile, subset or lowering (§11; the registry schema now requires + `set`, those three together, and a lowering or a stage). - **The stage operators the drivers need.** `wai-ops`' E1 decodes a symbol against a table in whatever width a payload's parser keeps it (`Rans::symbol_in`, and `table_ok` reads its entries likewise), and E10, E11 and E12 gain per-element forms diff --git a/wai/SPEC.md b/wai/SPEC.md index 929b62ee0..92b76a734 100644 --- a/wai/SPEC.md +++ b/wai/SPEC.md @@ -697,7 +697,7 @@ registration and makes no conforming envelope non-conforming (§8). | `wai.neural.int_synth` | integer fixed-point synthesis (all-i64 transposed-conv, no float/ONNX) | bit-identical on every machine — soundly backs `intent = replicate` | payload and set: [integer-payloads](extensions/integer-payloads.md) §13; decoded through its lowering, [integer-operators](extensions/integer-operators.md) §13.1 (`int_synth/1`); `int_synth.rs` (integer weights sink-supplied; the reference tools make them by training in float, then quantising after training with per-layer shifts calibrated on measured activations, `tools/wai_int_synth_train.py`. Of the committed vectors only `photo` comes from a trained model, `tools/wai_int_synth_real.py`; `gradient`, `bloom`, `facade` and the cross-architecture golden use seeded integer weights) | | `wai.neural.int_hyper` | integer fixed-point **conditional** codec — whole bitstream→image path integer (integer hyper-decoder σ → integer-σ entropy → integer synthesis) | the integer-entropy contract fully assembled: a PTQ of mbt2018_mean, bit-identical on every machine, whose integer decode CI holds within 1 dB of the same model's float decode on a pinned photograph | payload `WIH1`; `int_hyper_synth.rs` (tables sink-supplied). Payload: [integer-payloads](extensions/integer-payloads.md) §4; its networks decoded through their lowering, [integer-operators](extensions/integer-operators.md) §13.2 (`whm1/1`) | | `wai.neural.int_mlicpp` | integer fixed-point **MLIC++ entropy topology** — `K` channel slices of the latent, each decoded as a checkerboard anchor pass then a non-anchor pass, with an entropy network over concat[latent decoded so far, hyper] re-run before every pass to give σ‖μ; hyper-decoder, entropy network and synthesis all integer | the channel-autoregressive × checkerboard entropy model at **decode-equivalence**: the encoder and every decoder compute the same σ, so the same distribution for every element, at any thread count; bit-identical on every machine. The committed conformance vector has synthetic weights, so it demonstrates decode-equivalence and states no quality figure | `int_mlicpp.rs` (one-file model bundle sink-supplied; `tools/wai_int_mlicpp_export.py`). Payload and bundle: [integer-payloads](extensions/integer-payloads.md) §14; its networks decoded through their lowering, [integer-operators](extensions/integer-operators.md) §13.4 (`wmb1/1`) | -| `wai.image.jpegai` | JPEG AI (ISO/IEC 6048-1:2025) codestream → RGB — integer entropy front end (mANS, with an integer scale-index derivation) + 16-bit-PTQ integer hyper-decoder, context-model and synthesis networks + dequantisation, latent refinement, post-filters (the eICCI CNN among them) and colour conversion in IEEE-754 float with a fixed evaluation order. Scope: one configuration — 256×256 4:4:4, `model_id` 0 (tools_0), `beta_displacement_log` 0, the high-operation-point synthesis, the eICCI model pair the weight bundle carries, and the other header conditions in [determinism-tiers](extensions/determinism-tiers.md) §5; both decode paths refuse any other codestream. Within it, a sink without the integer weight bundle, or in a non-default floating-point environment, takes a float ONNX decode instead; a refusal of the exact decode (`model_mismatch` or `stream_exhausted`, [integer-operators](extensions/integer-operators.md) §13.6.1) is reported, not replaced by the float decode. Only checkpoint constants are sink-supplied | **entropy-consistency** (registry class `NeuralEntropyExact`): the entropy decode, including the scale-index derivation, is integer on both decode paths, so the decoded symbols reproduce on every machine. The exact decoder also pins one reconstruction to RGB, reproducible across machines under the build and floating-point conditions in [determinism-tiers](extensions/determinism-tiers.md) §5–§6 (it checks the floating-point environment before decoding) — a property of that decoder, not of the capability, so `wai.image.jpegai` does not back `replicate` (§7). On one reference codestream the exact decoder stays within max\|Δ\| ≤ 2 of the reference decoder (recorded max\|Δ\| = 1 on ~4.4% of samples); evidence in [determinism-tiers](extensions/determinism-tiers.md) §6. **Downgraded in v0.4.0:** this row previously claimed decode-equivalence, and the registry classed the capability `StandardDefined` | `jpegai_decode.rs` (+ `jpegai_{bitstream,mans,pipeline,synthesis,icci}.rs`); its scale path and entropy decodes decoded through their lowering, [integer-operators](extensions/integer-operators.md) §13.6.1 (`jpegai-int/1`, `jpegai_ops.rs`) | +| `wai.image.jpegai` | JPEG AI (ISO/IEC 6048-1:2025) codestream → RGB — integer entropy front end (mANS, with an integer scale-index derivation) + 16-bit-PTQ integer hyper-decoder, context-model and synthesis networks + dequantisation, latent refinement, post-filters (the eICCI CNN among them) and colour conversion in IEEE-754 float with a fixed evaluation order. Scope: one configuration — 256×256 4:4:4, `model_id` 0 (tools_0), `beta_displacement_log` 0, the high-operation-point synthesis, the eICCI model pair the weight bundle carries, and the other header conditions in [determinism-tiers](extensions/determinism-tiers.md) §5; both decode paths refuse any other codestream. Within it, a sink without the integer weight bundle, or in a non-default floating-point environment, takes a float ONNX decode instead; a refusal of the exact decode (`model_mismatch` or `stream_exhausted`, [integer-operators](extensions/integer-operators.md) §13.6.1, or `field_range`, §13.6.2) is reported, not replaced by the float decode. Only checkpoint constants are sink-supplied | **entropy-consistency** (registry class `NeuralEntropyExact`): the entropy decode, including the scale-index derivation, is integer on both decode paths, so the decoded symbols reproduce on every machine. The exact decoder also pins one reconstruction to RGB, reproducible across machines under the build and floating-point conditions in [determinism-tiers](extensions/determinism-tiers.md) §5–§6 (it checks the floating-point environment before decoding) — a property of that decoder, not of the capability, so `wai.image.jpegai` does not back `replicate` (§7). On one reference codestream the exact decoder stays within max\|Δ\| ≤ 2 of the reference decoder (recorded max\|Δ\| = 1 on ~4.4% of samples); evidence in [determinism-tiers](extensions/determinism-tiers.md) §6. **Downgraded in v0.4.0:** this row previously claimed decode-equivalence, and the registry classed the capability `StandardDefined` | `jpegai_decode.rs` (+ `jpegai_{bitstream,mans,pipeline,synthesis,icci}.rs`); its integer stages decoded through their lowering `jpegai-int/1` ([integer-operators](extensions/integer-operators.md) §13.6, `jpegai_ops.rs`): the scale path and entropy decodes (§13.6.1), and the hyper decoders, context stages and synthesis (§13.6.2) | | `wai.generate.spectral` | deterministic integer GENERATIVE synthesis (`intent=create`) — prompt+seed → integer-LUT spectral composition, no float/ONNX | byte-identical on every machine, pinned to (model, prompt, seed, steps); the create-side of "conformance is a hash" (generation-equivalence). Payload: the instruction object of form v0, which names the model by its SHA-256 and lists every size a sink makes, each output checked by its SHA-256 (*Payload of `wai.generate.spectral`*, below) | `generate.rs` (small pinned model bundle) | | `wai.neural.elic` | checkerboard context model (hyperprior + 2-pass spatial context) | the checkerboard-context entropy class (arXiv 2203.10886) | `neural/context.rs` | | `wai.neural.mlicpp` | MLIC++ multi-reference entropy (channel-AR slices + checkerboard + global attention) | the multi-reference entropy model (arXiv 2307.15421) | research code, `neural/mlicpp.rs` | @@ -1616,11 +1616,15 @@ registry as `codecs::capability_replicate_class(cap) -> ReplicateClass`: [determinism-tiers](extensions/determinism-tiers.md) §5. This class is the neural rule applied to it, not a statement about its standard's conformance on the reconstruction, which this revision has not read; see *`wai.image.jpegai` - and the standard classes*, below.) The stages the class covers, its scale path - and its two entropy decodes, decode through the integer operator set, named in its - `ops` member ([integer-operators](extensions/integer-operators.md) §11, §13.6.1): - the lowering `jpegai-int/1` and the profile `acc32`, which every conforming - bundle's scale graphs meet; a bundle whose certificate does not is refused. + and the standard classes*, below.) Its integer stages decode through the integer + operator set, named in its `ops` member + ([integer-operators](extensions/integer-operators.md) §11, §13.6): the lowering + `jpegai-int/1`, the profile `acc64`, which every graph of a conforming bundle + meets, and the role profile `acc32` for the scale graphs `hs_y` and `hs_uv`, the + stages the class covers with its two entropy decodes; a bundle whose certificate + does not meet them is refused. Its hyper decoders, context stages and synthesis + (§13.6.2) are integer too, from inputs the float stages give, and lie outside + the class's claim. - **`GenerativeDeterministic`** — the *create*-side of byte-exact conformance. A generator (`intent = create`) whose entire pipeline is integer/fixed-point and pinned to `(model, prompt, seed, steps)`, so the **generated** content is @@ -2536,6 +2540,12 @@ envelope that uses any string a later revision registers. and a latent or hyper-latent substream that ends before the decode it carries, which panicked (`stream_exhausted`). A sink holding the integer weight bundle reports the exact decode's refusal rather than decoding through the float path. + Its exact decoder's hyper decoders, context stages and synthesis (§13.6.2): a + weight file that breaks §13.6.2's member rules, which the loaders panicked on, or + whose blocks do not have the shapes the topology names, or networks whose + certificate does not meet `acc64` (`model_mismatch`); and a dequantised residual, + a latent or an activation of those networks that leaves `i32` as a Q16 value, + where the decoder computed on (`field_range`). - `wai.video.int_motion`, the P-frames of `wai.video.int_hyper`, and the four `int_refine` capabilities: none. They decode through the stage operators alone (integer-operators §13.5), with the output and the refusal of the decoders they diff --git a/wai/extensions/determinism-tiers.md b/wai/extensions/determinism-tiers.md index 63c199666..f58496ae0 100644 --- a/wai/extensions/determinism-tiers.md +++ b/wai/extensions/determinism-tiers.md @@ -439,7 +439,12 @@ entropy decodes, run through the integer operator set, by the lowering `jpegai-i ([integer-operators](integer-operators.md) §13.6.1) at the profile `acc32`. Their refusals have codes: `model_mismatch` for a bundle that fails a load check of §13.6.1 or whose scale graphs do not meet `acc32`, and `stream_exhausted` for a latent or -hyper-latent substream that ends before the decode it carries. A sink that holds the +hyper-latent substream that ends before the decode it carries. The exact decoder runs +its hyper decoders, context stages and synthesis through the same operator set too, by +`jpegai-int/1` (§13.6.2) at the profile `acc64`: those graphs' outputs lie outside the +claim, and their refusals are `model_mismatch` for a weight file that fails §13.6.2's +load checks or networks that do not meet `acc64`, and `field_range` for a dequantised +residual, a latent or an activation that leaves i32. A sink that holds the integer weight bundle and refuses the exact decode reports that refusal, with its code; it does not then decode the codestream through the float path. Only a sink without the bundle, or a thread or target that cannot run the exact decoder's float stages, takes diff --git a/wai/extensions/integer-operators.md b/wai/extensions/integer-operators.md index a373c2a9f..50b18bbcc 100644 --- a/wai/extensions/integer-operators.md +++ b/wai/extensions/integer-operators.md @@ -12,9 +12,9 @@ > - the canonical lowerings of the existing integer network forms to `WHG1`; > - the conformance that an operator implementation, a parameter set, a sink and a certifier must each pass. > -> **What a reader can build from this text.** With the payload extensions it cites, an implementation of this text decodes `wai.video.int_motion`, `wai.audio.int_codec`, `wai.splat.int_codec`, `wai.neural.int_synth`, `wai.neural.int_hyper`, `wai.video.int_hyper`, `wai.neural.int_mlicpp` and `wai.{image,video,audio,splat}.int_refine`, and reproduces the symbols and scale indices that `wai.image.jpegai` entropy-decodes (§13.6.1). The payload text four of these depend on, `entropy.json`, the `int_synth` payload and the `WIM1` payload with its `WMB1` bundle, is in [integer-payloads](integer-payloads.md), and §15.2 says where. The integer renderer of `wai.world.model` and the other integer networks of `wai.image.jpegai` are informative (§13.5, §13.6.2). +> **What a reader can build from this text.** With the payload extensions it cites, an implementation of this text decodes `wai.video.int_motion`, `wai.audio.int_codec`, `wai.splat.int_codec`, `wai.neural.int_synth`, `wai.neural.int_hyper`, `wai.video.int_hyper`, `wai.neural.int_mlicpp` and `wai.{image,video,audio,splat}.int_refine`, and reproduces the integers of `wai.image.jpegai`'s integer stages: the symbols and scale indices it entropy-decodes, and what its integer networks give for their inputs (§13.6). The payload text four of these depend on, `entropy.json`, the `int_synth` payload and the `WIM1` payload with its `WMB1` bundle, is in [integer-payloads](integer-payloads.md), and §15.2 says where. The integer renderer of `wai.world.model` is informative (§13.5). > -> Reference implementation: the `wai-ops` crate (`wai/wai-ops`): parse, lowering, interpreter, stage operators and bounds. Tool: `wai-verify bounds`. Conformance: `wai/ops-conformance/`. A capability's reference decoder decodes through this operator set from the revision that registers the capability's `ops` member (§11); in this revision, `wai.neural.int_synth`, `wai.splat.int_codec`, `wai.audio.int_codec`, `wai.neural.int_hyper`, `wai.video.int_hyper` and `wai.neural.int_mlicpp`, and the scale path and entropy decodes of `wai.image.jpegai` (§13.6.1), on both of its reference decode paths; and, through their stage operators alone with no graph (§13.5), `wai.video.int_motion`, the P-frames of `wai.video.int_hyper`, and `wai.{image,video,audio,splat}.int_refine`. The integer renderer of `wai.world.model` renders through it too, by `world/1` (§13.5), and stays informative. Until then, a capability's reference implementation is the decoder its payload extension names, and §15.3 lists where this text and that decoder differ. +> Reference implementation: the `wai-ops` crate (`wai/wai-ops`): parse, lowering, interpreter, stage operators and bounds. Tool: `wai-verify bounds`. Conformance: `wai/ops-conformance/`. A capability's reference decoder decodes through this operator set from the revision that registers the capability's `ops` member (§11); in this revision, `wai.neural.int_synth`, `wai.splat.int_codec`, `wai.audio.int_codec`, `wai.neural.int_hyper`, `wai.video.int_hyper` and `wai.neural.int_mlicpp`, and the integer stages of `wai.image.jpegai` (§13.6): its scale path and entropy decodes on both of its reference decode paths, and its integer networks on its exact decoder; and, through their stage operators alone with no graph (§13.5), `wai.video.int_motion`, the P-frames of `wai.video.int_hyper`, and `wai.{image,video,audio,splat}.int_refine`. The integer renderer of `wai.world.model` renders through it too, by `world/1` (§13.5), and stays informative. Until then, a capability's reference implementation is the decoder its payload extension names, and §15.3 lists where this text and that decoder differ. > > The keywords **MUST**, **MUST NOT**, **SHOULD** and **MAY** are as defined in RFC 2119 and RFC 8174. @@ -198,8 +198,10 @@ An implementation forms each of these in a width that holds its certified interv - no multiplier, one shift per channel, `pre` bias, `floor`: the three convolutions of the `wai.image.jpegai` scale path; - no multiplier, shift 0, `pre` bias: the per-channel gain of that scale path; - one multiplier per channel, one shift, `post` bias, `floor`: the convolutions of `WHM1` and `WAM1`; -- one multiplier, one shift, `post` bias, `floor`: the convolutions of the `wai.image.jpegai` PTQ networks; +- one multiplier, one shift, `post` bias, `floor`: the convolutions of the `wai.image.jpegai` integer networks; - no multiplier, shift 16, no bias, `floor`: their Q16 products; +- no multiplier, shift 0, a `post` bias of `2^16`: their gates' `f + 1`; +- one multiplier `2^16`, shift 0, no bias: their hyper decoders' input; - one multiplier, one shift, no bias, `half_up`: the RGB8 output step (multiplier 255) and the PCM output step (multiplier 32767); - no multiplier, shift 16, no bias, `half_up`: `gram` and `apply` in channel attention; - one multiplier per channel, shift 16, no bias, `half_up`: the attention temperature; @@ -1143,6 +1145,7 @@ The graph's identity is the SHA-256 of its bytes. - `subset` is `full` or `npu`. A capability registered `npu` refuses a set that is not in the subset (§9.2). - `lowering` names the §13 lowering, or `whg1` when the set carries graphs. - `stage` fixes the modes of the stage operators the driver uses (§5E). +- `role_profiles`, OPTIONAL, names roles of the lowering (§13.0) whose graphs every conforming set holds to a stronger profile than `profile`, each with that profile. A graph meets a profile when its inputs' and scalars' declared ranges meet the profile's `tensor` width and every node of the graph fits the profile (§8.5). A set with a named graph that does not is refused (`model_mismatch`). In this revision `wai.image.jpegai` declares `profile` `acc64` and `role_profiles` `{ "hs_y": "acc32", "hs_uv": "acc32" }`: its scale path runs on a 32-bit fabric as on a 64-bit one, and its other integer networks meet `acc64` (§13.6.2). - A capability whose decode runs no graph, only stage operators (§13.5), has no parameter set, so its member carries `set` and `stage` and no `profile`, `subset` or `lowering`. In this revision, `wai.video.int_motion` and `wai.{image,video,audio,splat}.int_refine`: ```json @@ -1193,7 +1196,7 @@ A lowering writes exactly one byte sequence for a set. These rules fix it, and |---|---|---|---|---| | `int_synth.json` | 4 | — | 4 | — | | `WHM1`, `WAM1` | 2 | 8 | 8 | 4 | -| a `wai.image.jpegai` bundle (JSON) | smallest | — | smallest | — | +| a `wai.image.jpegai` bundle (JSON) | smallest | smallest | smallest | smallest | **Roles and order.** A lowered set's graphs, by role, in this order: @@ -1205,7 +1208,7 @@ A lowering writes exactly one byte sequence for a set. These rules fix it, and | `wai.splat.int_codec` | `whm1/1` | `g_s` | the RGB8 step | | `wai.neural.int_mlicpp` | `wmb1/1` | `h_s`, `entropy`, `g_s` | in `g_s`, the RGB8 step | | `wai.world.model` (informative) | `world/1` | `T`, `g_s` | in `g_s`, the RGB8 step | -| `wai.image.jpegai` | `jpegai-int/1` | `hs_y`, `hs_uv` | the per-channel gain | +| `wai.image.jpegai` | `jpegai-int/1` | `hs_y`, `hs_uv`, `rec_y`, `rec_uv`, `syn_y`, `syn_uv` | in `hs_*`, the per-channel gain; in `syn_*`, the denormalisation (§13.6.2) | The **RGB8 step** is two operators after the network's last: `clamp(0, 2^afrac)`, then `rescale` with one multiplier 255 (`m_bytes` 4), one shift `afrac`, no bias and `half_up`. Everything else a driver does with an output, such as splitting `h_s`'s output into `σ` and `μ`, or laying values out as bytes, is a driver step and not an operator. @@ -1217,6 +1220,8 @@ The **RGB8 step** is two operators after the network's last: `clamp(0, 2^afrac)` | a `whm1/1` or `wam1/1` graph | `x_0`, the network's input, with the policy and range of §13.2 | 0, 0 | `wam1/1` only: scalar 0, `t_out`, `[1, 2^26]` | | `T` (`world/1`) | `z`, `check [−2^63, 2^63 − 1]` | 0, 0 | scalars `0 … A − 1`, the plane values, each `[−2^63, 2^63 − 1]` | | `hs_y`, `hs_uv` | `z [Cz, 4, 4]`, `check [−31, 32]` | 4, 4 | none | +| `rec_y`, `rec_uv` | `z [C, 4, 4]`, `check [−31, 32]`; input 1, the residual `[C, 16, 16]`, `check [−2^31, 2^31 − 1]` | 4, 4; 16, 16 | none | +| `syn_y`, `syn_uv` | the luma latent `[160, 16, 16]`; for `syn_uv`, input 1, the chroma latent `[96, 16, 16]`; each `check [−2^31, 2^31 − 1]` | 16, 16 | none | Sizes of 0 mean that the input's size is set per decode (§10.2). A driver plans these graphs on the payload's sizes, at the point its payload extension plans its networks (§4). @@ -1332,7 +1337,7 @@ Each capability's driver is defined by its payload extension. This table names t ### 13.6 The integer stages of `wai.image.jpegai` (`jpegai-int/1`) -The capability is `NeuralEntropyExact` (§12). §13.6.1 is its scale path and its two entropy decodes: normative, and complete from this text, the codestream syntax of ISO/IEC 6048-1, and the bundle members it names. §13.6.2 maps its other integer networks, and is informative. +The capability is `NeuralEntropyExact` (§12). §13.6.1 is its scale path and its two entropy decodes, and §13.6.2 its other integer networks. Both are normative, and complete from this text, the codestream syntax of ISO/IEC 6048-1, and the bundle members they name. #### 13.6.1 The scale path and the entropy decodes @@ -1395,27 +1400,101 @@ The output is `v = I_s + g[c]`, `[Cz, 16, 16]`. **What this subsection fixes.** `z`, `v`, the mask, `likely`, `σ_idx` and `y_q` are integers on every fabric. They are what the capability's `entropy-consistency` claim covers (§12). -#### 13.6.2 The other integer networks (informative) +#### 13.6.2 The hyper decoder, the context stages and the synthesis -The hyper decoder, the four context stages and the synthesis are integer as well. Their topology is not written out here, so this subsection maps each integer step to `wai-ops/1` and does no more. +The capability's other integer networks are each plane's hyper decoder, the luma plane's four context stages and each plane's synthesis. Their weights are integers and their values are Q16: an integer `q` stands for `q / 2^16`. `jpegai-int/1` lowers them to four graphs: +- `rec_y` and `rec_uv`: a plane's hyper decoder, and for luma its four context stages, from the plane's hyper-latent `z` and its dequantised residual to its reconstructed latent `ŷ`; +- `syn_y` and `syn_uv`: the synthesis, from the planes' latents to the planes. -| integer step | `wai-ops/1` | +**The members.** The graphs read the bundle's `weights/hyp_y.json` and `weights/hyp_uv.json` (the hyper decoders), `weights/mcm0_y.json` to `weights/mcm3_y.json` (the context stages 0 to 3), and `weights/synth_y.json` and `weights/synth_uv.json` (the synthesis). Each is a JSON object. A member whose value is an object with a `kind` of `"conv"` or `"q16"` is read, and every other member is ignored. +- Kind `"conv"`: `dims`, an array of non-negative integers; `w`, an array of as many integers as the product of `dims`, each fitting i64, row-major over `dims`; `mult`, an integer that fits i64; and `shift`, an integer in `0..=127`. +- Kind `"q16"`: `v`, an array of integers that fit i64. Its other members, `dims` among them, are not read. + +A file in which any object, at any depth, has two members of one name, or in which a member of either kind lacks one of these or holds another value, is refused (`model_mismatch`). A member of neither kind is ignored, a bias among them: a module whose `m.bias` is of neither kind has no bias. + +A **module** `m` names its members. Its weights are `m.weight`, of kind `conv`. Its bias is `m.bias`, of kind `q16`, and a module MAY have none. A layer normalisation's `m.weight` and `m.bias` are both of kind `q16`. A member that the graphs below read, and that the file lacks or holds as the other kind, is refused (`model_mismatch`). The member names are the bundle's, and mean nothing here. + +**Blocks.** Each block reads a tensor `x` of `c` channels and appends operators, in the order given. `A32` is the policy `check [−2^31, 2^31 − 1]`. + +| block | operators | |---|---| -| the hyper decoder's input | `z·2^16`: `rescale` with one multiplier `2^16` and shift 0 | -| a convolution (grouped or depthwise) | `conv`; `RQ`: one multiplier (the convolution's own `mult`), one shift (its own `shift`, except as below), a `post` bias (its Q16 bias, or 0), `floor` | -| a transposed convolution | `conv_transpose`, with the same `RQ` | -| the shift inside a TAB | the attention half's three convolutions (`prep_data.conv1`, `prep_data.conv2`, `attn.project_out`) all use `prep_data.conv1`'s shift; the feed-forward half's three (`ffn.project_in`, `ffn.dwconv`, `ffn.project_out`) all use `ffn.project_in`'s. Each keeps its own multiplier | -| ReLU6, clip | `clamp(0, 6·2^16)`, `clamp` | -| a residual or mean addition | `add` | -| a Q16 product | `mul`; `RQ`: no multiplier, shift 16, `floor` | -| a gate `x·(f + 1)` in Q16 | `rescale` (a `post` bias of `2^16`), then `mul` | -| sigmoid, ELU, softmax | `sigmoid`, `elu(2^16)`, `softmax` | -| channel layer normalisation | `layernorm_c(ε = 42949)` | -| channel attention | `l2norm(42949)` on `q` and on `k`; `gram(heads, 16, half_up)`; `rescale` with one multiplier per channel (the head's temperature), shift 16 and `half_up`; `softmax`; `apply(heads, 16, half_up)` | -| channel slices; concatenation; the 2×2 sub-lattices, in the order `(0,0), (1,1), (0,1), (1,0)`; depth-to-space | `split`; `concat`; `subpos_split` and `subpos_merge`; `pixel_shuffle` | -| denormalisation | `rescale` with one multiplier 128, shift 0 and a `post` bias of `127·2^16 + 2^15`, with the policy `clamp [0, 255·2^16]`; for a byte, then `rescale` with shift 16 and `half_up` | +| `C(m; k, s, p, g)` | `conv` from `m.weight`, whose `dims` MUST be `[cout, c/g, k, k]` with `c` and `cout` multiples of `g`: `kh = kw = k`, `sh = sw = s`, `ph = pw = p`, `groups = g`. `g = dw` means `groups = c`, and then `cout = c`. Its `RQ`: `floor`; one multiplier, `mult`; one shift, `shift` (in a `TAB`, as below); a `post` bias of `cout` values from `m.bias`, or none when the file has no `m.bias`. The output is `A32`. | +| `T(m; k, op)` | `conv_transpose` from `m.weight`, whose `dims` MUST be `[c, cout, k, k]`: `kh = kw = k`, stride 2, padding 1, output padding `op`, with `C`'s `RQ`. The output is `A32`. | +| `relu6` | `clamp(0, 6·2^16)` | +| `R(m)` | `C(m.conv1; 3, 1, 1, 1)`, `relu`, `C(m.conv2; 3, 1, 1, 1)`, then `add(x, ·)`, `A32` | +| `G(m)` | `relu6`, `C(m.conv; 3, 1, 1, 4)`, `C(m.conv2; 1, 1, 0, 1)`, then `rescale` with no multiplier, shift 0, `floor` and a `post` bias of `2^16` on every channel, `A32`, then `mul(x, ·)`, `A32`: the gate `x·(f(x) + 1)` | +| `CAB` | on `x`: `R(CAB.residual_trunk.0)`, `R(CAB.residual_trunk.1)`, giving `t`; on `x` again: `C(CAB.subscale; 3, 2, 1, 1)`, `R(CAB.residual_mask2.0)`, `R(CAB.residual_mask3.0)`, `T(CAB.upscale; 3, 1)`, `sigmoid`, giving `s`; then `mul(t, s)`, `A32`, and `add(x, ·)`, `A32` | +| `D` | the denormalisation: `rescale` with one multiplier 128, shift 0, `floor` and a `post` bias of `127·2^16 + 2^15` on every channel, with the policy `clamp [0, 255·2^16]` | -Every other convolution uses its own shift. Today's bundle happens to give every convolution shift 31; the rule above is the decoder's for any bundle. These graphs' inputs come from floating-point stages, so once their topology is written, they have the policy `check`, with their admissible ranges for `acc64` (§8.4). +`mul` here is a Q16 product: no multiplier, shift 16, no bias, `floor`. The two inputs of each `mul` and each `add` have one channel count. A constant this lowering writes takes the smallest allowed width that holds it (§13.0). + +**`TAB(m)`** reads `x` of `c` channels, `c` a multiple of 4, and `d = c/4`. Its attention half's convolutions take the shift of `m.prep_data.conv1.weight`, and its feed-forward half's that of `m.ffn.project_in.weight`. Each keeps its own multiplier. In order: +1. `layernorm_c` with `ε = 42949`, `γ` the `c` values of `m.prep_data.norm1.weight` and `β` those of `m.prep_data.norm1.bias`, `A32`; +2. `C(m.prep_data.conv1; 1, 1, 0, 1)`, whose `cout` MUST be `3c`, then `C(m.prep_data.conv2; 3, 1, 1, dw)`; +3. `split` at `0`, `c` and `2c`, each of `c` channels: `q`, `k` and `v`; +4. `l2norm` with `ε = 42949` on `q`, then on `k`; +5. `gram` of the two, with `groups` 4, shift 16 and `half_up`, `A32`; +6. `rescale` with one multiplier per channel, channel `i`'s the value at `⌊i/d⌋` of the 4 values of `m.attn.temperature`, shift 16, `half_up` and no bias, `A32`; +7. `softmax`, then `apply` of it to `v`, with `groups` 4, shift 16 and `half_up`, `A32`; +8. `C(m.attn.project_out; 1, 1, 0, 1)`, then `add(x, ·)`, `A32`, giving `x′`; +9. `layernorm_c` with `ε = 42949` from `m.ffn.norm1` on `x′`, `A32`; +10. `C(m.ffn.project_in; 1, 1, 0, 1)`, whose `cout` `2h` MUST be even, then `C(m.ffn.dwconv; 3, 1, 1, dw)`; +11. `split` at `0` and `h`, each of `h` channels: `a` and `b`; +12. `elu` with `α = 2^16` on `a`, then `mul(·, b)`, `A32`; +13. `C(m.ffn.project_out; 1, 1, 0, 1)`, then `add(x′, ·)`, `A32`. + +Every other convolution takes its own shift. Today's bundle happens to give every convolution shift 31; the rule is the decoder's for any bundle. + +**The graphs.** Each graph's inputs are listed in input-table order, each with the sizes it declares. The sub-lattice order is `(0,0), (1,1), (0,1), (1,0)`. + +- **`rec_y`** (`C = 160`, from `hyp_y.json` and `mcm0_y.json` to `mcm3_y.json`) and **`rec_uv`** (`C = 96`, from `hyp_uv.json`). Input 0 is `z [C, 4, 4]`, `check [−31, 32]`, sizes 4 × 4: the hyper-latent of §13.6.1 step 1. Input 1 is the dequantised residual `r [C, 16, 16]`, `A32`, sizes 16 × 16. The hyper decoder comes first: + 1. `rescale` of `z` with one multiplier `2^16`, shift 0, no bias and `floor`, its output `derived`; + 2. `C(conv1; 1, 1, 0, 1)`, `T(conv2; 4, 0)`, `relu6`, `C(conv3; 3, 1, 1, 1)`, `relu6`, `C(conv4; 3, 1, 1, 1)`, whose `cout` MUST be `4C`. Its output is `ψ`. + + Then, for `rec_uv`: `split(ψ, iC, C)` for `i = 0 … 3`; `subpos_merge` of the four in the sub-lattice order; and `add(r, ·)`, `A32`, which is the graph's output `ŷ`. + + For `rec_y`: `subpos_split(r)` in the sub-lattice order, giving `r_0 … r_3`. Then, for each context stage `i = 0 … 3`, from `mcm{i}_y.json`: + 1. `split(ψ, iC, C)`, giving `p_i`; + 2. for `i = 0`, `f = p_i`. For `i ≥ 1`, with the context `y_0` for `i = 1` and `concat(y_0, …, y_{i−1})` otherwise: `C(conv.0; 1, 1, 0, 1)`, then `C(conv.1; 3, 1, 1, 5)`, then `concat(·, p_i)`, giving `f`; + 3. on `f`: `C(fusion_pred_net.conv1; 1, 1, 0, 1)`, `relu`, `C(fusion_pred_net.conv2; 1, 1, 0, 1)`, `relu`, `C(fusion_pred_net.conv3; 1, 1, 0, 1)`, whose `cout` MUST be `C`, giving `μ_i`; + 4. `add(r_i, μ_i)`, `A32`, giving `y_i`. + + Last, `subpos_merge(y_0, y_1, y_2, y_3)` in the sub-lattice order, which is the graph's output `ŷ`. +- **`syn_y`**, from `synth_y.json`. Input 0 is the luma latent `[160, 16, 16]`, `A32`, sizes 16 × 16. Then: `R(first_stage.0.0)`, `T(first_stage.1; 3, 1)`, `G(first_stage.2)`, `T(conv2_t; 3, 1)`, `CAB`, `G(iact2)`, `C(conv3_t; 1, 1, 0, 1)`, `pixel_shuffle(2)`, `C(TAM.ds_conv; 3, 2, 1, 1)`, `TAB(TAM.TABs.0)`, `TAB(TAM.TABs.1)`, `T(TAM.us_conv; 3, 1)`, `G(iact3)`, `T(conv4_t; 3, 1)`, whose `cout` MUST be 1, and `D`. The output is the luma plane `[1, 256, 256]`. +- **`syn_uv`**, from `synth_uv.json`. Input 0 is the luma latent `[160, 16, 16]` and input 1 the chroma latent `[96, 16, 16]`, each `A32`, sizes 16 × 16. Then: `concat` of inputs 0 and 1; `C(first_stage.conv1; 3, 1, 1, 1)`; `concat` of that and input 1; `T(conv2_t; 3, 1)`, `CAB`, `G(iact2)`, `C(conv3_t; 1, 1, 0, 1)`, `pixel_shuffle(2)`, `TAB(TAM.TABs.0)`, `TAB(TAM.TABs.1)`, `G(iact3)`, `T(conv4_t; 3, 1)`, whose `cout` MUST be 8, `pixel_shuffle(2)`, and `D`. The output is the chroma planes `[2, 256, 256]`, U then V. + +The input of each `pixel_shuffle(2)` has a multiple of 4 channels. Every tensor that no block above gives `A32` or `clamp` is `derived`: the outputs of `clamp`, `relu`, `sigmoid`, `softmax`, `l2norm`, `elu` and the movement operators, and the hyper decoder's scaled input. Each of those lies within the hull of its inputs' intervals and `[−2^16, 2^16]`, and the scaled input within `[−31·2^16, 32·2^16]`. + +**Range checks.** These graphs check every activation that an operator can grow, at `A32`, and so every sum they form is bounded by the weights alone. Their inputs come from floating-point stages, so these checks refuse what the direct decoder computed on: +- a dequantised residual or a latent whose Q16 value leaves i32 (input 1 of `rec_*`, the inputs of `syn_*`); +- an activation that leaves i32: the output of a convolution, a transposed convolution, an addition, a Q16 product, a layer normalisation, an attention contraction, the attention scale or a gate's `f + 1`. + +Each is `field_range` (§4). + +**Load checks.** In addition to §13.6.1's, a bundle is refused (`model_mismatch`) when a file breaks the member rules above; when a block's `dims` or value counts are not those it names, or a channel count is not a multiple it names; when a graph does not plan (§10.5 step 7); or when the certificate does not meet `acc64`. + +**Driver.** For each plane, after §13.6.1's steps: +1. The floating-point stages dequantise `y_q` into the residual. The driver converts each residual value `x` to the integer nearest `x·2^16`, a tie rounding away from zero, and runs `rec_*` on `z` and that residual. It gives `ŷ`. +2. The floating-point stages read `ŷ` as `ŷ / 2^16`, refine it into the plane's latent, and the driver converts the latent to Q16 as in step 1. + +Then `syn_y` runs on the luma latent, and `syn_uv` on both latents. The post-filters read each output value `v` as `v / 2^16`. + +**Refusals.** A bundle that fails a load check: `model_mismatch`. A decode whose input or activation leaves its range: `field_range`. [determinism-tiers](determinism-tiers.md) says how the capability reports them. A refused exact decode MUST NOT fall back silently. + +**Profiles.** `layernorm_c`, `l2norm`, `softmax`, `sigmoid` and `elu` form values above i32 whatever their inputs (§7.3), so these four graphs meet `acc64` at best. The capability's `ops` member declares `acc64` for the set, and `acc32` for the scale path's graphs `hs_y` and `hs_uv` (§11). + +**What this subsection fixes.** Given the same `z` and residual, `ŷ` is the same integers on every fabric whose implementation conforms to `acc64`. Given the same latents, so are the synthesis planes. The inputs come from floating-point stages, so the capability's claim stays `entropy-consistency` (§12): these graphs MAY run on an implementation that does not conform, and their output is then outside the claim. + +**Accumulators, measured (informative).** No sum of these graphs needs more than 64 bits. On the reference codestream of `jpegai/v1` (`tests/jpegai_nets_ops.rs`), every value each operator forms lies within its certified interval, and the largest magnitudes reached are: + +| graph | `conv.acc` | `convT.acc` | `mul.p` | `gram.acc` | `apply.acc` | an input | an activation | +|---|---|---|---|---|---|---|---| +| `rec_y` | 36 (53) | 33 (48) | — | — | — | 19 | 21 | +| `rec_uv` | 33 (42) | 32 (46) | — | — | — | 17 | 21 | +| `syn_y` | 36 (55) | 35 (54) | 35 (60) | 32 (46) | 30 (49) | 21 | 24 | +| `syn_uv` | 37 (55) | 36 (52) | 37 (58) | 32 (46) | 33 (49) | 21 | 24 | + +Each cell is `bits` (§2) of the largest magnitude reached under that key in that graph, with the certificate's `bits` for the key in brackets. The activations include the denormalised planes, which lie in `[0, 255·2^16]`. The certified bounds come from `A32` and the bundle's weights. No measured sum and no certified one reaches `2^63`, so `acc64` holds for every sum of these graphs, and no wider accumulator is needed. The `product` intermediates, which `acc64` forms in 128 bits (§7.1), reach 53 bits (`rq.p`). ## 14. Conformance @@ -1539,7 +1618,7 @@ These land with each capability's lowering, capability by capability: - **SPEC §3.1:** the OPTIONAL pin member `ops_profile` (§11). - **SPEC §5:** the rows of `wai.neural.int_synth` and `wai.neural.int_mlicpp` cite integer-payloads §13 and §14, and §13.1 and §13.4. - **SPEC §7:** a `NeuralIntegerExact` capability names its `ops` member. -- **determinism-tiers:** §5 cites §12; the execution fields carry the profile; `wai.image.jpegai`'s exact decoder reports `model_mismatch` and `stream_exhausted` (§13.6.1) and does not fall back silently. +- **determinism-tiers:** §5 cites §12; the execution fields carry the profile; `wai.image.jpegai`'s exact decoder reports `model_mismatch` and `stream_exhausted` (§13.6.1) and `field_range` (§13.6.2), and does not fall back silently. - **staged-delivery A.4:** cites E9, E11 and E12. - **`registry/capabilities.json`:** the `ops` members. @@ -1566,6 +1645,7 @@ No committed output changes, and no committed refusal fixture changes its code. 4. **`wai.image.jpegai`.** These take effect for its exact decoder and for the reference sink's float decode path, which decode the scale path and the entropy through the same lowering. - Its exact decoder refuses a malformed latent or hyper-latent stream (`stream_exhausted`) where it panicked. - It refuses a bundle that fails §13.6.1's load checks (`model_mismatch`), including a bound above 255 or a shift outside `0..=127`, which its loader wrapped; and a bundle whose scale graphs do not meet `acc32`, the profile its `ops` member declares (§11): a sum past `i32`, or a shift past 63, which it computed in `i64` or shifted as its build did. - - The codestream's scope is checked first, then the bundle, then the streams. A refusal of the exact decode is its result: a sink that holds the bundle does not then decode the capability through the float path ([determinism-tiers](determinism-tiers.md) §5). + - The codestream's scope is checked first, then the bundle (its scale path, then its other networks), then the streams, then the networks' ranges as each runs. A refusal of the exact decode is its result: a sink that holds the bundle does not then decode the capability through the float path ([determinism-tiers](determinism-tiers.md) §5). - Its residual-variance bands start at `likely` 1004, 1353 and 1938 (§13.6.1 step 3), where the reference decoder's own tables change value. An earlier revision of this text and of the exact decoder started them one lower, so a block whose `likely` was exactly 1003, 1352 or 1937 took the next band's addition and dequantisation multiplier, where the reference decoder and the reference sink's float decode path, which reads the reference decoder's tables, did not. No committed codestream has such a block. + - Its exact decoder runs its hyper decoders, context stages and synthesis through `rec_y`, `rec_uv`, `syn_y` and `syn_uv` (§13.6.2). It refuses a bundle whose weight files break §13.6.2's member rules, whose blocks do not have the shapes the topology names, or whose certificate does not meet `acc64` (`model_mismatch`), where its loaders panicked on a mistyped member or it computed with what the files held. It refuses a decode in which a dequantised residual, a latent or an activation of these networks leaves i32 as a Q16 value (`field_range`), where it computed on in 64 or 128 bits, or wrapped or panicked past them. No committed bundle or codestream reaches either: on the reference codestream every input and activation lies within i32 (§13.6.2, *Accumulators, measured*). 5. **`WIV1` and `WIR1`.** None. Their decodes through the stage operators (§13.5) give the output and the refusal their direct decoders gave, on every input: the operators are the arithmetic integer-payloads §3 and staged-delivery Appendix A already defined, and the refusals keep their codes and their order. diff --git a/wai/ops-conformance/certificates/external.json b/wai/ops-conformance/certificates/external.json index 9eaa134da..33f6570be 100644 --- a/wai/ops-conformance/certificates/external.json +++ b/wai/ops-conformance/certificates/external.json @@ -1 +1 @@ -{"format":"wai-ops-external/1","sets":[{"capability":"wai.neural.int_hyper","lowering":"whm1/1","members":{"entropy.json":"cond_entropy.json","g_s.whm":"int_synth_sota_model.bin","h_s.whm":"int_hs_model.bin"},"name":"sota","note":"regenerated from pinned inputs by the job that certifies it; not committed","profile":"acc64","set_sha256":"f16fd09cd79b831d7d821e030c05e99e9fb5ea216574e699944ea4e55ac0a404","workflow":".github/workflows/wai-sota-vectors.yml"},{"capability":"wai.image.jpegai","lowering":"jpegai-int/1","members":{"norm.json":"norm.json","weights/hs_uv.json":"hs_uv.json","weights/hs_y.json":"hs_y.json","weights/hyp_uv.json":"hyp_uv.json","weights/hyp_y.json":"hyp_y.json","weights/icci.json":"icci.json","weights/mcm0_y.json":"mcm0_y.json","weights/mcm1_y.json":"mcm1_y.json","weights/mcm2_y.json":"mcm2_y.json","weights/mcm3_y.json":"mcm3_y.json","weights/synth_uv.json":"synth_uv.json","weights/synth_y.json":"synth_y.json"},"name":"jpegai/v1","note":"the models root's jpegai/v1, the files tools/jpegai-e2e-v1.sha256 pins; not committed","profile":"acc32","set_sha256":"3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37","workflow":".github/workflows/wai-jpegai-e2e.yml"}]} +{"format":"wai-ops-external/1","sets":[{"capability":"wai.neural.int_hyper","lowering":"whm1/1","members":{"entropy.json":"cond_entropy.json","g_s.whm":"int_synth_sota_model.bin","h_s.whm":"int_hs_model.bin"},"name":"sota","note":"regenerated from pinned inputs by the job that certifies it; not committed","profile":"acc64","set_sha256":"f16fd09cd79b831d7d821e030c05e99e9fb5ea216574e699944ea4e55ac0a404","workflow":".github/workflows/wai-sota-vectors.yml"},{"capability":"wai.image.jpegai","lowering":"jpegai-int/1","members":{"norm.json":"norm.json","weights/hs_uv.json":"hs_uv.json","weights/hs_y.json":"hs_y.json","weights/hyp_uv.json":"hyp_uv.json","weights/hyp_y.json":"hyp_y.json","weights/icci.json":"icci.json","weights/mcm0_y.json":"mcm0_y.json","weights/mcm1_y.json":"mcm1_y.json","weights/mcm2_y.json":"mcm2_y.json","weights/mcm3_y.json":"mcm3_y.json","weights/synth_uv.json":"synth_uv.json","weights/synth_y.json":"synth_y.json"},"name":"jpegai/v1","note":"the models root's jpegai/v1, the files tools/jpegai-e2e-v1.sha256 pins; not committed","profile":"acc64","role_profiles":{"hs_uv":"acc32","hs_y":"acc32"},"set_sha256":"3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37","workflow":".github/workflows/wai-jpegai-e2e.yml"}]} diff --git a/wai/ops-conformance/certificates/index.json b/wai/ops-conformance/certificates/index.json index 33515420d..c8d18beda 100644 --- a/wai/ops-conformance/certificates/index.json +++ b/wai/ops-conformance/certificates/index.json @@ -1 +1 @@ -{"format":"wai-ops-lowered/1","sets":[{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/gradient/int_synth.json"},"name":"gradient","note":"neural-conformance, generated","roles":["ops-conformance/certificates/wai.neural.int_synth/1c4705d17c01f865b20d785191c7f63b5c18dcc8fce77e15852cf8240b7368be/synth.whg1"],"set_sha256":"1c4705d17c01f865b20d785191c7f63b5c18dcc8fce77e15852cf8240b7368be","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/bloom/int_synth.json"},"name":"bloom","note":"neural-conformance, generated","roles":["ops-conformance/certificates/wai.neural.int_synth/21f092964e1319eca7e494ba3f6794e3166886d50e9dd74d00935c5b317055a9/synth.whg1"],"set_sha256":"21f092964e1319eca7e494ba3f6794e3166886d50e9dd74d00935c5b317055a9","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/facade/int_synth.json"},"name":"facade","note":"neural-conformance, generated","roles":["ops-conformance/certificates/wai.neural.int_synth/c6a362696d61605931ef4da98ae630362dcd73ea6be7864db6e61d6c5abbcd24/synth.whg1"],"set_sha256":"c6a362696d61605931ef4da98ae630362dcd73ea6be7864db6e61d6c5abbcd24","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/photo/int_synth.json"},"name":"photo","note":"neural-conformance; its decoder was trained on images the corpus does not record (see that corpus's provenance)","roles":["ops-conformance/certificates/wai.neural.int_synth/50868e72f5f1599569c413ed1f67ab8610fa0b3c17919162cbf370f49275125c/synth.whg1"],"set_sha256":"50868e72f5f1599569c413ed1f67ab8610fa0b3c17919162cbf370f49275125c","synthetic":false},{"capability":"wai.neural.int_hyper","lowering":"whm1/1","members":{"entropy.json":"wai-rs/tests/vectors/int_hyper/tiny_entropy.json","g_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_g_s.bin","h_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_h_s.bin"},"name":"tiny","note":"int-payload-conformance `tiny`","roles":["ops-conformance/certificates/wai.neural.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/h_s.whg1","ops-conformance/certificates/wai.neural.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/g_s.whg1"],"set_sha256":"13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818","synthetic":false},{"capability":"wai.video.int_hyper","lowering":"whm1/1","members":{"entropy.json":"wai-rs/tests/vectors/int_hyper/tiny_entropy.json","g_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_g_s.bin","h_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_h_s.bin"},"name":"tiny","note":"int-payload-conformance `video_nk`, whose keyframe decodes against `tiny`","roles":["ops-conformance/certificates/wai.video.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/h_s.whg1","ops-conformance/certificates/wai.video.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/g_s.whg1"],"set_sha256":"13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818","synthetic":false},{"capability":"wai.audio.int_codec","lowering":"wam1/1","members":{"model.wam":"wai-rs/tests/vectors/int_audio/audio_model.bin"},"name":"audio","note":"int-payload-conformance `audio`","roles":["ops-conformance/certificates/wai.audio.int_codec/132958122b251869ad6725d24a2bb96e2733daaf3e09ef65ebc7af6f46030855/g_s.whg1"],"set_sha256":"132958122b251869ad6725d24a2bb96e2733daaf3e09ef65ebc7af6f46030855","synthetic":false},{"capability":"wai.splat.int_codec","lowering":"whm1/1","members":{"g_s.whm":"wai-rs/tests/vectors/int_splat/splat_gs.bin"},"name":"splat","note":"int-payload-conformance `splat`","roles":["ops-conformance/certificates/wai.splat.int_codec/033a37c9d29d7ea9675a0b4a3e269d74f2ab874b5a3b1425eec69bf3bad8b26f/g_s.whg1"],"set_sha256":"033a37c9d29d7ea9675a0b4a3e269d74f2ab874b5a3b1425eec69bf3bad8b26f","synthetic":false},{"capability":"wai.neural.int_mlicpp","lowering":"wmb1/1","members":{"model.wmb":"wai-rs/tests/vectors/int_mlicpp/model.wmb"},"name":"int_mlicpp","note":"wai-rs/tests/vectors/int_mlicpp","roles":["ops-conformance/certificates/wai.neural.int_mlicpp/7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4/h_s.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4/entropy.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4/g_s.whg1"],"set_sha256":"7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4","synthetic":false},{"c":"24","capability":"wai.world.model","lowering":"world/1","members":{"T.whm":"wai-rs/tests/vectors/int_world/world_T.bin","g_s.whm":"wai-rs/tests/vectors/int_world/world_gs.bin"},"name":"world","note":"wai-rs/tests/vectors/int_world, one agent","roles":["ops-conformance/certificates/wai.world.model/da046216ff9495a47fbfdf14788510bc951a266896b47234bb174cef8769ab88/T.whg1","ops-conformance/certificates/wai.world.model/da046216ff9495a47fbfdf14788510bc951a266896b47234bb174cef8769ab88/g_s.whg1"],"set_sha256":"da046216ff9495a47fbfdf14788510bc951a266896b47234bb174cef8769ab88","synthetic":false},{"c":"24","capability":"wai.world.model","lowering":"world/1","members":{"T.whm":"wai-rs/tests/vectors/int_world2/world2_T.bin","g_s.whm":"wai-rs/tests/vectors/int_world2/world2_gs.bin"},"name":"world2","note":"wai-rs/tests/vectors/int_world2, two agents","roles":["ops-conformance/certificates/wai.world.model/34986fa89648e03500ade7804e9267adc860202c114bc567fa83ed5693bd38fb/T.whg1","ops-conformance/certificates/wai.world.model/34986fa89648e03500ade7804e9267adc860202c114bc567fa83ed5693bd38fb/g_s.whg1"],"set_sha256":"34986fa89648e03500ade7804e9267adc860202c114bc567fa83ed5693bd38fb","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"ops-conformance/sets/synth/int_synth.json"},"name":"synth","note":"synthetic","roles":["ops-conformance/certificates/wai.neural.int_synth/00c2274be6b49039365a16a357f41162095db65ed4166a4c70f5ddb97e16b4d1/synth.whg1"],"set_sha256":"00c2274be6b49039365a16a357f41162095db65ed4166a4c70f5ddb97e16b4d1","synthetic":true},{"capability":"wai.neural.int_hyper","lowering":"whm1/1","members":{"entropy.json":"ops-conformance/sets/hyper/entropy.json","g_s.whm":"ops-conformance/sets/hyper/g_s.whm","h_s.whm":"ops-conformance/sets/hyper/h_s.whm"},"name":"hyper","note":"synthetic","roles":["ops-conformance/certificates/wai.neural.int_hyper/7aceaa1aad145d6131a92804d5f6979e5971a4f12cd173dc6828befe2d397e8a/h_s.whg1","ops-conformance/certificates/wai.neural.int_hyper/7aceaa1aad145d6131a92804d5f6979e5971a4f12cd173dc6828befe2d397e8a/g_s.whg1"],"set_sha256":"7aceaa1aad145d6131a92804d5f6979e5971a4f12cd173dc6828befe2d397e8a","synthetic":true},{"capability":"wai.audio.int_codec","lowering":"wam1/1","members":{"model.wam":"ops-conformance/sets/audio/model.wam"},"name":"audio","note":"synthetic","roles":["ops-conformance/certificates/wai.audio.int_codec/8eca5bfdc1d8098ccdcfb8e3a7280c0550c4120ea87f224f0d4269e8fd4d1896/g_s.whg1"],"set_sha256":"8eca5bfdc1d8098ccdcfb8e3a7280c0550c4120ea87f224f0d4269e8fd4d1896","synthetic":true},{"capability":"wai.neural.int_mlicpp","lowering":"wmb1/1","members":{"model.wmb":"ops-conformance/sets/mlicpp/model.wmb"},"name":"mlicpp","note":"synthetic","roles":["ops-conformance/certificates/wai.neural.int_mlicpp/07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c/h_s.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c/entropy.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c/g_s.whg1"],"set_sha256":"07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c","synthetic":true},{"c":"2","capability":"wai.world.model","lowering":"world/1","members":{"T.whm":"ops-conformance/sets/world/T.whm","g_s.whm":"ops-conformance/sets/world/g_s.whm"},"name":"world","note":"synthetic","roles":["ops-conformance/certificates/wai.world.model/5291a52bdbf2279c3350eda96b515bde66d73700c73ccb207e714cb2c6a4c45e/T.whg1","ops-conformance/certificates/wai.world.model/5291a52bdbf2279c3350eda96b515bde66d73700c73ccb207e714cb2c6a4c45e/g_s.whg1"],"set_sha256":"5291a52bdbf2279c3350eda96b515bde66d73700c73ccb207e714cb2c6a4c45e","synthetic":true},{"capability":"wai.image.jpegai","lowering":"jpegai-int/1","members":{"norm.json":"ops-conformance/sets/jpegai/norm.json","weights/hs_uv.json":"ops-conformance/sets/jpegai/weights/hs_uv.json","weights/hs_y.json":"ops-conformance/sets/jpegai/weights/hs_y.json"},"name":"jpegai","note":"synthetic","roles":["ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/hs_y.whg1","ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/hs_uv.whg1"],"set_sha256":"60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad","synthetic":true}]} +{"format":"wai-ops-lowered/1","sets":[{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/gradient/int_synth.json"},"name":"gradient","note":"neural-conformance, generated","roles":["ops-conformance/certificates/wai.neural.int_synth/1c4705d17c01f865b20d785191c7f63b5c18dcc8fce77e15852cf8240b7368be/synth.whg1"],"set_sha256":"1c4705d17c01f865b20d785191c7f63b5c18dcc8fce77e15852cf8240b7368be","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/bloom/int_synth.json"},"name":"bloom","note":"neural-conformance, generated","roles":["ops-conformance/certificates/wai.neural.int_synth/21f092964e1319eca7e494ba3f6794e3166886d50e9dd74d00935c5b317055a9/synth.whg1"],"set_sha256":"21f092964e1319eca7e494ba3f6794e3166886d50e9dd74d00935c5b317055a9","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/facade/int_synth.json"},"name":"facade","note":"neural-conformance, generated","roles":["ops-conformance/certificates/wai.neural.int_synth/c6a362696d61605931ef4da98ae630362dcd73ea6be7864db6e61d6c5abbcd24/synth.whg1"],"set_sha256":"c6a362696d61605931ef4da98ae630362dcd73ea6be7864db6e61d6c5abbcd24","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"neural-conformance/vectors/photo/int_synth.json"},"name":"photo","note":"neural-conformance; its decoder was trained on images the corpus does not record (see that corpus's provenance)","roles":["ops-conformance/certificates/wai.neural.int_synth/50868e72f5f1599569c413ed1f67ab8610fa0b3c17919162cbf370f49275125c/synth.whg1"],"set_sha256":"50868e72f5f1599569c413ed1f67ab8610fa0b3c17919162cbf370f49275125c","synthetic":false},{"capability":"wai.neural.int_hyper","lowering":"whm1/1","members":{"entropy.json":"wai-rs/tests/vectors/int_hyper/tiny_entropy.json","g_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_g_s.bin","h_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_h_s.bin"},"name":"tiny","note":"int-payload-conformance `tiny`","roles":["ops-conformance/certificates/wai.neural.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/h_s.whg1","ops-conformance/certificates/wai.neural.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/g_s.whg1"],"set_sha256":"13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818","synthetic":false},{"capability":"wai.video.int_hyper","lowering":"whm1/1","members":{"entropy.json":"wai-rs/tests/vectors/int_hyper/tiny_entropy.json","g_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_g_s.bin","h_s.whm":"wai-rs/tests/vectors/int_hyper/tiny_h_s.bin"},"name":"tiny","note":"int-payload-conformance `video_nk`, whose keyframe decodes against `tiny`","roles":["ops-conformance/certificates/wai.video.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/h_s.whg1","ops-conformance/certificates/wai.video.int_hyper/13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818/g_s.whg1"],"set_sha256":"13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818","synthetic":false},{"capability":"wai.audio.int_codec","lowering":"wam1/1","members":{"model.wam":"wai-rs/tests/vectors/int_audio/audio_model.bin"},"name":"audio","note":"int-payload-conformance `audio`","roles":["ops-conformance/certificates/wai.audio.int_codec/132958122b251869ad6725d24a2bb96e2733daaf3e09ef65ebc7af6f46030855/g_s.whg1"],"set_sha256":"132958122b251869ad6725d24a2bb96e2733daaf3e09ef65ebc7af6f46030855","synthetic":false},{"capability":"wai.splat.int_codec","lowering":"whm1/1","members":{"g_s.whm":"wai-rs/tests/vectors/int_splat/splat_gs.bin"},"name":"splat","note":"int-payload-conformance `splat`","roles":["ops-conformance/certificates/wai.splat.int_codec/033a37c9d29d7ea9675a0b4a3e269d74f2ab874b5a3b1425eec69bf3bad8b26f/g_s.whg1"],"set_sha256":"033a37c9d29d7ea9675a0b4a3e269d74f2ab874b5a3b1425eec69bf3bad8b26f","synthetic":false},{"capability":"wai.neural.int_mlicpp","lowering":"wmb1/1","members":{"model.wmb":"wai-rs/tests/vectors/int_mlicpp/model.wmb"},"name":"int_mlicpp","note":"wai-rs/tests/vectors/int_mlicpp","roles":["ops-conformance/certificates/wai.neural.int_mlicpp/7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4/h_s.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4/entropy.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4/g_s.whg1"],"set_sha256":"7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4","synthetic":false},{"c":"24","capability":"wai.world.model","lowering":"world/1","members":{"T.whm":"wai-rs/tests/vectors/int_world/world_T.bin","g_s.whm":"wai-rs/tests/vectors/int_world/world_gs.bin"},"name":"world","note":"wai-rs/tests/vectors/int_world, one agent","roles":["ops-conformance/certificates/wai.world.model/da046216ff9495a47fbfdf14788510bc951a266896b47234bb174cef8769ab88/T.whg1","ops-conformance/certificates/wai.world.model/da046216ff9495a47fbfdf14788510bc951a266896b47234bb174cef8769ab88/g_s.whg1"],"set_sha256":"da046216ff9495a47fbfdf14788510bc951a266896b47234bb174cef8769ab88","synthetic":false},{"c":"24","capability":"wai.world.model","lowering":"world/1","members":{"T.whm":"wai-rs/tests/vectors/int_world2/world2_T.bin","g_s.whm":"wai-rs/tests/vectors/int_world2/world2_gs.bin"},"name":"world2","note":"wai-rs/tests/vectors/int_world2, two agents","roles":["ops-conformance/certificates/wai.world.model/34986fa89648e03500ade7804e9267adc860202c114bc567fa83ed5693bd38fb/T.whg1","ops-conformance/certificates/wai.world.model/34986fa89648e03500ade7804e9267adc860202c114bc567fa83ed5693bd38fb/g_s.whg1"],"set_sha256":"34986fa89648e03500ade7804e9267adc860202c114bc567fa83ed5693bd38fb","synthetic":false},{"capability":"wai.neural.int_synth","lowering":"int_synth/1","members":{"int_synth.json":"ops-conformance/sets/synth/int_synth.json"},"name":"synth","note":"synthetic","roles":["ops-conformance/certificates/wai.neural.int_synth/00c2274be6b49039365a16a357f41162095db65ed4166a4c70f5ddb97e16b4d1/synth.whg1"],"set_sha256":"00c2274be6b49039365a16a357f41162095db65ed4166a4c70f5ddb97e16b4d1","synthetic":true},{"capability":"wai.neural.int_hyper","lowering":"whm1/1","members":{"entropy.json":"ops-conformance/sets/hyper/entropy.json","g_s.whm":"ops-conformance/sets/hyper/g_s.whm","h_s.whm":"ops-conformance/sets/hyper/h_s.whm"},"name":"hyper","note":"synthetic","roles":["ops-conformance/certificates/wai.neural.int_hyper/7aceaa1aad145d6131a92804d5f6979e5971a4f12cd173dc6828befe2d397e8a/h_s.whg1","ops-conformance/certificates/wai.neural.int_hyper/7aceaa1aad145d6131a92804d5f6979e5971a4f12cd173dc6828befe2d397e8a/g_s.whg1"],"set_sha256":"7aceaa1aad145d6131a92804d5f6979e5971a4f12cd173dc6828befe2d397e8a","synthetic":true},{"capability":"wai.audio.int_codec","lowering":"wam1/1","members":{"model.wam":"ops-conformance/sets/audio/model.wam"},"name":"audio","note":"synthetic","roles":["ops-conformance/certificates/wai.audio.int_codec/8eca5bfdc1d8098ccdcfb8e3a7280c0550c4120ea87f224f0d4269e8fd4d1896/g_s.whg1"],"set_sha256":"8eca5bfdc1d8098ccdcfb8e3a7280c0550c4120ea87f224f0d4269e8fd4d1896","synthetic":true},{"capability":"wai.neural.int_mlicpp","lowering":"wmb1/1","members":{"model.wmb":"ops-conformance/sets/mlicpp/model.wmb"},"name":"mlicpp","note":"synthetic","roles":["ops-conformance/certificates/wai.neural.int_mlicpp/07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c/h_s.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c/entropy.whg1","ops-conformance/certificates/wai.neural.int_mlicpp/07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c/g_s.whg1"],"set_sha256":"07e1835da60333d5c5a586da7fc27f2db78b8ccd146b100c61362d4ce768fc1c","synthetic":true},{"c":"2","capability":"wai.world.model","lowering":"world/1","members":{"T.whm":"ops-conformance/sets/world/T.whm","g_s.whm":"ops-conformance/sets/world/g_s.whm"},"name":"world","note":"synthetic","roles":["ops-conformance/certificates/wai.world.model/5291a52bdbf2279c3350eda96b515bde66d73700c73ccb207e714cb2c6a4c45e/T.whg1","ops-conformance/certificates/wai.world.model/5291a52bdbf2279c3350eda96b515bde66d73700c73ccb207e714cb2c6a4c45e/g_s.whg1"],"set_sha256":"5291a52bdbf2279c3350eda96b515bde66d73700c73ccb207e714cb2c6a4c45e","synthetic":true},{"capability":"wai.image.jpegai","lowering":"jpegai-int/1","members":{"norm.json":"ops-conformance/sets/jpegai/norm.json","weights/hs_uv.json":"ops-conformance/sets/jpegai/weights/hs_uv.json","weights/hs_y.json":"ops-conformance/sets/jpegai/weights/hs_y.json","weights/hyp_uv.json":"ops-conformance/sets/jpegai/weights/hyp_uv.json","weights/hyp_y.json":"ops-conformance/sets/jpegai/weights/hyp_y.json","weights/mcm0_y.json":"ops-conformance/sets/jpegai/weights/mcm0_y.json","weights/mcm1_y.json":"ops-conformance/sets/jpegai/weights/mcm1_y.json","weights/mcm2_y.json":"ops-conformance/sets/jpegai/weights/mcm2_y.json","weights/mcm3_y.json":"ops-conformance/sets/jpegai/weights/mcm3_y.json","weights/synth_uv.json":"ops-conformance/sets/jpegai/weights/synth_uv.json","weights/synth_y.json":"ops-conformance/sets/jpegai/weights/synth_y.json"},"name":"jpegai","note":"synthetic","roles":["ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/hs_y.whg1","ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/hs_uv.whg1","ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_y.whg1","ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_uv.whg1","ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_y.whg1","ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_uv.whg1"],"set_sha256":"1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9","synthetic":true}]} diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9.json b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9.json new file mode 100644 index 000000000..86017c069 --- /dev/null +++ b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9.json @@ -0,0 +1 @@ +{"capability":"wai.image.jpegai","certificate":"wai-ops/1 bounds","graphs":[{"graph_sha256":"855f51089f67930d3f2f6a9de47ecbd246bbe138b1e6935ac8970546fa998b43","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_y","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"20","hi":"325039","lo":"-323175"},"conv.term":{"bits":"14","hi":"4096","lo":"-4096"},"rq.p":{"bits":"20","hi":"325039","lo":"-323175"},"rq.q":{"bits":"17","hi":"38494","lo":"-38383"},"rq.t":{"bits":"20","hi":"325039","lo":"-323175"},"rq.y":{"bits":"17","hi":"38494","lo":"-38383"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"9"},"npu_flags":[],"op":"conv","out":[{"bits":"17","hi":"38494","lo":"-38383","policy":"derived","result":{"bits":"17","hi":"38494","lo":"-38383"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"17","hi":"38494","lo":"0","policy":"derived","result":{"bits":"17","hi":"38494","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"18","hi":"119507","lo":"-113009"},"conv.term":{"bits":"15","hi":"15748","lo":"-15367"},"rq.p":{"bits":"18","hi":"119507","lo":"-113009"},"rq.q":{"bits":"10","hi":"270","lo":"-442"},"rq.t":{"bits":"18","hi":"119507","lo":"-113009"},"rq.y":{"bits":"10","hi":"270","lo":"-442"}},"k_c":"136365","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"10","hi":"270","lo":"-442","policy":"derived","result":{"bits":"10","hi":"270","lo":"-442"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"10","hi":"270","lo":"0","policy":"derived","result":{"bits":"10","hi":"270","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"16","hi":"31800","lo":"-31877"},"conv.term":{"bits":"15","hi":"16256","lo":"-16256"},"rq.p":{"bits":"16","hi":"31800","lo":"-31877"},"rq.q":{"bits":"15","hi":"15017","lo":"-15177"},"rq.t":{"bits":"16","hi":"31800","lo":"-31877"},"rq.y":{"bits":"15","hi":"15017","lo":"-15177"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"9"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"15017","lo":"-15177","policy":"derived","result":{"bits":"15","hi":"15017","lo":"-15177"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"15","hi":"15017","lo":"-15177","policy":"derived","result":{"bits":"15","hi":"15017","lo":"-15177"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"15","hi":"15177","lo":"0","policy":"derived","result":{"bits":"15","hi":"15177","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3971","lo":"-686"},"rq.q":{"bits":"13","hi":"3971","lo":"-686"},"rq.t":{"bits":"13","hi":"3971","lo":"-686"},"rq.y":{"bits":"13","hi":"3971","lo":"-686"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3971","lo":"-686","policy":"derived","result":{"bits":"13","hi":"3971","lo":"-686"},"tensor":"12"}],"saturated":false}],"scalars":[]},{"graph_sha256":"75bff95e2652c45176ec50c0f252a579d82cae89074dc75cc23d5e55a163a2e5","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"19","hi":"181871","lo":"-182589"},"conv.term":{"bits":"13","hi":"4032","lo":"-4096"},"rq.p":{"bits":"19","hi":"181871","lo":"-182589"},"rq.q":{"bits":"16","hi":"22733","lo":"-22824"},"rq.t":{"bits":"19","hi":"181871","lo":"-182589"},"rq.y":{"bits":"16","hi":"22733","lo":"-22824"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"16","hi":"22733","lo":"-22824","policy":"derived","result":{"bits":"16","hi":"22733","lo":"-22824"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"16","hi":"22733","lo":"0","policy":"derived","result":{"bits":"16","hi":"22733","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"18","hi":"88914","lo":"-107059"},"conv.term":{"bits":"15","hi":"15367","lo":"-15748"},"rq.p":{"bits":"18","hi":"88914","lo":"-107059"},"rq.q":{"bits":"8","hi":"69","lo":"-105"},"rq.t":{"bits":"18","hi":"88914","lo":"-107059"},"rq.y":{"bits":"8","hi":"69","lo":"-105"}},"k_c":"136365","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"8","hi":"69","lo":"-105","policy":"derived","result":{"bits":"8","hi":"69","lo":"-105"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"8","hi":"69","lo":"0","policy":"derived","result":{"bits":"8","hi":"69","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"69","lo":"0","policy":"derived","result":{"bits":"8","hi":"69","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"16","hi":"17422","lo":"-17319"},"conv.term":{"bits":"15","hi":"8832","lo":"-8832"},"rq.p":{"bits":"16","hi":"17422","lo":"-17319"},"rq.q":{"bits":"15","hi":"8425","lo":"-8660"},"rq.t":{"bits":"16","hi":"17422","lo":"-17319"},"rq.y":{"bits":"15","hi":"8425","lo":"-8660"}},"k_c":"243148","mac":{"a_bits":["8"],"w_bits":"9"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"8425","lo":"-8660","policy":"derived","result":{"bits":"15","hi":"8425","lo":"-8660"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"15","hi":"8425","lo":"-8660","policy":"derived","result":{"bits":"15","hi":"8425","lo":"-8660"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"15","hi":"8660","lo":"0","policy":"derived","result":{"bits":"15","hi":"8660","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3961","lo":"-684"},"rq.q":{"bits":"13","hi":"3961","lo":"-684"},"rq.t":{"bits":"13","hi":"3961","lo":"-684"},"rq.y":{"bits":"13","hi":"3961","lo":"-684"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3961","lo":"-684","policy":"derived","result":{"bits":"13","hi":"3961","lo":"-684"},"tensor":"12"}],"saturated":false}],"scalars":[]},{"graph_sha256":"788a0ea9098389c2fe16f44a9b52c5a3df6e46f1886e3d20fcdf94b95e2dcec2","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"},{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"1"}],"name":"rec_y","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{"rq.p":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.q":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.t":{"bits":"7","hi":"32","lo":"-31"},"rq.y":{"bits":"23","hi":"2097152","lo":"-2031616"}},"npu_flags":["rq_floor_mult"],"op":"rescale","out":[{"bits":"23","hi":"2097152","lo":"-2031616","policy":"derived","result":{"bits":"23","hi":"2097152","lo":"-2031616"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"44","hi":"5790743134208","lo":"-5776999579648"},"conv.term":{"bits":"37","hi":"67939336192","lo":"-67618471936"},"rq.p":{"bits":"51","hi":"590655799689216","lo":"-589253957124096"},"rq.q":{"bits":"23","hi":"2200364","lo":"-2195143"},"rq.t":{"bits":"44","hi":"5790743134208","lo":"-5776999579648"},"rq.y":{"bits":"23","hi":"2200364","lo":"-2195143"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"23","hi":"2200364","lo":"-2195143","policy":"check","result":{"bits":"23","hi":"2200364","lo":"-2195143"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"2","intermediates":{"convT.acc":{"bits":"40","hi":"411721115472","lo":"-412414469493"},"convT.term":{"bits":"38","hi":"71265317495","lo":"-71434817260"},"rq.p":{"bits":"50","hi":"421602422243328","lo":"-422312416760832"},"rq.q":{"bits":"20","hi":"392647","lo":"-393310"},"rq.t":{"bits":"40","hi":"411721115472","lo":"-412414469493"},"rq.y":{"bits":"20","hi":"448363","lo":"-337594"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"20","hi":"448363","lo":"-337594","policy":"check","result":{"bits":"20","hi":"448363","lo":"-337594"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"38","hi":"78680555520","lo":"-48588128256"},"conv.term":{"bits":"35","hi":"12143296512","lo":"-11518869504"},"rq.p":{"bits":"50","hi":"286475902648320","lo":"-176909374980096"},"rq.q":{"bits":"19","hi":"133400","lo":"-82380"},"rq.t":{"bits":"38","hi":"78680555520","lo":"-48588128256"},"rq.y":{"bits":"19","hi":"191586","lo":"-112542"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"19","hi":"191586","lo":"-112542","policy":"check","result":{"bits":"19","hi":"191586","lo":"-112542"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"19","hi":"191586","lo":"0","policy":"derived","result":{"bits":"19","hi":"191586","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"38","hi":"69455864166","lo":"-55933724286"},"conv.term":{"bits":"34","hi":"6276357360","lo":"-6277123704"},"rq.p":{"bits":"44","hi":"7848512650758","lo":"-6320510844318"},"rq.q":{"bits":"18","hi":"116951","lo":"-94183"},"rq.t":{"bits":"38","hi":"69455864166","lo":"-55933724286"},"rq.y":{"bits":"19","hi":"149048","lo":"-150022"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"19","hi":"149048","lo":"-150022","policy":"check","result":{"bits":"19","hi":"149048","lo":"-150022"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{},"npu_flags":[],"op":"subpos_split","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"9"},{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"10"},{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"11"},{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"149048","lo":"-150022","policy":"derived","result":{"bits":"19","hi":"149048","lo":"-150022"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"9","intermediates":{"conv.acc":{"bits":"40","hi":"404808130028","lo":"-404894885182"},"conv.term":{"bits":"34","hi":"4910520104","lo":"-4902418916"},"rq.p":{"bits":"48","hi":"82580858525712","lo":"-82598556577128"},"rq.q":{"bits":"19","hi":"153818","lo":"-153852"},"rq.t":{"bits":"40","hi":"404808130028","lo":"-404894885182"},"rq.y":{"bits":"19","hi":"153818","lo":"-153852"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"153818","lo":"-153852","policy":"check","result":{"bits":"19","hi":"153818","lo":"-153852"},"tensor":"14"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"19","hi":"153818","lo":"0","policy":"derived","result":{"bits":"19","hi":"153818","lo":"0"},"tensor":"15"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"11","intermediates":{"conv.acc":{"bits":"34","hi":"7166995892","lo":"-3627028440"},"conv.term":{"bits":"34","hi":"4708522798","lo":"-3463366088"},"rq.p":{"bits":"48","hi":"117424060694528","lo":"-59425233960960"},"rq.q":{"bits":"19","hi":"218719","lo":"-110689"},"rq.t":{"bits":"34","hi":"7166995892","lo":"-3627028440"},"rq.y":{"bits":"19","hi":"218719","lo":"-110689"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"218719","lo":"-110689","policy":"check","result":{"bits":"19","hi":"218719","lo":"-110689"},"tensor":"16"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"12","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"19","hi":"218719","lo":"0","policy":"derived","result":{"bits":"19","hi":"218719","lo":"0"},"tensor":"17"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"13","intermediates":{"conv.acc":{"bits":"35","hi":"12905733314","lo":"-12552939567"},"conv.term":{"bits":"34","hi":"7157141837","lo":"-7056968535"},"rq.p":{"bits":"49","hi":"211447534616576","lo":"-205667361865728"},"rq.q":{"bits":"20","hi":"393851","lo":"-383086"},"rq.t":{"bits":"35","hi":"12905733314","lo":"-12552939567"},"rq.y":{"bits":"20","hi":"393851","lo":"-383086"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"393851","lo":"-383086","policy":"check","result":{"bits":"20","hi":"393851","lo":"-383086"},"tensor":"18"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"14","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2147877498","lo":"-2147866734"},"tensor":"19"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"15","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"149048","lo":"-150022","policy":"derived","result":{"bits":"19","hi":"149048","lo":"-150022"},"tensor":"20"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"16","intermediates":{"conv.acc":{"bits":"54","hi":"6131443770706487","lo":"-6131443770762433"},"conv.term":{"bits":"47","hi":"70342974373888","lo":"-70342974341132"},"rq.p":{"bits":"59","hi":"153286094267662175","lo":"-153286094269060825"},"rq.q":{"bits":"32","hi":"1142070399","lo":"-1142070400"},"rq.t":{"bits":"54","hi":"6131443770706487","lo":"-6131443770762433"},"rq.y":{"bits":"32","hi":"1142070399","lo":"-1142070400"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"1142070399","lo":"-1142070400","policy":"check","result":{"bits":"32","hi":"1142070399","lo":"-1142070400"},"tensor":"21"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"17","intermediates":{"conv.acc":{"bits":"49","hi":"190567008933099","lo":"-190567008928840"},"conv.term":{"bits":"47","hi":"36432045728100","lo":"-36432045760000"},"rq.p":{"bits":"57","hi":"43258711027813473","lo":"-43258711026846680"},"rq.q":{"bits":"31","hi":"644605026","lo":"-644605027"},"rq.t":{"bits":"49","hi":"190567008933099","lo":"-190567008928840"},"rq.y":{"bits":"31","hi":"644551962","lo":"-644658091"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"644551962","lo":"-644658091","policy":"check","result":{"bits":"31","hi":"644551962","lo":"-644658091"},"tensor":"22"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"18","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"31","hi":"644551962","lo":"-644658091","policy":"derived","result":{"bits":"31","hi":"644551962","lo":"-644658091"},"tensor":"23"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"19","intermediates":{"conv.acc":{"bits":"52","hi":"2012614377017303","lo":"-2012603662021205"},"conv.term":{"bits":"46","hi":"21082650125058","lo":"-21086121498519"},"rq.p":{"bits":"57","hi":"48302745048415272","lo":"-48302487888508920"},"rq.q":{"bits":"30","hi":"359883495","lo":"-359881580"},"rq.t":{"bits":"52","hi":"2012614377017303","lo":"-2012603662021205"},"rq.y":{"bits":"30","hi":"359883495","lo":"-359881580"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"30","hi":"359883495","lo":"-359881580","policy":"check","result":{"bits":"30","hi":"359883495","lo":"-359881580"},"tensor":"24"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"20","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"30","hi":"359883495","lo":"0","policy":"derived","result":{"bits":"30","hi":"359883495","lo":"0"},"tensor":"25"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"21","intermediates":{"conv.acc":{"bits":"46","hi":"17834746361715","lo":"-683058873510"},"conv.term":{"bits":"45","hi":"10243004034690","lo":"-683058873510"},"rq.p":{"bits":"60","hi":"292204484390338560","lo":"-11191236583587840"},"rq.q":{"bits":"30","hi":"272136632","lo":"-10422652"},"rq.t":{"bits":"46","hi":"17834746361715","lo":"-683058873510"},"rq.y":{"bits":"30","hi":"272136632","lo":"-10422652"}},"k_c":"0","mac":{"a_bits":["30"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"30","hi":"272136632","lo":"-10422652","policy":"check","result":{"bits":"30","hi":"272136632","lo":"-10422652"},"tensor":"26"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"22","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"30","hi":"272136632","lo":"0","policy":"derived","result":{"bits":"30","hi":"272136632","lo":"0"},"tensor":"27"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"23","intermediates":{"conv.acc":{"bits":"45","hi":"14628704653160","lo":"-15624724726280"},"conv.term":{"bits":"45","hi":"8813416963952","lo":"-8902405642616"},"rq.p":{"bits":"57","hi":"59919174259343360","lo":"-63998872478842880"},"rq.q":{"bits":"29","hi":"223216318","lo":"-238414379"},"rq.t":{"bits":"45","hi":"14628704653160","lo":"-15624724726280"},"rq.y":{"bits":"29","hi":"223216318","lo":"-238414379"}},"k_c":"0","mac":{"a_bits":["30"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"29","hi":"223216318","lo":"-238414379","policy":"check","result":{"bits":"29","hi":"223216318","lo":"-238414379"},"tensor":"28"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"24","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2370699965","lo":"-2385898027"},"tensor":"29"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"25","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"149048","lo":"-150022","policy":"derived","result":{"bits":"19","hi":"149048","lo":"-150022"},"tensor":"30"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"26","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"31"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"27","intermediates":{"conv.acc":{"bits":"55","hi":"11605940081349671","lo":"-11605940081538244"},"conv.term":{"bits":"47","hi":"70325794471956","lo":"-70325794504704"},"rq.p":{"bits":"64","hi":"4735223553190665768","lo":"-4735223553267603552"},"rq.q":{"bits":"33","hi":"2205010295","lo":"-2205010296"},"rq.t":{"bits":"55","hi":"11605940081349671","lo":"-11605940081538244"},"rq.y":{"bits":"33","hi":"2205010295","lo":"-2205010296"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2205010295","lo":"-2205010296"},"tensor":"32"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"28","intermediates":{"conv.acc":{"bits":"50","hi":"295397113131145","lo":"-295397113132580"},"conv.term":{"bits":"47","hi":"69980049604789","lo":"-69980049637376"},"rq.p":{"bits":"57","hi":"67055144680769915","lo":"-67055144681095660"},"rq.q":{"bits":"31","hi":"999199519","lo":"-999199520"},"rq.t":{"bits":"50","hi":"295397113131145","lo":"-295397113132580"},"rq.y":{"bits":"31","hi":"999235022","lo":"-999164017"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"999235022","lo":"-999164017","policy":"check","result":{"bits":"31","hi":"999235022","lo":"-999164017"},"tensor":"33"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"29","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"31","hi":"999235022","lo":"-999164017","policy":"derived","result":{"bits":"31","hi":"999235022","lo":"-999164017"},"tensor":"34"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"30","intermediates":{"conv.acc":{"bits":"53","hi":"2910739590497338","lo":"-2910744691638548"},"conv.term":{"bits":"46","hi":"32740934730852","lo":"-32738608181022"},"rq.p":{"bits":"58","hi":"139715500343872224","lo":"-139715745198650304"},"rq.q":{"bits":"31","hi":"1040961595","lo":"-1040963421"},"rq.t":{"bits":"53","hi":"2910739590497338","lo":"-2910744691638548"},"rq.y":{"bits":"31","hi":"1040961595","lo":"-1040963421"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"31","hi":"1040961595","lo":"-1040963421","policy":"check","result":{"bits":"31","hi":"1040961595","lo":"-1040963421"},"tensor":"35"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"31","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"31","hi":"1040961595","lo":"0","policy":"derived","result":{"bits":"31","hi":"1040961595","lo":"0"},"tensor":"36"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"32","intermediates":{"conv.acc":{"bits":"47","hi":"18701916015770","lo":"-36050581958040"},"conv.term":{"bits":"46","hi":"18701916015770","lo":"-26595527790655"},"rq.p":{"bits":"59","hi":"76603048000593920","lo":"-147663183700131840"},"rq.q":{"bits":"32","hi":"570737183","lo":"-1100176452"},"rq.t":{"bits":"47","hi":"18701916015770","lo":"-36050581958040"},"rq.y":{"bits":"32","hi":"570737183","lo":"-1100176452"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"570737183","lo":"-1100176452","policy":"check","result":{"bits":"32","hi":"570737183","lo":"-1100176452"},"tensor":"37"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"33","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"31","hi":"570737183","lo":"0","policy":"derived","result":{"bits":"31","hi":"570737183","lo":"0"},"tensor":"38"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"34","intermediates":{"conv.acc":{"bits":"46","hi":"34825241432294","lo":"-32446408853550"},"conv.term":{"bits":"46","hi":"18514143479337","lo":"-18552953607781"},"rq.p":{"bits":"59","hi":"285288377813352448","lo":"-265800981328281600"},"rq.q":{"bits":"31","hi":"1062782026","lo":"-990185818"},"rq.t":{"bits":"46","hi":"34825241432294","lo":"-32446408853550"},"rq.y":{"bits":"31","hi":"1062782026","lo":"-990185818"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"31","hi":"1062782026","lo":"-990185818","policy":"check","result":{"bits":"31","hi":"1062782026","lo":"-990185818"},"tensor":"39"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"35","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3210265673","lo":"-3137669466"},"tensor":"40"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"36","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"149048","lo":"-150022","policy":"derived","result":{"bits":"19","hi":"149048","lo":"-150022"},"tensor":"41"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"37","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"42"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"38","intermediates":{"conv.acc":{"bits":"55","hi":"17073517199864404","lo":"-17073517199818016"},"conv.term":{"bits":"47","hi":"70362301693955","lo":"-70362301726720"},"rq.p":{"bits":"63","hi":"2321998339181558944","lo":"-2321998339175250176"},"rq.q":{"bits":"33","hi":"2162529471","lo":"-2162529472"},"rq.t":{"bits":"55","hi":"17073517199864404","lo":"-17073517199818016"},"rq.y":{"bits":"33","hi":"2162529471","lo":"-2162529472"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2162529471","lo":"-2162529472"},"tensor":"43"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"39","intermediates":{"conv.acc":{"bits":"50","hi":"427140939926469","lo":"-427140939950916"},"conv.term":{"bits":"47","hi":"69840463167734","lo":"-69840463200256"},"rq.p":{"bits":"59","hi":"194349127666543395","lo":"-194349127677666780"},"rq.q":{"bits":"32","hi":"1448013839","lo":"-1448013840"},"rq.t":{"bits":"50","hi":"427140939926469","lo":"-427140939950916"},"rq.y":{"bits":"32","hi":"1447998503","lo":"-1448029176"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1447998503","lo":"-1448029176","policy":"check","result":{"bits":"32","hi":"1447998503","lo":"-1448029176"},"tensor":"44"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"40","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"1447998503","lo":"-1448029176","policy":"derived","result":{"bits":"32","hi":"1447998503","lo":"-1448029176"},"tensor":"45"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"41","intermediates":{"conv.acc":{"bits":"53","hi":"3808648022733475","lo":"-3808649052150028"},"conv.term":{"bits":"47","hi":"47264119136423","lo":"-47265120333816"},"rq.p":{"bits":"59","hi":"182815105091206800","lo":"-182815154503201344"},"rq.q":{"bits":"32","hi":"1362078674","lo":"-1362079043"},"rq.t":{"bits":"53","hi":"3808648022733475","lo":"-3808649052150028"},"rq.y":{"bits":"32","hi":"1362078674","lo":"-1362079043"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"1362078674","lo":"-1362079043","policy":"check","result":{"bits":"32","hi":"1362078674","lo":"-1362079043"},"tensor":"46"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"42","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"1362078674","lo":"0","policy":"derived","result":{"bits":"32","hi":"1362078674","lo":"0"},"tensor":"47"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"43","intermediates":{"conv.acc":{"bits":"47","hi":"18689081485954","lo":"-43202411381932"},"conv.term":{"bits":"47","hi":"18689081485954","lo":"-43202411381932"},"rq.p":{"bits":"60","hi":"153100955532935168","lo":"-353914154040786944"},"rq.q":{"bits":"32","hi":"570345504","lo":"-1318432965"},"rq.t":{"bits":"47","hi":"18689081485954","lo":"-43202411381932"},"rq.y":{"bits":"32","hi":"570345504","lo":"-1318432965"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"570345504","lo":"-1318432965","policy":"check","result":{"bits":"32","hi":"570345504","lo":"-1318432965"},"tensor":"48"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"44","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"31","hi":"570345504","lo":"0","policy":"derived","result":{"bits":"31","hi":"570345504","lo":"0"},"tensor":"49"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"45","intermediates":{"conv.acc":{"bits":"47","hi":"34196205383328","lo":"-36259145071296"},"conv.term":{"bits":"46","hi":"18648586944288","lo":"-18499726767744"},"rq.p":{"bits":"61","hi":"560270629000445952","lo":"-594069832848113664"},"rq.q":{"bits":"32","hi":"1043585369","lo":"-1106541293"},"rq.t":{"bits":"47","hi":"34196205383328","lo":"-36259145071296"},"rq.y":{"bits":"32","hi":"1043585369","lo":"-1106541293"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"1043585369","lo":"-1106541293","policy":"check","result":{"bits":"32","hi":"1043585369","lo":"-1106541293"},"tensor":"50"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"46","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3191069016","lo":"-3254024941"},"tensor":"51"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"47","intermediates":{},"npu_flags":[],"op":"subpos_merge","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"52"}],"saturated":false}],"scalars":[]},{"graph_sha256":"bc863eaff0f2155c058e172b40f0c5275c76b53ca779c2e18053d57a7c1d299b","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"},{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"1"}],"name":"rec_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{"rq.p":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.q":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.t":{"bits":"7","hi":"32","lo":"-31"},"rq.y":{"bits":"23","hi":"2097152","lo":"-2031616"}},"npu_flags":["rq_floor_mult"],"op":"rescale","out":[{"bits":"23","hi":"2097152","lo":"-2031616","policy":"derived","result":{"bits":"23","hi":"2097152","lo":"-2031616"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"43","hi":"3340954304512","lo":"-3331840802816"},"conv.term":{"bits":"37","hi":"68702699520","lo":"-68056776704"},"rq.p":{"bits":"52","hi":"1139265417838592","lo":"-1136157713760256"},"rq.q":{"bits":"22","hi":"1061023","lo":"-1058130"},"rq.t":{"bits":"43","hi":"3340954304512","lo":"-3331840802816"},"rq.y":{"bits":"22","hi":"1061023","lo":"-1058130"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"22","hi":"1061023","lo":"-1058130","policy":"check","result":{"bits":"22","hi":"1061023","lo":"-1058130"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"2","intermediates":{"convT.acc":{"bits":"39","hi":"182361309920","lo":"-182323729850"},"convT.term":{"bits":"36","hi":"33862276260","lo":"-33954858046"},"rq.p":{"bits":"46","hi":"23342247669760","lo":"-23337437420800"},"rq.q":{"bits":"20","hi":"347826","lo":"-347755"},"rq.t":{"bits":"39","hi":"182361309920","lo":"-182323729850"},"rq.y":{"bits":"20","hi":"283158","lo":"-412423"}},"k_c":"0","mac":{"a_bits":["22"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"20","hi":"283158","lo":"-412423","policy":"check","result":{"bits":"20","hi":"283158","lo":"-412423"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"283158","lo":"0","policy":"derived","result":{"bits":"20","hi":"283158","lo":"0"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"37","hi":"35462991078","lo":"-44819097714"},"conv.term":{"bits":"34","hi":"8222908320","lo":"-8476617888"},"rq.p":{"bits":"45","hi":"8050098974706","lo":"-10173935181078"},"rq.q":{"bits":"18","hi":"59977","lo":"-75802"},"rq.t":{"bits":"37","hi":"35462991078","lo":"-44819097714"},"rq.y":{"bits":"18","hi":"107962","lo":"-47408"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"18","hi":"107962","lo":"-47408","policy":"check","result":{"bits":"18","hi":"107962","lo":"-47408"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"18","hi":"107962","lo":"0","policy":"derived","result":{"bits":"18","hi":"107962","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"36","hi":"31890787218","lo":"-27949958294"},"conv.term":{"bits":"33","hi":"3535215690","lo":"-3537266968"},"rq.p":{"bits":"48","hi":"116114356260738","lo":"-101765798148454"},"rq.q":{"bits":"17","hi":"54069","lo":"-47389"},"rq.t":{"bits":"36","hi":"31890787218","lo":"-27949958294"},"rq.y":{"bits":"18","hi":"111305","lo":"-102823"}},"k_c":"0","mac":{"a_bits":["18"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"18","hi":"111305","lo":"-102823","policy":"check","result":{"bits":"18","hi":"111305","lo":"-102823"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"111305","lo":"-102823","policy":"derived","result":{"bits":"18","hi":"111305","lo":"-102823"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"111305","lo":"-102823","policy":"derived","result":{"bits":"18","hi":"111305","lo":"-102823"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"111305","lo":"-102823","policy":"derived","result":{"bits":"18","hi":"111305","lo":"-102823"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"111305","lo":"-102823","policy":"derived","result":{"bits":"18","hi":"111305","lo":"-102823"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{},"npu_flags":[],"op":"subpos_merge","out":[{"bits":"18","hi":"111305","lo":"-102823","policy":"derived","result":{"bits":"18","hi":"111305","lo":"-102823"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"12","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2147594952","lo":"-2147586471"},"tensor":"14"}],"saturated":false}],"scalars":[]},{"graph_sha256":"ba43be900cefbbc8361b55113de5c80716e4f9adb5c9adc4d33dd267f1a04ced","inputs":[{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"0"}],"name":"syn_y","nodes":[{"acc32_params":[],"fits":["acc64"],"index":"0","intermediates":{"conv.acc":{"bits":"57","hi":"51367128096034334","lo":"-51367128095733151"},"conv.term":{"bits":"47","hi":"70358006759424","lo":"-70358006726661"},"rq.p":{"bits":"58","hi":"102734256192068668","lo":"-102734256191466302"},"rq.q":{"bits":"32","hi":"1530859711","lo":"-1530859712"},"rq.t":{"bits":"57","hi":"51367128096034334","lo":"-51367128095733151"},"rq.y":{"bits":"32","hi":"1530900315","lo":"-1530819108"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1530900315","lo":"-1530819108","policy":"check","result":{"bits":"32","hi":"1530900315","lo":"-1530819108"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"1530900315","lo":"0","policy":"derived","result":{"bits":"32","hi":"1530900315","lo":"0"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"2","intermediates":{"conv.acc":{"bits":"50","hi":"385166864752425","lo":"-437395059898965"},"conv.term":{"bits":"47","hi":"50100243708690","lo":"-50129330814675"},"rq.p":{"bits":"61","hi":"701003693849413500","lo":"-796059009016116300"},"rq.q":{"bits":"31","hi":"652860564","lo":"-741387726"},"rq.t":{"bits":"50","hi":"385166864752425","lo":"-437395059898965"},"rq.y":{"bits":"31","hi":"652886650","lo":"-741398329"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"652886650","lo":"-741398329","policy":"check","result":{"bits":"31","hi":"652886650","lo":"-741398329"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2800370297","lo":"-2888881977"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"convT.acc":{"bits":"56","hi":"23908455139241212","lo":"-23908455138079178"},"convT.term":{"bits":"47","hi":"70362301726720","lo":"-70362301693955"},"rq.p":{"bits":"61","hi":"1075880481265854540","lo":"-1075880481213563010"},"rq.q":{"bits":"30","hi":"500995889","lo":"-500995890"},"rq.t":{"bits":"56","hi":"23908455139241212","lo":"-23908455138079178"},"rq.y":{"bits":"30","hi":"500973129","lo":"-501018650"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"30","hi":"500973129","lo":"-501018650","policy":"check","result":{"bits":"30","hi":"500973129","lo":"-501018650"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"37","hi":"42592763904","lo":"-34986000384"},"conv.term":{"bits":"35","hi":"12024938496","lo":"-12313165824"},"rq.p":{"bits":"51","hi":"620321013497856","lo":"-509536109592576"},"rq.q":{"bits":"20","hi":"288859","lo":"-237272"},"rq.t":{"bits":"37","hi":"42592763904","lo":"-34986000384"},"rq.y":{"bits":"20","hi":"288859","lo":"-237272"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"288859","lo":"-237272","policy":"check","result":{"bits":"20","hi":"288859","lo":"-237272"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"36","hi":"18645526425","lo":"-20361825915"},"conv.term":{"bits":"34","hi":"7770307100","lo":"-7472493471"},"rq.p":{"bits":"49","hi":"152744152473600","lo":"-166804077895680"},"rq.q":{"bits":"19","hi":"142254","lo":"-155349"},"rq.t":{"bits":"36","hi":"18645526425","lo":"-20361825915"},"rq.y":{"bits":"19","hi":"142254","lo":"-155349"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"142254","lo":"-155349","policy":"check","result":{"bits":"19","hi":"142254","lo":"-155349"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"8","intermediates":{"rq.p":{"bits":"19","hi":"142254","lo":"-155349"},"rq.q":{"bits":"19","hi":"142254","lo":"-155349"},"rq.t":{"bits":"19","hi":"142254","lo":"-155349"},"rq.y":{"bits":"19","hi":"207790","lo":"-89813"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"19","hi":"207790","lo":"-89813","policy":"check","result":{"bits":"19","hi":"207790","lo":"-89813"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"9","intermediates":{"mul.p":{"bits":"48","hi":"104097206474910","lo":"-104106665283500"},"rq.p":{"bits":"48","hi":"104097206474910","lo":"-104106665283500"},"rq.q":{"bits":"32","hi":"1588397315","lo":"-1588541646"},"rq.t":{"bits":"48","hi":"104097206474910","lo":"-104106665283500"},"rq.y":{"bits":"32","hi":"1588397315","lo":"-1588541646"}},"mac":{"a_bits":["30","19"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"1588397315","lo":"-1588541646","policy":"check","result":{"bits":"32","hi":"1588397315","lo":"-1588541646"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"10","intermediates":{"convT.acc":{"bits":"50","hi":"488188344621731","lo":"-488193014018243"},"convT.term":{"bits":"47","hi":"51440155580772","lo":"-51435481854330"},"rq.p":{"bits":"62","hi":"1777005574423100840","lo":"-1777022571026404520"},"rq.q":{"bits":"31","hi":"827482703","lo":"-827490618"},"rq.t":{"bits":"50","hi":"488188344621731","lo":"-488193014018243"},"rq.y":{"bits":"31","hi":"827440893","lo":"-827532428"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"827440893","lo":"-827532428","policy":"check","result":{"bits":"31","hi":"827440893","lo":"-827532428"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"11","intermediates":{"conv.acc":{"bits":"50","hi":"502800028671074","lo":"-502799825554909"},"conv.term":{"bits":"46","hi":"27099516686643","lo":"-27102514549428"},"rq.p":{"bits":"60","hi":"457548026090677340","lo":"-457547841254967190"},"rq.q":{"bits":"30","hi":"426124805","lo":"-426124634"},"rq.t":{"bits":"50","hi":"502800028671074","lo":"-502799825554909"},"rq.y":{"bits":"30","hi":"426150587","lo":"-426098852"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"426150587","lo":"-426098852","policy":"check","result":{"bits":"30","hi":"426150587","lo":"-426098852"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"12","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"30","hi":"426150587","lo":"0","policy":"derived","result":{"bits":"30","hi":"426150587","lo":"0"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"13","intermediates":{"conv.acc":{"bits":"48","hi":"78571088327538","lo":"-77464375253099"},"conv.term":{"bits":"45","hi":"13772334670666","lo":"-13702872124985"},"rq.p":{"bits":"55","hi":"17835637050351126","lo":"-17584413182453473"},"rq.q":{"bits":"28","hi":"132885851","lo":"-131014088"},"rq.t":{"bits":"48","hi":"78571088327538","lo":"-77464375253099"},"rq.y":{"bits":"28","hi":"132927803","lo":"-130977851"}},"k_c":"0","mac":{"a_bits":["30"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"28","hi":"132927803","lo":"-130977851","policy":"check","result":{"bits":"28","hi":"132927803","lo":"-130977851"},"tensor":"14"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"14","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"31","hi":"960368696","lo":"-958510279","policy":"check","result":{"bits":"31","hi":"960368696","lo":"-958510279"},"tensor":"15"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"15","intermediates":{"conv.acc":{"bits":"50","hi":"523137346882755","lo":"-523401976171470"},"conv.term":{"bits":"46","hi":"29518852608952","lo":"-29461730445623"},"rq.p":{"bits":"59","hi":"238027492831653525","lo":"-238147899158018850"},"rq.q":{"bits":"30","hi":"443360754","lo":"-443585030"},"rq.t":{"bits":"50","hi":"523137346882755","lo":"-523401976171470"},"rq.y":{"bits":"30","hi":"443419268","lo":"-443526516"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"443419268","lo":"-443526516","policy":"check","result":{"bits":"30","hi":"443419268","lo":"-443526516"},"tensor":"16"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"16","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"30","hi":"443419268","lo":"0","policy":"derived","result":{"bits":"30","hi":"443419268","lo":"0"},"tensor":"17"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"17","intermediates":{"conv.acc":{"bits":"48","hi":"88522892405716","lo":"-66624631855536"},"conv.term":{"bits":"45","hi":"13938884689580","lo":"-14009831772460"},"rq.p":{"bits":"56","hi":"20006173683691816","lo":"-15057166799351136"},"rq.q":{"bits":"30","hi":"298115218","lo":"-224369270"},"rq.t":{"bits":"48","hi":"88522892405716","lo":"-66624631855536"},"rq.y":{"bits":"30","hi":"298166826","lo":"-224315024"}},"k_c":"0","mac":{"a_bits":["30"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"298166826","lo":"-224315024","policy":"check","result":{"bits":"30","hi":"298166826","lo":"-224315024"},"tensor":"18"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"18","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1258535522","lo":"-1182825303","policy":"check","result":{"bits":"32","hi":"1258535522","lo":"-1182825303"},"tensor":"19"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"19","intermediates":{"conv.acc":{"bits":"50","hi":"545293770350310","lo":"-545283998989060"},"conv.term":{"bits":"46","hi":"27099516686643","lo":"-27102514549428"},"rq.p":{"bits":"61","hi":"992434662037564200","lo":"-992416878160089200"},"rq.q":{"bits":"30","hi":"462138402","lo":"-462130122"},"rq.t":{"bits":"50","hi":"545293770350310","lo":"-545283998989060"},"rq.y":{"bits":"30","hi":"462089065","lo":"-462179459"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"462089065","lo":"-462179459","policy":"check","result":{"bits":"30","hi":"462089065","lo":"-462179459"},"tensor":"20"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"20","intermediates":{"conv.acc":{"bits":"50","hi":"282518521557615","lo":"-282511782413733"},"conv.term":{"bits":"45","hi":"15127409720905","lo":"-15130368949283"},"rq.p":{"bits":"59","hi":"257091854617429650","lo":"-257085721996497030"},"rq.q":{"bits":"29","hi":"239435447","lo":"-239429737"},"rq.t":{"bits":"50","hi":"282518521557615","lo":"-282511782413733"},"rq.y":{"bits":"29","hi":"239427275","lo":"-239437909"}},"k_c":"0","mac":{"a_bits":["30"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"29","hi":"239427275","lo":"-239437909","policy":"check","result":{"bits":"29","hi":"239427275","lo":"-239437909"},"tensor":"21"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"21","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"29","hi":"239427275","lo":"0","policy":"derived","result":{"bits":"29","hi":"239427275","lo":"0"},"tensor":"22"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"22","intermediates":{"conv.acc":{"bits":"47","hi":"35256623952850","lo":"-57283454398300"},"conv.term":{"bits":"44","hi":"7722966182400","lo":"-7452892216200"},"rq.p":{"bits":"57","hi":"32083527797093500","lo":"-52127943502453000"},"rq.q":{"bits":"29","hi":"119520454","lo":"-194191723"},"rq.t":{"bits":"47","hi":"35256623952850","lo":"-57283454398300"},"rq.y":{"bits":"29","hi":"119552106","lo":"-194169592"}},"k_c":"0","mac":{"a_bits":["29"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"29","hi":"119552106","lo":"-194169592","policy":"check","result":{"bits":"29","hi":"119552106","lo":"-194169592"},"tensor":"23"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"23","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"31","hi":"581641171","lo":"-656349051","policy":"check","result":{"bits":"31","hi":"581641171","lo":"-656349051"},"tensor":"24"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"24","intermediates":{"conv.acc":{"bits":"50","hi":"363478164970732","lo":"-378786108414252"},"conv.term":{"bits":"46","hi":"20893559340483","lo":"-21282774327726"},"rq.p":{"bits":"59","hi":"165019086896712328","lo":"-171968893220070408"},"rq.q":{"bits":"31","hi":"614744003","lo":"-640634050"},"rq.t":{"bits":"50","hi":"363478164970732","lo":"-378786108414252"},"rq.y":{"bits":"31","hi":"614723099","lo":"-640654954"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"614723099","lo":"-640654954","policy":"check","result":{"bits":"31","hi":"614723099","lo":"-640654954"},"tensor":"25"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"25","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"31","hi":"614723099","lo":"0","policy":"derived","result":{"bits":"31","hi":"614723099","lo":"0"},"tensor":"26"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"26","intermediates":{"conv.acc":{"bits":"48","hi":"111213244178684","lo":"-114871461340833"},"conv.term":{"bits":"46","hi":"18731842272728","lo":"-18843721876746"},"rq.p":{"bits":"59","hi":"202408104405204880","lo":"-209066059640316060"},"rq.q":{"bits":"29","hi":"188507236","lo":"-194707941"},"rq.t":{"bits":"48","hi":"111213244178684","lo":"-114871461340833"},"rq.y":{"bits":"29","hi":"188512631","lo":"-194723137"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"29","hi":"188512631","lo":"-194723137","policy":"check","result":{"bits":"29","hi":"188512631","lo":"-194723137"},"tensor":"27"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"27","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"31","hi":"770153802","lo":"-851072188","policy":"check","result":{"bits":"31","hi":"770153802","lo":"-851072188"},"tensor":"28"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"28","intermediates":{"convT.acc":{"bits":"49","hi":"247940084825522","lo":"-249954628963378"},"convT.term":{"bits":"46","hi":"27254735748512","lo":"-27568781385884"},"rq.p":{"bits":"60","hi":"451250954382450040","lo":"-454917424713347960"},"rq.q":{"bits":"30","hi":"420260200","lo":"-423674868"},"rq.t":{"bits":"49","hi":"247940084825522","lo":"-249954628963378"},"rq.y":{"bits":"30","hi":"420286380","lo":"-423648688"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"30","hi":"420286380","lo":"-423648688","policy":"check","result":{"bits":"30","hi":"420286380","lo":"-423648688"},"tensor":"29"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"29","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"30","hi":"423648688","lo":"0"},"exp.nl":{"bits":"30","hi":"423642876","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sig.num":{"bits":"34","hi":"4296081408","lo":"0"}},"npu_flags":[],"op":"sigmoid","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"30"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"30","intermediates":{"mul.p":{"bits":"48","hi":"82479383969792","lo":"-77517639057408"},"rq.p":{"bits":"48","hi":"82479383969792","lo":"-77517639057408"},"rq.q":{"bits":"32","hi":"1258535522","lo":"-1182825303"},"rq.t":{"bits":"48","hi":"82479383969792","lo":"-77517639057408"},"rq.y":{"bits":"32","hi":"1258535522","lo":"-1182825303"}},"mac":{"a_bits":["32","18"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"1258535522","lo":"-1182825303","policy":"check","result":{"bits":"32","hi":"1258535522","lo":"-1182825303"},"tensor":"31"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"31","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2085976415","lo":"-2010357731","policy":"check","result":{"bits":"32","hi":"2085976415","lo":"-2010357731"},"tensor":"32"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"32","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"33"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"33","intermediates":{"conv.acc":{"bits":"37","hi":"38843449344","lo":"-33023066112"},"conv.term":{"bits":"35","hi":"12559712256","lo":"-12199133184"},"rq.p":{"bits":"46","hi":"17634926002176","lo":"-14992472014848"},"rq.q":{"bits":"20","hi":"262780","lo":"-223406"},"rq.t":{"bits":"37","hi":"38843449344","lo":"-33023066112"},"rq.y":{"bits":"20","hi":"262780","lo":"-223406"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"262780","lo":"-223406","policy":"check","result":{"bits":"20","hi":"262780","lo":"-223406"},"tensor":"34"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"34","intermediates":{"conv.acc":{"bits":"36","hi":"21894111976","lo":"-21582584888"},"conv.term":{"bits":"34","hi":"8092310100","lo":"-6879787770"},"rq.p":{"bits":"48","hi":"89678282653696","lo":"-88402267701248"},"rq.q":{"bits":"19","hi":"167038","lo":"-164663"},"rq.t":{"bits":"36","hi":"21894111976","lo":"-21582584888"},"rq.y":{"bits":"19","hi":"167038","lo":"-164663"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"167038","lo":"-164663","policy":"check","result":{"bits":"19","hi":"167038","lo":"-164663"},"tensor":"35"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"35","intermediates":{"rq.p":{"bits":"19","hi":"167038","lo":"-164663"},"rq.q":{"bits":"19","hi":"167038","lo":"-164663"},"rq.t":{"bits":"19","hi":"167038","lo":"-164663"},"rq.y":{"bits":"19","hi":"232574","lo":"-99127"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"19","hi":"232574","lo":"-99127","policy":"check","result":{"bits":"19","hi":"232574","lo":"-99127"},"tensor":"36"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"36","intermediates":{"mul.p":{"bits":"50","hi":"485143878742210","lo":"-467556938929594"},"rq.p":{"bits":"50","hi":"485143878742210","lo":"-467556938929594"},"rq.q":{"bits":"34","hi":"7402708110","lo":"-7134352706"},"rq.t":{"bits":"50","hi":"485143878742210","lo":"-467556938929594"},"rq.y":{"bits":"34","hi":"7402708110","lo":"-7134352706"}},"mac":{"a_bits":["32","19"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"7402708110","lo":"-7134352706"},"tensor":"37"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"37","intermediates":{"conv.acc":{"bits":"49","hi":"230379898229332","lo":"-230379898210973"},"conv.term":{"bits":"47","hi":"68549825527808","lo":"-68549825495887"},"rq.p":{"bits":"63","hi":"3774544252589375488","lo":"-3774544252288581632"},"rq.q":{"bits":"32","hi":"1757659135","lo":"-1757659136"},"rq.t":{"bits":"49","hi":"230379898229332","lo":"-230379898210973"},"rq.y":{"bits":"32","hi":"1757623190","lo":"-1757695081"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1757623190","lo":"-1757695081","policy":"check","result":{"bits":"32","hi":"1757623190","lo":"-1757695081"},"tensor":"38"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"38","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"32","hi":"1757623190","lo":"-1757695081","policy":"derived","result":{"bits":"32","hi":"1757623190","lo":"-1757695081"},"tensor":"39"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"39","intermediates":{"conv.acc":{"bits":"52","hi":"1196044669893533","lo":"-1196045045883463"},"conv.term":{"bits":"47","hi":"57162001729201","lo":"-57159663761990"},"rq.p":{"bits":"58","hi":"133957003028075696","lo":"-133957045138947856"},"rq.q":{"bits":"32","hi":"1996114895","lo":"-1996115523"},"rq.t":{"bits":"52","hi":"1196044669893533","lo":"-1196045045883463"},"rq.y":{"bits":"32","hi":"1996062088","lo":"-1996168330"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1996062088","lo":"-1996168330","policy":"check","result":{"bits":"32","hi":"1996062088","lo":"-1996168330"},"tensor":"40"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"40","intermediates":{"ln.S":{"bits":"34","hi":"7984248352","lo":"-7984673320"},"ln.T":{"bits":"67","hi":"63751614841617818896","lo":"0"},"ln.d":{"bits":"33","hi":"3992230418","lo":"-3992230418"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"34","hi":"7984248354","lo":"-7984673322"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"16399240884","lo":"-16399240884"},"ln.v":{"bits":"65","hi":"15937903710404497673","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"19","hi":"261127","lo":"-239338","policy":"check","result":{"bits":"19","hi":"261127","lo":"-239338"},"tensor":"41"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"41","intermediates":{"conv.acc":{"bits":"36","hi":"23871006037","lo":"-22846901248"},"conv.term":{"bits":"34","hi":"7887341035","lo":"-8445630561"},"rq.p":{"bits":"49","hi":"195551281455104","lo":"-187161815023616"},"rq.q":{"bits":"20","hi":"364242","lo":"-348617"},"rq.t":{"bits":"36","hi":"23871006037","lo":"-22846901248"},"rq.y":{"bits":"20","hi":"364242","lo":"-348617"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"364242","lo":"-348617","policy":"check","result":{"bits":"20","hi":"364242","lo":"-348617"},"tensor":"42"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"42","intermediates":{"conv.acc":{"bits":"37","hi":"62089221879","lo":"-63418159379"},"conv.term":{"bits":"35","hi":"11824023804","lo":"-11600014974"},"rq.p":{"bits":"48","hi":"113002383819780","lo":"-115421050069780"},"rq.q":{"bits":"19","hi":"210483","lo":"-214989"},"rq.t":{"bits":"37","hi":"62089221879","lo":"-63418159379"},"rq.y":{"bits":"19","hi":"210483","lo":"-214989"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"210483","lo":"-214989","policy":"check","result":{"bits":"19","hi":"210483","lo":"-214989"},"tensor":"43"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"43","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"210483","lo":"-214989","policy":"derived","result":{"bits":"19","hi":"210483","lo":"-214989"},"tensor":"44"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"44","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"210483","lo":"-214989","policy":"derived","result":{"bits":"19","hi":"210483","lo":"-214989"},"tensor":"45"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"45","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"19","hi":"210483","lo":"-214989","policy":"derived","result":{"bits":"19","hi":"210483","lo":"-214989"},"tensor":"46"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"46","intermediates":{"l2.T":{"bits":"49","hi":"189318226458565","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"47"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"47","intermediates":{"l2.T":{"bits":"49","hi":"189318226458565","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"48"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"48","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"49"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"49","intermediates":{"rq.p":{"bits":"48","hi":"130791417872384","lo":"-130791417839616"},"rq.q":{"bits":"32","hi":"1995718656","lo":"-1995718656"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"1995718656","lo":"-1995718656"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"1995718656","lo":"-1995718656","policy":"check","result":{"bits":"32","hi":"1995718656","lo":"-1995718656"},"tensor":"50"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"50","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"3991437312","lo":"0"},"exp.nl":{"bits":"33","hi":"3991400916","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-3991437312"},"sm.num":{"bits":"34","hi":"4296114184","lo":"0"},"sm.sum":{"bits":"18","hi":"65553","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"51"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"51","intermediates":{"apply.acc":{"bits":"35","hi":"13794213888","lo":"-14089519104"},"apply.term":{"bits":"35","hi":"13794213888","lo":"-14089519104"},"rq.p":{"bits":"35","hi":"13794246656","lo":"-14089519104"},"rq.q":{"bits":"19","hi":"210483","lo":"-214989"},"rq.t":{"bits":"35","hi":"13794213888","lo":"-14089519104"},"rq.y":{"bits":"19","hi":"210483","lo":"-214989"}},"k_c":"0","mac":{"a_bits":["18","19"]},"npu_flags":[],"op":"apply","out":[{"bits":"19","hi":"210483","lo":"-214989","policy":"check","result":{"bits":"19","hi":"210483","lo":"-214989"},"tensor":"52"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"52","intermediates":{"conv.acc":{"bits":"35","hi":"11327020146","lo":"-11174492046"},"conv.term":{"bits":"34","hi":"5453195985","lo":"-5338901295"},"rq.p":{"bits":"49","hi":"185581898072064","lo":"-183082877681664"},"rq.q":{"bits":"20","hi":"345673","lo":"-341019"},"rq.t":{"bits":"35","hi":"11327020146","lo":"-11174492046"},"rq.y":{"bits":"20","hi":"345673","lo":"-341019"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"345673","lo":"-341019","policy":"check","result":{"bits":"20","hi":"345673","lo":"-341019"},"tensor":"53"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"53","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1996407761","lo":"-1996509349","policy":"check","result":{"bits":"32","hi":"1996407761","lo":"-1996509349"},"tensor":"54"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"54","intermediates":{"ln.S":{"bits":"34","hi":"7985631044","lo":"-7986037396"},"ln.T":{"bits":"67","hi":"63773548189323008400","lo":"0"},"ln.d":{"bits":"33","hi":"3992917110","lo":"-3992917110"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"34","hi":"7985631046","lo":"-7986037398"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"15564093138","lo":"-15564093138"},"ln.v":{"bits":"65","hi":"15943387047330795049","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"20","hi":"257973","lo":"-266655","policy":"check","result":{"bits":"20","hi":"257973","lo":"-266655"},"tensor":"55"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"55","intermediates":{"conv.acc":{"bits":"36","hi":"23190396660","lo":"-23412308580"},"conv.term":{"bits":"34","hi":"8435630925","lo":"-8160975855"},"rq.p":{"bits":"48","hi":"94987864719360","lo":"-95896815943680"},"rq.q":{"bits":"19","hi":"176928","lo":"-178622"},"rq.t":{"bits":"36","hi":"23190396660","lo":"-23412308580"},"rq.y":{"bits":"19","hi":"176928","lo":"-178622"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"176928","lo":"-178622","policy":"check","result":{"bits":"19","hi":"176928","lo":"-178622"},"tensor":"56"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"56","intermediates":{"conv.acc":{"bits":"36","hi":"31526732654","lo":"-31565259296"},"conv.term":{"bits":"34","hi":"5792268864","lo":"-5847727036"},"rq.p":{"bits":"45","hi":"14344663357570","lo":"-14362192979680"},"rq.q":{"bits":"16","hi":"26719","lo":"-26752"},"rq.t":{"bits":"36","hi":"31526732654","lo":"-31565259296"},"rq.y":{"bits":"16","hi":"26719","lo":"-26752"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"16","hi":"26719","lo":"-26752","policy":"check","result":{"bits":"16","hi":"26719","lo":"-26752"},"tensor":"57"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"57","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"16","hi":"26719","lo":"-26752","policy":"derived","result":{"bits":"16","hi":"26719","lo":"-26752"},"tensor":"58"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"58","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"16","hi":"26719","lo":"-26752","policy":"derived","result":{"bits":"16","hi":"26719","lo":"-26752"},"tensor":"59"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"59","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"16","hi":"26752","lo":"0"},"exp.nl":{"bits":"1","hi":"0","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"17","hi":"26719","lo":"-65536","policy":"derived","result":{"bits":"17","hi":"26719","lo":"-65536"},"tensor":"60"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"60","intermediates":{"mul.p":{"bits":"32","hi":"1753219072","lo":"-1751056384"},"rq.p":{"bits":"32","hi":"1753219072","lo":"-1751056384"},"rq.q":{"bits":"16","hi":"26752","lo":"-26719"},"rq.t":{"bits":"32","hi":"1753219072","lo":"-1751056384"},"rq.y":{"bits":"16","hi":"26752","lo":"-26719"}},"mac":{"a_bits":["17","16"]},"npu_flags":[],"op":"mul","out":[{"bits":"16","hi":"26752","lo":"-26719","policy":"check","result":{"bits":"16","hi":"26752","lo":"-26719"},"tensor":"61"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"61","intermediates":{"conv.acc":{"bits":"32","hi":"1204003218","lo":"-1203635499"},"conv.term":{"bits":"31","hi":"769387520","lo":"-768438440"},"rq.p":{"bits":"42","hi":"1232899295232","lo":"-1232522750976"},"rq.q":{"bits":"13","hi":"2296","lo":"-2296"},"rq.t":{"bits":"32","hi":"1204003218","lo":"-1203635499"},"rq.y":{"bits":"13","hi":"2296","lo":"-2296"}},"k_c":"2","mac":{"a_bits":["16"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"13","hi":"2296","lo":"-2296","policy":"check","result":{"bits":"13","hi":"2296","lo":"-2296"},"tensor":"62"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"62","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1996410057","lo":"-1996511645","policy":"check","result":{"bits":"32","hi":"1996410057","lo":"-1996511645"},"tensor":"63"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"63","intermediates":{"ln.S":{"bits":"34","hi":"7985640228","lo":"-7986046580"},"ln.T":{"bits":"67","hi":"63773694873210307216","lo":"0"},"ln.d":{"bits":"33","hi":"3992921702","lo":"-3992921702"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"34","hi":"7985640230","lo":"-7986046582"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"13902226830","lo":"-13902226830"},"ln.v":{"bits":"65","hi":"15943423718302619753","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"19","hi":"243764","lo":"-180499","policy":"check","result":{"bits":"19","hi":"243764","lo":"-180499"},"tensor":"64"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"64","intermediates":{"conv.acc":{"bits":"36","hi":"19279880986","lo":"-19936445156"},"conv.term":{"bits":"34","hi":"7741700876","lo":"-7311944944"},"rq.p":{"bits":"51","hi":"631763140149248","lo":"-653277434871808"},"rq.q":{"bits":"20","hi":"294187","lo":"-304207"},"rq.t":{"bits":"36","hi":"19279880986","lo":"-19936445156"},"rq.y":{"bits":"20","hi":"294187","lo":"-304207"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"294187","lo":"-304207","policy":"check","result":{"bits":"20","hi":"294187","lo":"-304207"},"tensor":"65"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"65","intermediates":{"conv.acc":{"bits":"37","hi":"55996242569","lo":"-56661600629"},"conv.term":{"bits":"35","hi":"9525775060","lo":"-9850222660"},"rq.p":{"bits":"47","hi":"50956580737790","lo":"-51562056572390"},"rq.q":{"bits":"16","hi":"23728","lo":"-24011"},"rq.t":{"bits":"37","hi":"55996242569","lo":"-56661600629"},"rq.y":{"bits":"16","hi":"23728","lo":"-24011"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"16","hi":"23728","lo":"-24011","policy":"check","result":{"bits":"16","hi":"23728","lo":"-24011"},"tensor":"66"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"66","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"16","hi":"23728","lo":"-24011","policy":"derived","result":{"bits":"16","hi":"23728","lo":"-24011"},"tensor":"67"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"67","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"16","hi":"23728","lo":"-24011","policy":"derived","result":{"bits":"16","hi":"23728","lo":"-24011"},"tensor":"68"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"68","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"16","hi":"23728","lo":"-24011","policy":"derived","result":{"bits":"16","hi":"23728","lo":"-24011"},"tensor":"69"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"69","intermediates":{"l2.T":{"bits":"43","hi":"2361459226565","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"70"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"70","intermediates":{"l2.T":{"bits":"43","hi":"2361459226565","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"71"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"71","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"72"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"72","intermediates":{"rq.p":{"bits":"48","hi":"134321880989696","lo":"-134321880956928"},"rq.q":{"bits":"32","hi":"2049589248","lo":"-2049589248"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"2049589248","lo":"-2049589248"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"2049589248","lo":"-2049589248","policy":"check","result":{"bits":"32","hi":"2049589248","lo":"-2049589248"},"tensor":"73"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"73","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"4099178496","lo":"0"},"exp.nl":{"bits":"33","hi":"4099151388","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-4099178496"},"sm.num":{"bits":"34","hi":"4296114184","lo":"0"},"sm.sum":{"bits":"18","hi":"65553","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"74"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"74","intermediates":{"apply.acc":{"bits":"32","hi":"1555038208","lo":"-1573584896"},"apply.term":{"bits":"32","hi":"1555038208","lo":"-1573584896"},"rq.p":{"bits":"32","hi":"1555070976","lo":"-1573584896"},"rq.q":{"bits":"16","hi":"23728","lo":"-24011"},"rq.t":{"bits":"32","hi":"1555038208","lo":"-1573584896"},"rq.y":{"bits":"16","hi":"23728","lo":"-24011"}},"k_c":"1","mac":{"a_bits":["18","16"]},"npu_flags":[],"op":"apply","out":[{"bits":"16","hi":"23728","lo":"-24011","policy":"check","result":{"bits":"16","hi":"23728","lo":"-24011"},"tensor":"75"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"75","intermediates":{"conv.acc":{"bits":"32","hi":"1794115828","lo":"-1806980159"},"conv.term":{"bits":"31","hi":"746293056","lo":"-755193972"},"rq.p":{"bits":"47","hi":"58789587451904","lo":"-59211125850112"},"rq.q":{"bits":"16","hi":"27376","lo":"-27573"},"rq.t":{"bits":"32","hi":"1794115828","lo":"-1806980159"},"rq.y":{"bits":"16","hi":"27376","lo":"-27573"}},"k_c":"2","mac":{"a_bits":["16"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"16","hi":"27376","lo":"-27573","policy":"check","result":{"bits":"16","hi":"27376","lo":"-27573"},"tensor":"76"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"76","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1996437433","lo":"-1996539218","policy":"check","result":{"bits":"32","hi":"1996437433","lo":"-1996539218"},"tensor":"77"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"77","intermediates":{"ln.S":{"bits":"34","hi":"7985749732","lo":"-7986156872"},"ln.T":{"bits":"67","hi":"63775450141724703204","lo":"0"},"ln.d":{"bits":"33","hi":"3992976651","lo":"-3992976651"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"34","hi":"7985749734","lo":"-7986156874"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"12218233914","lo":"-12218233914"},"ln.v":{"bits":"65","hi":"15943862535431218750","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"19","hi":"186523","lo":"-190676","policy":"check","result":{"bits":"19","hi":"186523","lo":"-190676"},"tensor":"78"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"78","intermediates":{"conv.acc":{"bits":"36","hi":"20111663757","lo":"-19915185327"},"conv.term":{"bits":"34","hi":"6133474892","lo":"-5999885341"},"rq.p":{"bits":"46","hi":"20594343687168","lo":"-20393149774848"},"rq.q":{"bits":"20","hi":"306879","lo":"-303882"},"rq.t":{"bits":"36","hi":"20111663757","lo":"-19915185327"},"rq.y":{"bits":"20","hi":"306879","lo":"-303882"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"306879","lo":"-303882","policy":"check","result":{"bits":"20","hi":"306879","lo":"-303882"},"tensor":"79"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"79","intermediates":{"conv.acc":{"bits":"37","hi":"47878278351","lo":"-48005701800"},"conv.term":{"bits":"35","hi":"9703820859","lo":"-9609052722"},"rq.p":{"bits":"47","hi":"43569233299410","lo":"-43685188638000"},"rq.q":{"bits":"21","hi":"649232","lo":"-650961"},"rq.t":{"bits":"37","hi":"47878278351","lo":"-48005701800"},"rq.y":{"bits":"21","hi":"649232","lo":"-650961"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"21","hi":"649232","lo":"-650961","policy":"check","result":{"bits":"21","hi":"649232","lo":"-650961"},"tensor":"80"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"80","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"649232","lo":"-650961","policy":"derived","result":{"bits":"21","hi":"649232","lo":"-650961"},"tensor":"81"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"81","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"649232","lo":"-650961","policy":"derived","result":{"bits":"21","hi":"649232","lo":"-650961"},"tensor":"82"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"82","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"21","hi":"650961","lo":"0"},"exp.nl":{"bits":"21","hi":"635964","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"21","hi":"649232","lo":"-65536","policy":"derived","result":{"bits":"21","hi":"649232","lo":"-65536"},"tensor":"83"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"83","intermediates":{"mul.p":{"bits":"40","hi":"421502189824","lo":"-422624711952"},"rq.p":{"bits":"40","hi":"421502189824","lo":"-422624711952"},"rq.q":{"bits":"24","hi":"6431613","lo":"-6448742"},"rq.t":{"bits":"40","hi":"421502189824","lo":"-422624711952"},"rq.y":{"bits":"24","hi":"6431613","lo":"-6448742"}},"mac":{"a_bits":["21","21"]},"npu_flags":[],"op":"mul","out":[{"bits":"24","hi":"6431613","lo":"-6448742","policy":"check","result":{"bits":"24","hi":"6431613","lo":"-6448742"},"tensor":"84"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"84","intermediates":{"conv.acc":{"bits":"39","hi":"190831173264","lo":"-190324291896"},"conv.term":{"bits":"39","hi":"169846036104","lo":"-170298378736"},"rq.p":{"bits":"50","hi":"390822242844672","lo":"-389784149803008"},"rq.q":{"bits":"24","hi":"5823705","lo":"-5808237"},"rq.t":{"bits":"39","hi":"190831173264","lo":"-190324291896"},"rq.y":{"bits":"24","hi":"5823705","lo":"-5808237"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"24","hi":"5823705","lo":"-5808237","policy":"check","result":{"bits":"24","hi":"5823705","lo":"-5808237"},"tensor":"85"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"85","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2002261138","lo":"-2002347455","policy":"check","result":{"bits":"32","hi":"2002261138","lo":"-2002347455"},"tensor":"86"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"86","intermediates":{"convT.acc":{"bits":"50","hi":"548104072760399","lo":"-548117483487421"},"convT.term":{"bits":"47","hi":"64451559881540","lo":"-64448781509944"},"rq.p":{"bits":"57","hi":"61387656149164688","lo":"-61389158150591152"},"rq.q":{"bits":"31","hi":"914747359","lo":"-914769742"},"rq.t":{"bits":"50","hi":"548104072760399","lo":"-548117483487421"},"rq.y":{"bits":"31","hi":"914701184","lo":"-914815917"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"914701184","lo":"-914815917","policy":"check","result":{"bits":"31","hi":"914701184","lo":"-914815917"},"tensor":"87"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"87","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"88"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"88","intermediates":{"conv.acc":{"bits":"37","hi":"36199464960","lo":"-61530046464"},"conv.term":{"bits":"35","hi":"12571508736","lo":"-12702449664"},"rq.p":{"bits":"47","hi":"32941513113600","lo":"-55992342282240"},"rq.q":{"bits":"20","hi":"245433","lo":"-417176"},"rq.t":{"bits":"37","hi":"36199464960","lo":"-61530046464"},"rq.y":{"bits":"20","hi":"245433","lo":"-417176"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"245433","lo":"-417176","policy":"check","result":{"bits":"20","hi":"245433","lo":"-417176"},"tensor":"89"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"89","intermediates":{"conv.acc":{"bits":"37","hi":"29568627081","lo":"-36914246934"},"conv.term":{"bits":"35","hi":"12007159632","lo":"-12768505832"},"rq.p":{"bits":"48","hi":"60556548261888","lo":"-75600377720832"},"rq.q":{"bits":"21","hi":"451181","lo":"-563267"},"rq.t":{"bits":"37","hi":"29568627081","lo":"-36914246934"},"rq.y":{"bits":"21","hi":"451181","lo":"-563267"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"21","hi":"451181","lo":"-563267","policy":"check","result":{"bits":"21","hi":"451181","lo":"-563267"},"tensor":"90"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"90","intermediates":{"rq.p":{"bits":"21","hi":"451181","lo":"-563267"},"rq.q":{"bits":"21","hi":"451181","lo":"-563267"},"rq.t":{"bits":"21","hi":"451181","lo":"-563267"},"rq.y":{"bits":"20","hi":"516717","lo":"-497731"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"20","hi":"516717","lo":"-497731","policy":"check","result":{"bits":"20","hi":"516717","lo":"-497731"},"tensor":"91"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"91","intermediates":{"mul.p":{"bits":"50","hi":"472641651692928","lo":"-472700936184489"},"rq.p":{"bits":"50","hi":"472641651692928","lo":"-472700936184489"},"rq.q":{"bits":"34","hi":"7211939265","lo":"-7212843875"},"rq.t":{"bits":"50","hi":"472641651692928","lo":"-472700936184489"},"rq.y":{"bits":"34","hi":"7211939265","lo":"-7212843875"}},"mac":{"a_bits":["31","20"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"7211939265","lo":"-7212843875"},"tensor":"92"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"92","intermediates":{"convT.acc":{"bits":"51","hi":"689593506467716","lo":"-689593506400799"},"convT.term":{"bits":"47","hi":"69728794050560","lo":"-69728794018090"},"rq.p":{"bits":"61","hi":"627530090885621560","lo":"-627530090824727090"},"rq.q":{"bits":"31","hi":"584432939","lo":"-584432940"},"rq.t":{"bits":"51","hi":"689593506467716","lo":"-689593506400799"},"rq.y":{"bits":"31","hi":"584370665","lo":"-584495214"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"584370665","lo":"-584495214","policy":"check","result":{"bits":"31","hi":"584370665","lo":"-584495214"},"tensor":"93"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"93","intermediates":{"rq.p":{"bits":"38","hi":"74799445120","lo":"-74815387392"},"rq.q":{"bits":"38","hi":"74799445120","lo":"-74815387392"},"rq.t":{"bits":"31","hi":"584370665","lo":"-584495214"},"rq.y":{"bits":"38","hi":"74807800960","lo":"-74807031552"}},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"rescale","out":[{"bits":"25","hi":"16711680","lo":"0","policy":"clamp","result":{"bits":"38","hi":"74807800960","lo":"-74807031552"},"tensor":"94"}],"saturated":false}],"scalars":[]},{"graph_sha256":"e84f2be89add6bec74649db7fe4a3ffb39a546c587ba87beeb742ff472b3b989","inputs":[{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"0"},{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"1"}],"name":"syn_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"58","hi":"82313731108483473","lo":"-82313731108466337"},"conv.term":{"bits":"47","hi":"70360154243072","lo":"-70360154210308"},"rq.p":{"bits":"62","hi":"2304784471037537244","lo":"-2304784471037057436"},"rq.q":{"bits":"32","hi":"2146497807","lo":"-2146497808"},"rq.t":{"bits":"58","hi":"82313731108483473","lo":"-82313731108466337"},"rq.y":{"bits":"32","hi":"2146503663","lo":"-2146491952"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2146503663","lo":"-2146491952","policy":"check","result":{"bits":"32","hi":"2146503663","lo":"-2146491952"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"3","intermediates":{"convT.acc":{"bits":"55","hi":"13933765110879034","lo":"-13933765110508391"},"convT.term":{"bits":"47","hi":"70349416792073","lo":"-70349416824832"},"rq.p":{"bits":"61","hi":"1031098618205048516","lo":"-1031098618177620934"},"rq.q":{"bits":"31","hi":"960285419","lo":"-960285420"},"rq.t":{"bits":"55","hi":"13933765110879034","lo":"-13933765110508391"},"rq.y":{"bits":"31","hi":"960238088","lo":"-960332751"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"960238088","lo":"-960332751","policy":"check","result":{"bits":"31","hi":"960238088","lo":"-960332751"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"50","hi":"553318561936180","lo":"-553298990928908"},"conv.term":{"bits":"46","hi":"30981294880011","lo":"-30978240956968"},"rq.p":{"bits":"59","hi":"251759945680961900","lo":"-251751040872653140"},"rq.q":{"bits":"30","hi":"468939441","lo":"-468922856"},"rq.t":{"bits":"50","hi":"553318561936180","lo":"-553298990928908"},"rq.y":{"bits":"30","hi":"468923572","lo":"-468938725"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"468923572","lo":"-468938725","policy":"check","result":{"bits":"30","hi":"468923572","lo":"-468938725"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"30","hi":"468923572","lo":"0","policy":"derived","result":{"bits":"30","hi":"468923572","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"48","hi":"106284341135232","lo":"-100827946451440"},"conv.term":{"bits":"45","hi":"15222665917836","lo":"-15339896810836"},"rq.p":{"bits":"60","hi":"386875001732244480","lo":"-367013725083241600"},"rq.q":{"bits":"30","hi":"360305422","lo":"-341808168"},"rq.t":{"bits":"48","hi":"106284341135232","lo":"-100827946451440"},"rq.y":{"bits":"30","hi":"360370766","lo":"-341788770"}},"k_c":"0","mac":{"a_bits":["30"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"360370766","lo":"-341788770","policy":"check","result":{"bits":"30","hi":"360370766","lo":"-341788770"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"7","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1320608854","lo":"-1302121521","policy":"check","result":{"bits":"32","hi":"1320608854","lo":"-1302121521"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"8","intermediates":{"conv.acc":{"bits":"51","hi":"710861179909525","lo":"-712890626889600"},"conv.term":{"bits":"47","hi":"43162779784136","lo":"-42839230614906"},"rq.p":{"bits":"59","hi":"161365487839462175","lo":"-161826172303939200"},"rq.q":{"bits":"31","hi":"601133286","lo":"-602849470"},"rq.t":{"bits":"51","hi":"710861179909525","lo":"-712890626889600"},"rq.y":{"bits":"31","hi":"601156034","lo":"-602826722"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"601156034","lo":"-602826722","policy":"check","result":{"bits":"31","hi":"601156034","lo":"-602826722"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"31","hi":"601156034","lo":"0","policy":"derived","result":{"bits":"31","hi":"601156034","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"10","intermediates":{"conv.acc":{"bits":"48","hi":"91797127547834","lo":"-119893958264926"},"conv.term":{"bits":"46","hi":"18861270566750","lo":"-19016969979556"},"rq.p":{"bits":"59","hi":"167070772137057880","lo":"-218207004042165320"},"rq.q":{"bits":"30","hi":"311193563","lo":"-406442218"},"rq.t":{"bits":"48","hi":"91797127547834","lo":"-119893958264926"},"rq.y":{"bits":"30","hi":"311153628","lo":"-406507499"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"311153628","lo":"-406507499","policy":"check","result":{"bits":"30","hi":"311153628","lo":"-406507499"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"11","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1631762482","lo":"-1708629020","policy":"check","result":{"bits":"32","hi":"1631762482","lo":"-1708629020"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"12","intermediates":{"conv.acc":{"bits":"51","hi":"652663020797772","lo":"-652666393924451"},"conv.term":{"bits":"46","hi":"31460500922760","lo":"-31457399762880"},"rq.p":{"bits":"62","hi":"1187846697851945040","lo":"-1187852836942500820"},"rq.q":{"bits":"32","hi":"1106268444","lo":"-1106274163"},"rq.t":{"bits":"51","hi":"652663020797772","lo":"-652666393924451"},"rq.y":{"bits":"32","hi":"1106251768","lo":"-1106290839"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1106251768","lo":"-1106290839","policy":"check","result":{"bits":"32","hi":"1106251768","lo":"-1106290839"},"tensor":"14"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"13","intermediates":{"conv.acc":{"bits":"51","hi":"668185720844980","lo":"-668183376155199"},"conv.term":{"bits":"46","hi":"34969853420790","lo":"-34968618386480"},"rq.p":{"bits":"59","hi":"151009972910965480","lo":"-151009443011074974"},"rq.q":{"bits":"32","hi":"1125111974","lo":"-1125108027"},"rq.t":{"bits":"51","hi":"668185720844980","lo":"-668183376155199"},"rq.y":{"bits":"32","hi":"1125049334","lo":"-1125170667"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1125049334","lo":"-1125170667","policy":"check","result":{"bits":"32","hi":"1125049334","lo":"-1125170667"},"tensor":"15"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"14","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"1125049334","lo":"0","policy":"derived","result":{"bits":"32","hi":"1125049334","lo":"0"},"tensor":"16"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"15","intermediates":{"conv.acc":{"bits":"49","hi":"179706380218488","lo":"-176866755699472"},"conv.term":{"bits":"47","hi":"36318842600188","lo":"-36371719918886"},"rq.p":{"bits":"61","hi":"654310930375514808","lo":"-643971857501777552"},"rq.q":{"bits":"30","hi":"304687270","lo":"-299872765"},"rq.t":{"bits":"49","hi":"179706380218488","lo":"-176866755699472"},"rq.y":{"bits":"30","hi":"304749174","lo":"-299840177"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"30","hi":"304749174","lo":"-299840177","policy":"check","result":{"bits":"30","hi":"304749174","lo":"-299840177"},"tensor":"17"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"16","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1411000942","lo":"-1406131016","policy":"check","result":{"bits":"32","hi":"1411000942","lo":"-1406131016"},"tensor":"18"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"17","intermediates":{"conv.acc":{"bits":"51","hi":"812626393346712","lo":"-811698088052592"},"conv.term":{"bits":"47","hi":"46135497800574","lo":"-45976265830152"},"rq.p":{"bits":"61","hi":"739490017945507920","lo":"-738645260127858720"},"rq.q":{"bits":"31","hi":"688703747","lo":"-687917006"},"rq.t":{"bits":"51","hi":"812626393346712","lo":"-811698088052592"},"rq.y":{"bits":"31","hi":"688639064","lo":"-687981689"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"688639064","lo":"-687981689","policy":"check","result":{"bits":"31","hi":"688639064","lo":"-687981689"},"tensor":"19"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"18","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"31","hi":"688639064","lo":"0","policy":"derived","result":{"bits":"31","hi":"688639064","lo":"0"},"tensor":"20"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"19","intermediates":{"conv.acc":{"bits":"48","hi":"129626662851104","lo":"-127164778197304"},"conv.term":{"bits":"46","hi":"22408315142560","lo":"-21218346839968"},"rq.p":{"bits":"58","hi":"117960263194504640","lo":"-115719948159546640"},"rq.q":{"bits":"29","hi":"219718112","lo":"-215545201"},"rq.t":{"bits":"48","hi":"129626662851104","lo":"-127164778197304"},"rq.y":{"bits":"29","hi":"219740269","lo":"-215513209"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"29","hi":"219740269","lo":"-215513209","policy":"check","result":{"bits":"29","hi":"219740269","lo":"-215513209"},"tensor":"21"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"20","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"1630741211","lo":"-1621644225","policy":"check","result":{"bits":"32","hi":"1630741211","lo":"-1621644225"},"tensor":"22"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"21","intermediates":{"convT.acc":{"bits":"50","hi":"537669038545556","lo":"-535819803231476"},"convT.term":{"bits":"47","hi":"53033334922931","lo":"-52762631881905"},"rq.p":{"bits":"59","hi":"244101743499682424","lo":"-243262190667090104"},"rq.q":{"bits":"31","hi":"909349856","lo":"-906222279"},"rq.t":{"bits":"50","hi":"537669038545556","lo":"-535819803231476"},"rq.y":{"bits":"31","hi":"909338613","lo":"-906233522"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"909338613","lo":"-906233522","policy":"check","result":{"bits":"31","hi":"909338613","lo":"-906233522"},"tensor":"23"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"22","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"31","hi":"909338613","lo":"0"},"exp.nl":{"bits":"31","hi":"909337668","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sig.num":{"bits":"34","hi":"4296081408","lo":"0"}},"npu_flags":[],"op":"sigmoid","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"24"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"23","intermediates":{"mul.p":{"bits":"48","hi":"106939186020352","lo":"-111976711454720"},"rq.p":{"bits":"48","hi":"106939186020352","lo":"-111976711454720"},"rq.q":{"bits":"32","hi":"1631762482","lo":"-1708629020"},"rq.t":{"bits":"48","hi":"106939186020352","lo":"-111976711454720"},"rq.y":{"bits":"32","hi":"1631762482","lo":"-1708629020"}},"mac":{"a_bits":["32","18"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"1631762482","lo":"-1708629020","policy":"check","result":{"bits":"32","hi":"1631762482","lo":"-1708629020"},"tensor":"25"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"24","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2592000570","lo":"-2668961771"},"tensor":"26"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"25","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"27"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"26","intermediates":{"conv.acc":{"bits":"37","hi":"36017799168","lo":"-46911062016"},"conv.term":{"bits":"35","hi":"12027297792","lo":"-11629363200"},"rq.p":{"bits":"51","hi":"524563227082752","lo":"-683212707201024"},"rq.q":{"bits":"20","hi":"244268","lo":"-318146"},"rq.t":{"bits":"37","hi":"36017799168","lo":"-46911062016"},"rq.y":{"bits":"20","hi":"244268","lo":"-318146"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"244268","lo":"-318146","policy":"check","result":{"bits":"20","hi":"244268","lo":"-318146"},"tensor":"28"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"27","intermediates":{"conv.acc":{"bits":"36","hi":"19283918086","lo":"-16255584988"},"conv.term":{"bits":"35","hi":"8763331570","lo":"-6728362060"},"rq.p":{"bits":"49","hi":"157973856960512","lo":"-133165752221696"},"rq.q":{"bits":"19","hi":"147124","lo":"-124021"},"rq.t":{"bits":"36","hi":"19283918086","lo":"-16255584988"},"rq.y":{"bits":"19","hi":"147124","lo":"-124021"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"147124","lo":"-124021","policy":"check","result":{"bits":"19","hi":"147124","lo":"-124021"},"tensor":"29"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"28","intermediates":{"rq.p":{"bits":"19","hi":"147124","lo":"-124021"},"rq.q":{"bits":"19","hi":"147124","lo":"-124021"},"rq.t":{"bits":"19","hi":"147124","lo":"-124021"},"rq.y":{"bits":"19","hi":"212660","lo":"-58485"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"19","hi":"212660","lo":"-58485","policy":"check","result":{"bits":"19","hi":"212660","lo":"-58485"},"tensor":"30"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"29","intermediates":{"mul.p":{"bits":"50","hi":"456683872371020","lo":"-456683872583680"},"rq.p":{"bits":"50","hi":"456683872371020","lo":"-456683872583680"},"rq.q":{"bits":"34","hi":"6968442876","lo":"-6968442880"},"rq.t":{"bits":"50","hi":"456683872371020","lo":"-456683872583680"},"rq.y":{"bits":"34","hi":"6968442876","lo":"-6968442880"}},"mac":{"a_bits":["32","19"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"6968442876","lo":"-6968442880"},"tensor":"31"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"30","intermediates":{"conv.acc":{"bits":"49","hi":"233987670774737","lo":"-233987670721168"},"conv.term":{"bits":"47","hi":"68713034285056","lo":"-68713034253059"},"rq.p":{"bits":"59","hi":"239603374873330688","lo":"-239603374818476032"},"rq.q":{"bits":"33","hi":"3570368511","lo":"-3570368511"},"rq.t":{"bits":"49","hi":"233987670774737","lo":"-233987670721168"},"rq.y":{"bits":"33","hi":"3570415939","lo":"-3570321083"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3570415939","lo":"-3570321083"},"tensor":"32"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"31","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"33"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"32","intermediates":{"ln.S":{"bits":"34","hi":"8589934588","lo":"-8589934592"},"ln.T":{"bits":"67","hi":"73786976260478468100","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"35","hi":"8589934590","lo":"-8589934594"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"14038015716","lo":"-14038015716"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"19","hi":"241728","lo":"-186679","policy":"check","result":{"bits":"19","hi":"241728","lo":"-186679"},"tensor":"34"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"33","intermediates":{"conv.acc":{"bits":"36","hi":"25981785532","lo":"-26349843146"},"conv.term":{"bits":"34","hi":"7751008320","lo":"-7830536832"},"rq.p":{"bits":"47","hi":"53210696769536","lo":"-53964478763008"},"rq.q":{"bits":"19","hi":"198225","lo":"-201034"},"rq.t":{"bits":"36","hi":"25981785532","lo":"-26349843146"},"rq.y":{"bits":"19","hi":"198225","lo":"-201034"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"198225","lo":"-201034","policy":"check","result":{"bits":"19","hi":"198225","lo":"-201034"},"tensor":"35"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"34","intermediates":{"conv.acc":{"bits":"37","hi":"37595055721","lo":"-37639713203"},"conv.term":{"bits":"34","hi":"6528780184","lo":"-6437555100"},"rq.p":{"bits":"46","hi":"34211500706110","lo":"-34252139014730"},"rq.q":{"bits":"18","hi":"127447","lo":"-127600"},"rq.t":{"bits":"37","hi":"37595055721","lo":"-37639713203"},"rq.y":{"bits":"18","hi":"127447","lo":"-127600"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"18","hi":"127447","lo":"-127600","policy":"check","result":{"bits":"18","hi":"127447","lo":"-127600"},"tensor":"36"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"35","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"127447","lo":"-127600","policy":"derived","result":{"bits":"18","hi":"127447","lo":"-127600"},"tensor":"37"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"36","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"127447","lo":"-127600","policy":"derived","result":{"bits":"18","hi":"127447","lo":"-127600"},"tensor":"38"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"37","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"127447","lo":"-127600","policy":"derived","result":{"bits":"18","hi":"127447","lo":"-127600"},"tensor":"39"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"38","intermediates":{"l2.T":{"bits":"47","hi":"66690089002949","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"40"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"39","intermediates":{"l2.T":{"bits":"47","hi":"66690089002949","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"41"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"40","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"42"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"41","intermediates":{"rq.p":{"bits":"48","hi":"70832600678400","lo":"-70832600645632"},"rq.q":{"bits":"32","hi":"1080819712","lo":"-1080819712"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"1080819712","lo":"-1080819712"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"1080819712","lo":"-1080819712","policy":"check","result":{"bits":"32","hi":"1080819712","lo":"-1080819712"},"tensor":"43"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"42","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"2161639424","lo":"0"},"exp.nl":{"bits":"33","hi":"2161596210","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-2161639424"},"sm.num":{"bits":"34","hi":"4296114184","lo":"0"},"sm.sum":{"bits":"18","hi":"65553","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"44"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"43","intermediates":{"apply.acc":{"bits":"34","hi":"8352366592","lo":"-8362393600"},"apply.term":{"bits":"34","hi":"8352366592","lo":"-8362393600"},"rq.p":{"bits":"34","hi":"8352399360","lo":"-8362393600"},"rq.q":{"bits":"18","hi":"127447","lo":"-127600"},"rq.t":{"bits":"34","hi":"8352366592","lo":"-8362393600"},"rq.y":{"bits":"18","hi":"127447","lo":"-127600"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"apply","out":[{"bits":"18","hi":"127447","lo":"-127600","policy":"check","result":{"bits":"18","hi":"127447","lo":"-127600"},"tensor":"45"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"44","intermediates":{"conv.acc":{"bits":"35","hi":"11591021253","lo":"-11591220765"},"conv.term":{"bits":"33","hi":"3462352649","lo":"-3466509200"},"rq.p":{"bits":"46","hi":"23738411526144","lo":"-23738820126720"},"rq.q":{"bits":"18","hi":"88432","lo":"-88434"},"rq.t":{"bits":"35","hi":"11591021253","lo":"-11591220765"},"rq.y":{"bits":"18","hi":"88432","lo":"-88434"}},"k_c":"0","mac":{"a_bits":["18"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"18","hi":"88432","lo":"-88434","policy":"check","result":{"bits":"18","hi":"88432","lo":"-88434"},"tensor":"46"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"45","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2147572079","lo":"-2147572082"},"tensor":"47"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"46","intermediates":{"ln.S":{"bits":"34","hi":"8589934588","lo":"-8589934592"},"ln.T":{"bits":"67","hi":"73786976260478468100","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"35","hi":"8589934590","lo":"-8589934594"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"34","hi":"5261654700","lo":"-5261654700"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"18","hi":"77531","lo":"-88263","policy":"check","result":{"bits":"18","hi":"77531","lo":"-88263"},"tensor":"48"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"47","intermediates":{"conv.acc":{"bits":"34","hi":"5405314383","lo":"-4932048177"},"conv.term":{"bits":"33","hi":"2624941620","lo":"-2467303902"},"rq.p":{"bits":"46","hi":"22140167712768","lo":"-20201669332992"},"rq.q":{"bits":"17","hi":"41239","lo":"-37629"},"rq.t":{"bits":"34","hi":"5405314383","lo":"-4932048177"},"rq.y":{"bits":"17","hi":"41239","lo":"-37629"}},"k_c":"0","mac":{"a_bits":["18"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"17","hi":"41239","lo":"-37629","policy":"check","result":{"bits":"17","hi":"41239","lo":"-37629"},"tensor":"49"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"48","intermediates":{"conv.acc":{"bits":"34","hi":"6002341382","lo":"-6224406922"},"conv.term":{"bits":"32","hi":"1205086058","lo":"-1295028317"},"rq.p":{"bits":"47","hi":"43709049943724","lo":"-45326131206004"},"rq.q":{"bits":"18","hi":"81414","lo":"-84427"},"rq.t":{"bits":"34","hi":"6002341382","lo":"-6224406922"},"rq.y":{"bits":"18","hi":"81414","lo":"-84427"}},"k_c":"1","mac":{"a_bits":["17"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"18","hi":"81414","lo":"-84427","policy":"check","result":{"bits":"18","hi":"81414","lo":"-84427"},"tensor":"50"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"49","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"81414","lo":"-84427","policy":"derived","result":{"bits":"18","hi":"81414","lo":"-84427"},"tensor":"51"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"50","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"18","hi":"81414","lo":"-84427","policy":"derived","result":{"bits":"18","hi":"81414","lo":"-84427"},"tensor":"52"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"51","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"18","hi":"84427","lo":"0"},"exp.nl":{"bits":"17","hi":"45426","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"18","hi":"81414","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"81414","lo":"-65536"},"tensor":"53"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"52","intermediates":{"mul.p":{"bits":"34","hi":"6628239396","lo":"-6873539778"},"rq.p":{"bits":"34","hi":"6628239396","lo":"-6873539778"},"rq.q":{"bits":"18","hi":"101138","lo":"-104882"},"rq.t":{"bits":"34","hi":"6628239396","lo":"-6873539778"},"rq.y":{"bits":"18","hi":"101138","lo":"-104882"}},"mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"mul","out":[{"bits":"18","hi":"101138","lo":"-104882","policy":"check","result":{"bits":"18","hi":"101138","lo":"-104882"},"tensor":"54"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"53","intermediates":{"conv.acc":{"bits":"34","hi":"4530482872","lo":"-4368757048"},"conv.term":{"bits":"33","hi":"3042635592","lo":"-3155270088"},"rq.p":{"bits":"47","hi":"37113715687424","lo":"-35788857737216"},"rq.q":{"bits":"18","hi":"69129","lo":"-66662"},"rq.t":{"bits":"34","hi":"4530482872","lo":"-4368757048"},"rq.y":{"bits":"18","hi":"69129","lo":"-66662"}},"k_c":"0","mac":{"a_bits":["18"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"18","hi":"69129","lo":"-66662","policy":"check","result":{"bits":"18","hi":"69129","lo":"-66662"},"tensor":"55"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"54","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2147552776","lo":"-2147550310"},"tensor":"56"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"55","intermediates":{"ln.S":{"bits":"34","hi":"8589934588","lo":"-8589934592"},"ln.T":{"bits":"67","hi":"73786976260478468100","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"35","hi":"8589934590","lo":"-8589934594"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"14157868176","lo":"-14157868176"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"19","hi":"185223","lo":"-246840","policy":"check","result":{"bits":"19","hi":"185223","lo":"-246840"},"tensor":"57"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"56","intermediates":{"conv.acc":{"bits":"36","hi":"22184543625","lo":"-22066916772"},"conv.term":{"bits":"34","hi":"7975153560","lo":"-7713009480"},"rq.p":{"bits":"48","hi":"90867890688000","lo":"-90386091098112"},"rq.q":{"bits":"20","hi":"338509","lo":"-336715"},"rq.t":{"bits":"36","hi":"22184543625","lo":"-22066916772"},"rq.y":{"bits":"20","hi":"338509","lo":"-336715"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"338509","lo":"-336715","policy":"check","result":{"bits":"20","hi":"338509","lo":"-336715"},"tensor":"58"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"57","intermediates":{"conv.acc":{"bits":"38","hi":"69514102190","lo":"-69545579714"},"conv.term":{"bits":"35","hi":"10928085325","lo":"-10986309595"},"rq.p":{"bits":"49","hi":"253031331971600","lo":"-253145910158960"},"rq.q":{"bits":"21","hi":"942615","lo":"-943043"},"rq.t":{"bits":"38","hi":"69514102190","lo":"-69545579714"},"rq.y":{"bits":"21","hi":"942615","lo":"-943043"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"21","hi":"942615","lo":"-943043","policy":"check","result":{"bits":"21","hi":"942615","lo":"-943043"},"tensor":"59"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"58","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"942615","lo":"-943043","policy":"derived","result":{"bits":"21","hi":"942615","lo":"-943043"},"tensor":"60"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"59","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"942615","lo":"-943043","policy":"derived","result":{"bits":"21","hi":"942615","lo":"-943043"},"tensor":"61"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"60","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"942615","lo":"-943043","policy":"derived","result":{"bits":"21","hi":"942615","lo":"-943043"},"tensor":"62"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"61","intermediates":{"l2.T":{"bits":"53","hi":"3642696089024453","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"63"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"62","intermediates":{"l2.T":{"bits":"53","hi":"3642696089024453","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"64"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"63","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"65"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"64","intermediates":{"rq.p":{"bits":"48","hi":"132967624114176","lo":"-132967624081408"},"rq.q":{"bits":"32","hi":"2028924928","lo":"-2028924928"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"2028924928","lo":"-2028924928"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"2028924928","lo":"-2028924928","policy":"check","result":{"bits":"32","hi":"2028924928","lo":"-2028924928"},"tensor":"66"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"65","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"4057849856","lo":"0"},"exp.nl":{"bits":"33","hi":"4057813728","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-4057849856"},"sm.num":{"bits":"34","hi":"4296114184","lo":"0"},"sm.sum":{"bits":"18","hi":"65553","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"67"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"66","intermediates":{"apply.acc":{"bits":"37","hi":"61775216640","lo":"-61803266048"},"apply.term":{"bits":"37","hi":"61775216640","lo":"-61803266048"},"rq.p":{"bits":"37","hi":"61775249408","lo":"-61803266048"},"rq.q":{"bits":"21","hi":"942615","lo":"-943043"},"rq.t":{"bits":"37","hi":"61775216640","lo":"-61803266048"},"rq.y":{"bits":"21","hi":"942615","lo":"-943043"}},"k_c":"0","mac":{"a_bits":["18","21"]},"npu_flags":[],"op":"apply","out":[{"bits":"21","hi":"942615","lo":"-943043","policy":"check","result":{"bits":"21","hi":"942615","lo":"-943043"},"tensor":"68"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"67","intermediates":{"conv.acc":{"bits":"38","hi":"85900499031","lo":"-85915000955"},"conv.term":{"bits":"36","hi":"27922141530","lo":"-27934819746"},"rq.p":{"bits":"49","hi":"175924222015488","lo":"-175953921955840"},"rq.q":{"bits":"21","hi":"655368","lo":"-655480"},"rq.t":{"bits":"38","hi":"85900499031","lo":"-85915000955"},"rq.y":{"bits":"21","hi":"655368","lo":"-655480"}},"k_c":"0","mac":{"a_bits":["21"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"21","hi":"655368","lo":"-655480","policy":"check","result":{"bits":"21","hi":"655368","lo":"-655480"},"tensor":"69"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"68","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2148139015","lo":"-2148139128"},"tensor":"70"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"69","intermediates":{"ln.S":{"bits":"34","hi":"8589934588","lo":"-8589934592"},"ln.T":{"bits":"67","hi":"73786976260478468100","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"35","hi":"8631431861","lo":"-8631431861"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"35","hi":"8589934590","lo":"-8589934594"},"ln.n":{"bits":"19","hi":"131706","lo":"-131706"},"ln.ng":{"bits":"35","hi":"15775481268","lo":"-15775481268"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"20","hi":"209117","lo":"-272312","policy":"check","result":{"bits":"20","hi":"209117","lo":"-272312"},"tensor":"71"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"70","intermediates":{"conv.acc":{"bits":"36","hi":"19826492096","lo":"-15225390536"},"conv.term":{"bits":"34","hi":"7935443992","lo":"-6093878497"},"rq.p":{"bits":"49","hi":"162418623250432","lo":"-124726399270912"},"rq.q":{"bits":"20","hi":"302528","lo":"-232322"},"rq.t":{"bits":"36","hi":"19826492096","lo":"-15225390536"},"rq.y":{"bits":"20","hi":"302528","lo":"-232322"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"302528","lo":"-232322","policy":"check","result":{"bits":"20","hi":"302528","lo":"-232322"},"tensor":"72"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"71","intermediates":{"conv.acc":{"bits":"37","hi":"49601554250","lo":"-45884146550"},"conv.term":{"bits":"35","hi":"9769536704","lo":"-9512690432"},"rq.p":{"bits":"50","hi":"361198518048500","lo":"-334128355177100"},"rq.q":{"bits":"21","hi":"672784","lo":"-622363"},"rq.t":{"bits":"37","hi":"49601554250","lo":"-45884146550"},"rq.y":{"bits":"21","hi":"672784","lo":"-622363"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"21","hi":"672784","lo":"-622363","policy":"check","result":{"bits":"21","hi":"672784","lo":"-622363"},"tensor":"73"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"72","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"672784","lo":"-622363","policy":"derived","result":{"bits":"21","hi":"672784","lo":"-622363"},"tensor":"74"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"73","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"21","hi":"672784","lo":"-622363","policy":"derived","result":{"bits":"21","hi":"672784","lo":"-622363"},"tensor":"75"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"74","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"21","hi":"622363","lo":"0"},"exp.nl":{"bits":"21","hi":"590538","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"21","hi":"672784","lo":"-65536","policy":"derived","result":{"bits":"21","hi":"672784","lo":"-65536"},"tensor":"76"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"75","intermediates":{"mul.p":{"bits":"40","hi":"452638310656","lo":"-418715868592"},"rq.p":{"bits":"40","hi":"452638310656","lo":"-418715868592"},"rq.q":{"bits":"24","hi":"6906712","lo":"-6389098"},"rq.t":{"bits":"40","hi":"452638310656","lo":"-418715868592"},"rq.y":{"bits":"24","hi":"6906712","lo":"-6389098"}},"mac":{"a_bits":["21","21"]},"npu_flags":[],"op":"mul","out":[{"bits":"24","hi":"6906712","lo":"-6389098","policy":"check","result":{"bits":"24","hi":"6906712","lo":"-6389098"},"tensor":"77"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"76","intermediates":{"conv.acc":{"bits":"40","hi":"356724768088","lo":"-329990522602"},"conv.term":{"bits":"39","hi":"224827289024","lo":"-207977918096"},"rq.p":{"bits":"55","hi":"11689513925475672","lo":"-10813459435144938"},"rq.q":{"bits":"26","hi":"21773416","lo":"-20141638"},"rq.t":{"bits":"40","hi":"356724768088","lo":"-329990522602"},"rq.y":{"bits":"26","hi":"21773416","lo":"-20141638"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"26","hi":"21773416","lo":"-20141638","policy":"check","result":{"bits":"26","hi":"21773416","lo":"-20141638"},"tensor":"78"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"77","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2169257063","lo":"-2167625286"},"tensor":"79"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"78","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"80"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"79","intermediates":{"conv.acc":{"bits":"37","hi":"41761898496","lo":"-40861433856"},"conv.term":{"bits":"35","hi":"11680481280","lo":"-12267552768"},"rq.p":{"bits":"48","hi":"76006655262720","lo":"-74367809617920"},"rq.q":{"bits":"20","hi":"283146","lo":"-277042"},"rq.t":{"bits":"37","hi":"41761898496","lo":"-40861433856"},"rq.y":{"bits":"20","hi":"283146","lo":"-277042"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"20","hi":"283146","lo":"-277042","policy":"check","result":{"bits":"20","hi":"283146","lo":"-277042"},"tensor":"81"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"80","intermediates":{"conv.acc":{"bits":"36","hi":"20137701132","lo":"-20468086236"},"conv.term":{"bits":"35","hi":"8835700506","lo":"-9030375378"},"rq.p":{"bits":"48","hi":"82484023836672","lo":"-83837281222656"},"rq.q":{"bits":"19","hi":"153638","lo":"-156160"},"rq.t":{"bits":"36","hi":"20137701132","lo":"-20468086236"},"rq.y":{"bits":"19","hi":"153638","lo":"-156160"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"19","hi":"153638","lo":"-156160","policy":"check","result":{"bits":"19","hi":"153638","lo":"-156160"},"tensor":"82"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"81","intermediates":{"rq.p":{"bits":"19","hi":"153638","lo":"-156160"},"rq.q":{"bits":"19","hi":"153638","lo":"-156160"},"rq.t":{"bits":"19","hi":"153638","lo":"-156160"},"rq.y":{"bits":"19","hi":"219174","lo":"-90624"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"19","hi":"219174","lo":"-90624","policy":"check","result":{"bits":"19","hi":"219174","lo":"-90624"},"tensor":"83"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"82","intermediates":{"mul.p":{"bits":"50","hi":"470672580847578","lo":"-470672581066752"},"rq.p":{"bits":"50","hi":"470672580847578","lo":"-470672581066752"},"rq.q":{"bits":"34","hi":"7181893628","lo":"-7181893632"},"rq.t":{"bits":"50","hi":"470672580847578","lo":"-470672581066752"},"rq.y":{"bits":"34","hi":"7181893628","lo":"-7181893632"}},"mac":{"a_bits":["32","19"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"7181893628","lo":"-7181893632"},"tensor":"84"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"83","intermediates":{"convT.acc":{"bits":"51","hi":"673397184790630","lo":"-673397184738995"},"convT.term":{"bits":"47","hi":"70211977838665","lo":"-70211977871360"},"rq.p":{"bits":"58","hi":"75420484696550560","lo":"-75420484690767440"},"rq.q":{"bits":"32","hi":"1123852799","lo":"-1123852800"},"rq.t":{"bits":"51","hi":"673397184790630","lo":"-673397184738995"},"rq.y":{"bits":"32","hi":"1123803487","lo":"-1123902112"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"1123803487","lo":"-1123902112","policy":"check","result":{"bits":"32","hi":"1123803487","lo":"-1123902112"},"tensor":"85"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"84","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"32","hi":"1123803487","lo":"-1123902112","policy":"derived","result":{"bits":"32","hi":"1123803487","lo":"-1123902112"},"tensor":"86"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"85","intermediates":{"rq.p":{"bits":"39","hi":"143846846336","lo":"-143859470336"},"rq.q":{"bits":"39","hi":"143846846336","lo":"-143859470336"},"rq.t":{"bits":"32","hi":"1123803487","lo":"-1123902112"},"rq.y":{"bits":"39","hi":"143855202176","lo":"-143851114496"}},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"rescale","out":[{"bits":"25","hi":"16711680","lo":"0","policy":"clamp","result":{"bits":"39","hi":"143855202176","lo":"-143851114496"},"tensor":"87"}],"saturated":false}],"scalars":[]}],"lowering":"jpegai-int/1","set_sha256":"1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9","verdict":{"acc32":false,"acc32_first_failure":{"bits":"44","graph":"rec_y","index":"1","key":"conv.acc","where":"node"},"acc64":true,"npu":false,"npu_flags":["rq_floor_mult","rq_post_bias"],"npu_reasons":["acc32","op:apply","op:elu","op:gram","op:l2norm","op:layernorm_c","op:sigmoid","op:softmax"]}} \ No newline at end of file diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/hs_uv.whg1 b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/hs_uv.whg1 similarity index 100% rename from wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/hs_uv.whg1 rename to wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/hs_uv.whg1 diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/hs_y.whg1 b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/hs_y.whg1 similarity index 100% rename from wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/hs_y.whg1 rename to wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/hs_y.whg1 diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_uv.whg1 b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_uv.whg1 new file mode 100644 index 000000000..4da96cb99 Binary files /dev/null and b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_uv.whg1 differ diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_y.whg1 b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_y.whg1 new file mode 100644 index 000000000..286e0c256 Binary files /dev/null and b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/rec_y.whg1 differ diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_uv.whg1 b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_uv.whg1 new file mode 100644 index 000000000..3bf9e410e Binary files /dev/null and b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_uv.whg1 differ diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_y.whg1 b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_y.whg1 new file mode 100644 index 000000000..80d81f62a Binary files /dev/null and b/wai/ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/syn_y.whg1 differ diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37.json b/wai/ops-conformance/certificates/wai.image.jpegai/3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37.json index b52caf219..a2968617f 100644 --- a/wai/ops-conformance/certificates/wai.image.jpegai/3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37.json +++ b/wai/ops-conformance/certificates/wai.image.jpegai/3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37.json @@ -1 +1 @@ -{"capability":"wai.image.jpegai","certificate":"wai-ops/1 bounds","graphs":[{"graph_sha256":"6a1be7ff1daa769bda87fc4a87702e1dd13ab5fd50593b09f0ae46709c2f55c3","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_y","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"19","hi":"167129","lo":"-166779"},"conv.term":{"bits":"13","hi":"4064","lo":"-4096"},"rq.p":{"bits":"19","hi":"167129","lo":"-166779"},"rq.q":{"bits":"15","hi":"12573","lo":"-12580"},"rq.t":{"bits":"19","hi":"167129","lo":"-166779"},"rq.y":{"bits":"15","hi":"12573","lo":"-12580"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"12573","lo":"-12580","policy":"derived","result":{"bits":"15","hi":"12573","lo":"-12580"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"15","hi":"12573","lo":"0","policy":"derived","result":{"bits":"15","hi":"12573","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"24","hi":"2217039","lo":"-4447271"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"24","hi":"2217039","lo":"-4447271"},"rq.q":{"bits":"15","hi":"2055","lo":"-9051"},"rq.t":{"bits":"24","hi":"2217039","lo":"-4447271"},"rq.y":{"bits":"15","hi":"2055","lo":"-9051"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"2055","lo":"-9051","policy":"derived","result":{"bits":"15","hi":"2055","lo":"-9051"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"13","hi":"2055","lo":"0","policy":"derived","result":{"bits":"13","hi":"2055","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"20","hi":"272927","lo":"-268224"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"20","hi":"272927","lo":"-268224"},"rq.q":{"bits":"17","hi":"45403","lo":"-47149"},"rq.t":{"bits":"20","hi":"272927","lo":"-268224"},"rq.y":{"bits":"17","hi":"45403","lo":"-47149"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"17","hi":"45403","lo":"-47149","policy":"derived","result":{"bits":"17","hi":"45403","lo":"-47149"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"17","hi":"45403","lo":"-47149","policy":"derived","result":{"bits":"17","hi":"45403","lo":"-47149"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"17","hi":"47149","lo":"0","policy":"derived","result":{"bits":"17","hi":"47149","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3973","lo":"-687"},"rq.q":{"bits":"13","hi":"3973","lo":"-687"},"rq.t":{"bits":"13","hi":"3973","lo":"-687"},"rq.y":{"bits":"13","hi":"3973","lo":"-687"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3973","lo":"-687","policy":"derived","result":{"bits":"13","hi":"3973","lo":"-687"},"tensor":"12"}],"saturated":false}],"scalars":[]},{"graph_sha256":"c782be5dbe90eb45ff1440442d6f9cfab8867619bf7053c8407255692e82f4ba","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"18","hi":"125851","lo":"-125590"},"conv.term":{"bits":"13","hi":"4064","lo":"-4096"},"rq.p":{"bits":"18","hi":"125851","lo":"-125590"},"rq.q":{"bits":"15","hi":"8663","lo":"-8678"},"rq.t":{"bits":"18","hi":"125851","lo":"-125590"},"rq.y":{"bits":"15","hi":"8663","lo":"-8678"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"8663","lo":"-8678","policy":"derived","result":{"bits":"15","hi":"8663","lo":"-8678"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"15","hi":"8663","lo":"0","policy":"derived","result":{"bits":"15","hi":"8663","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"23","hi":"1406906","lo":"-2765738"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"23","hi":"1406906","lo":"-2765738"},"rq.q":{"bits":"16","hi":"10991","lo":"-28596"},"rq.t":{"bits":"23","hi":"1406906","lo":"-2765738"},"rq.y":{"bits":"16","hi":"10991","lo":"-28596"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"16","hi":"10991","lo":"-28596","policy":"derived","result":{"bits":"16","hi":"10991","lo":"-28596"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"15","hi":"10991","lo":"0","policy":"derived","result":{"bits":"15","hi":"10991","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"19","hi":"261017","lo":"-260731"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"19","hi":"261017","lo":"-260731"},"rq.q":{"bits":"16","hi":"18225","lo":"-18225"},"rq.t":{"bits":"19","hi":"261017","lo":"-260731"},"rq.y":{"bits":"16","hi":"18225","lo":"-18225"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"16","hi":"18225","lo":"-18225","policy":"derived","result":{"bits":"16","hi":"18225","lo":"-18225"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"16","hi":"18225","lo":"-18225","policy":"derived","result":{"bits":"16","hi":"18225","lo":"-18225"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"16","hi":"18225","lo":"0","policy":"derived","result":{"bits":"16","hi":"18225","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3970","lo":"-82"},"rq.q":{"bits":"13","hi":"3970","lo":"-82"},"rq.t":{"bits":"13","hi":"3970","lo":"-82"},"rq.y":{"bits":"13","hi":"3970","lo":"-82"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3970","lo":"-82","policy":"derived","result":{"bits":"13","hi":"3970","lo":"-82"},"tensor":"12"}],"saturated":false}],"scalars":[]}],"lowering":"jpegai-int/1","set_sha256":"3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37","verdict":{"acc32":true,"acc64":true,"npu":true,"npu_flags":[],"npu_reasons":[]}} \ No newline at end of file +{"capability":"wai.image.jpegai","certificate":"wai-ops/1 bounds","graphs":[{"graph_sha256":"6a1be7ff1daa769bda87fc4a87702e1dd13ab5fd50593b09f0ae46709c2f55c3","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_y","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"19","hi":"167129","lo":"-166779"},"conv.term":{"bits":"13","hi":"4064","lo":"-4096"},"rq.p":{"bits":"19","hi":"167129","lo":"-166779"},"rq.q":{"bits":"15","hi":"12573","lo":"-12580"},"rq.t":{"bits":"19","hi":"167129","lo":"-166779"},"rq.y":{"bits":"15","hi":"12573","lo":"-12580"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"12573","lo":"-12580","policy":"derived","result":{"bits":"15","hi":"12573","lo":"-12580"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"15","hi":"12573","lo":"0","policy":"derived","result":{"bits":"15","hi":"12573","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"24","hi":"2217039","lo":"-4447271"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"24","hi":"2217039","lo":"-4447271"},"rq.q":{"bits":"15","hi":"2055","lo":"-9051"},"rq.t":{"bits":"24","hi":"2217039","lo":"-4447271"},"rq.y":{"bits":"15","hi":"2055","lo":"-9051"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"2055","lo":"-9051","policy":"derived","result":{"bits":"15","hi":"2055","lo":"-9051"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"13","hi":"2055","lo":"0","policy":"derived","result":{"bits":"13","hi":"2055","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"20","hi":"272927","lo":"-268224"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"20","hi":"272927","lo":"-268224"},"rq.q":{"bits":"17","hi":"45403","lo":"-47149"},"rq.t":{"bits":"20","hi":"272927","lo":"-268224"},"rq.y":{"bits":"17","hi":"45403","lo":"-47149"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"17","hi":"45403","lo":"-47149","policy":"derived","result":{"bits":"17","hi":"45403","lo":"-47149"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"17","hi":"45403","lo":"-47149","policy":"derived","result":{"bits":"17","hi":"45403","lo":"-47149"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"17","hi":"47149","lo":"0","policy":"derived","result":{"bits":"17","hi":"47149","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3973","lo":"-687"},"rq.q":{"bits":"13","hi":"3973","lo":"-687"},"rq.t":{"bits":"13","hi":"3973","lo":"-687"},"rq.y":{"bits":"13","hi":"3973","lo":"-687"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3973","lo":"-687","policy":"derived","result":{"bits":"13","hi":"3973","lo":"-687"},"tensor":"12"}],"saturated":false}],"scalars":[]},{"graph_sha256":"c782be5dbe90eb45ff1440442d6f9cfab8867619bf7053c8407255692e82f4ba","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"18","hi":"125851","lo":"-125590"},"conv.term":{"bits":"13","hi":"4064","lo":"-4096"},"rq.p":{"bits":"18","hi":"125851","lo":"-125590"},"rq.q":{"bits":"15","hi":"8663","lo":"-8678"},"rq.t":{"bits":"18","hi":"125851","lo":"-125590"},"rq.y":{"bits":"15","hi":"8663","lo":"-8678"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"8663","lo":"-8678","policy":"derived","result":{"bits":"15","hi":"8663","lo":"-8678"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"15","hi":"8663","lo":"0","policy":"derived","result":{"bits":"15","hi":"8663","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"23","hi":"1406906","lo":"-2765738"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"23","hi":"1406906","lo":"-2765738"},"rq.q":{"bits":"16","hi":"10991","lo":"-28596"},"rq.t":{"bits":"23","hi":"1406906","lo":"-2765738"},"rq.y":{"bits":"16","hi":"10991","lo":"-28596"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"16","hi":"10991","lo":"-28596","policy":"derived","result":{"bits":"16","hi":"10991","lo":"-28596"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"15","hi":"10991","lo":"0","policy":"derived","result":{"bits":"15","hi":"10991","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"19","hi":"261017","lo":"-260731"},"conv.term":{"bits":"15","hi":"16129","lo":"-16256"},"rq.p":{"bits":"19","hi":"261017","lo":"-260731"},"rq.q":{"bits":"16","hi":"18225","lo":"-18225"},"rq.t":{"bits":"19","hi":"261017","lo":"-260731"},"rq.y":{"bits":"16","hi":"18225","lo":"-18225"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"16","hi":"18225","lo":"-18225","policy":"derived","result":{"bits":"16","hi":"18225","lo":"-18225"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"16","hi":"18225","lo":"-18225","policy":"derived","result":{"bits":"16","hi":"18225","lo":"-18225"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"16","hi":"18225","lo":"0","policy":"derived","result":{"bits":"16","hi":"18225","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3970","lo":"-82"},"rq.q":{"bits":"13","hi":"3970","lo":"-82"},"rq.t":{"bits":"13","hi":"3970","lo":"-82"},"rq.y":{"bits":"13","hi":"3970","lo":"-82"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3970","lo":"-82","policy":"derived","result":{"bits":"13","hi":"3970","lo":"-82"},"tensor":"12"}],"saturated":false}],"scalars":[]},{"graph_sha256":"14d98dc9e54bf4f552f903dce2869ac769dedda5a3dad7c9e22a505b409b7360","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"},{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"1"}],"name":"rec_y","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{"rq.p":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.q":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.t":{"bits":"7","hi":"32","lo":"-31"},"rq.y":{"bits":"23","hi":"2097152","lo":"-2031616"}},"npu_flags":["rq_floor_mult"],"op":"rescale","out":[{"bits":"23","hi":"2097152","lo":"-2031616","policy":"derived","result":{"bits":"23","hi":"2097152","lo":"-2031616"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"42","hi":"1642388586496","lo":"-1635006808064"},"conv.term":{"bits":"37","hi":"66949480448","lo":"-68717379584"},"rq.p":{"bits":"57","hi":"70795160020910080","lo":"-70476968461598720"},"rq.q":{"bits":"26","hi":"32966565","lo":"-32818396"},"rq.t":{"bits":"42","hi":"1642388586496","lo":"-1635006808064"},"rq.y":{"bits":"26","hi":"32966565","lo":"-32818396"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"26","hi":"32966565","lo":"-32818396","policy":"check","result":{"bits":"26","hi":"32966565","lo":"-32818396"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"2","intermediates":{"convT.acc":{"bits":"48","hi":"71072729361573","lo":"-71100017942641"},"convT.term":{"bits":"41","hi":"1075360381732","lo":"-1080215435355"},"rq.p":{"bits":"62","hi":"1786341979773775782","lo":"-1787027850970338894"},"rq.q":{"bits":"31","hi":"831830305","lo":"-832149690"},"rq.t":{"bits":"48","hi":"71072729361573","lo":"-71100017942641"},"rq.y":{"bits":"31","hi":"831778715","lo":"-832201280"}},"k_c":"0","mac":{"a_bits":["26"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"831778715","lo":"-832201280","policy":"check","result":{"bits":"31","hi":"831778715","lo":"-832201280"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"41","hi":"319791955968","lo":"-746469851136"},"conv.term":{"bits":"35","hi":"5216403456","lo":"-12884508672"},"rq.p":{"bits":"58","hi":"33957748428374016","lo":"-79265394082578432"},"rq.q":{"bits":"27","hi":"15812808","lo":"-36910826"},"rq.t":{"bits":"41","hi":"319791955968","lo":"-746469851136"},"rq.y":{"bits":"27","hi":"15799428","lo":"-36924206"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"27","hi":"15799428","lo":"-36924206","policy":"check","result":{"bits":"27","hi":"15799428","lo":"-36924206"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"40","hi":"302067351552","lo":"-314067517440"},"conv.term":{"bits":"35","hi":"11469324288","lo":"-12884508672"},"rq.p":{"bits":"56","hi":"17770622291804160","lo":"-18476592050995200"},"rq.q":{"bits":"25","hi":"8275090","lo":"-8603834"},"rq.t":{"bits":"40","hi":"302067351552","lo":"-314067517440"},"rq.y":{"bits":"25","hi":"8270969","lo":"-8599209"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"25","hi":"8270969","lo":"-8599209","policy":"check","result":{"bits":"25","hi":"8270969","lo":"-8599209"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{},"npu_flags":[],"op":"subpos_split","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"9"},{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"10"},{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"11"},{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"8270969","lo":"-8599209","policy":"derived","result":{"bits":"25","hi":"8270969","lo":"-8599209"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"9","intermediates":{"conv.acc":{"bits":"44","hi":"5062962959122","lo":"-5067545189522"},"conv.term":{"bits":"40","hi":"281770281303","lo":"-271014841223"},"rq.p":{"bits":"60","hi":"453449088544884564","lo":"-453859482263969364"},"rq.q":{"bits":"29","hi":"211153686","lo":"-211344791"},"rq.t":{"bits":"44","hi":"5062962959122","lo":"-5067545189522"},"rq.y":{"bits":"29","hi":"211153686","lo":"-211344791"}},"k_c":"0","mac":{"a_bits":["25"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"29","hi":"211153686","lo":"-211344791","policy":"check","result":{"bits":"29","hi":"211153686","lo":"-211344791"},"tensor":"14"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"29","hi":"211153686","lo":"0","policy":"derived","result":{"bits":"29","hi":"211153686","lo":"0"},"tensor":"15"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"11","intermediates":{"conv.acc":{"bits":"47","hi":"21829068058680","lo":"-41442289336476"},"conv.term":{"bits":"44","hi":"2212046014536","lo":"-6918872829162"},"rq.p":{"bits":"64","hi":"3979810201254361560","lo":"-7555633864958294892"},"rq.q":{"bits":"33","hi":"1853243541","lo":"-3518366192"},"rq.t":{"bits":"47","hi":"21829068058680","lo":"-41442289336476"},"rq.y":{"bits":"33","hi":"1853243541","lo":"-3518366192"}},"k_c":"0","mac":{"a_bits":["29"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"1853243541","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"1853243541","lo":"-3518366192"},"tensor":"16"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"12","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"1853243541","lo":"0","policy":"derived","result":{"bits":"32","hi":"1853243541","lo":"0"},"tensor":"17"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"13","intermediates":{"conv.acc":{"bits":"52","hi":"1031413426525845","lo":"-1145830829503644"},"conv.term":{"bits":"47","hi":"59889418270956","lo":"-60725231107947"},"rq.p":{"bits":"70","hi":"304342254005260661685","lo":"-338103740354128746012"},"rq.q":{"bits":"39","hi":"141720405782","lo":"-157441822977"},"rq.t":{"bits":"52","hi":"1031413426525845","lo":"-1145830829503644"},"rq.y":{"bits":"39","hi":"141720405782","lo":"-157441822977"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"141720405782","lo":"-157441822977"},"tensor":"18"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"14","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"19"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"15","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"8270969","lo":"-8599209","policy":"derived","result":{"bits":"25","hi":"8270969","lo":"-8599209"},"tensor":"20"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"16","intermediates":{"conv.acc":{"bits":"52","hi":"2068638785417988","lo":"-2068638785346087"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"69","hi":"194044523988563528364","lo":"-194044523981818998861"},"rq.q":{"bits":"38","hi":"90359022835","lo":"-90359022833"},"rq.t":{"bits":"52","hi":"2068638785417988","lo":"-2068638785346087"},"rq.y":{"bits":"38","hi":"90359022835","lo":"-90359022833"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"90359022835","lo":"-90359022833"},"tensor":"21"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"17","intermediates":{"conv.acc":{"bits":"52","hi":"1557793227837157","lo":"-1557793227825023"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"67","hi":"53243814734246189103","lo":"-53243814733831461117"},"rq.q":{"bits":"36","hi":"24793583310","lo":"-24793583311"},"rq.t":{"bits":"52","hi":"1557793227837157","lo":"-1557793227825023"},"rq.y":{"bits":"36","hi":"24793583210","lo":"-24793583411"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"24793583210","lo":"-24793583411"},"tensor":"22"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"18","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"23"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"19","intermediates":{"conv.acc":{"bits":"53","hi":"2680433254242035","lo":"-2680433254227295"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"69","hi":"185480620327040337930","lo":"-185480620326020359410"},"rq.q":{"bits":"38","hi":"86371144432","lo":"-86371144432"},"rq.t":{"bits":"53","hi":"2680433254242035","lo":"-2680433254227295"},"rq.y":{"bits":"38","hi":"86371144432","lo":"-86371144432"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"86371144432","lo":"-86371144432"},"tensor":"24"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"20","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"25"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"21","intermediates":{"conv.acc":{"bits":"51","hi":"662732780817023","lo":"-968968243846517"},"conv.term":{"bits":"47","hi":"52894669709257","lo":"-70366596661249"},"rq.p":{"bits":"68","hi":"56214319934461524906","lo":"-82189824379549264974"},"rq.q":{"bits":"37","hi":"26176832585","lo":"-38272619425"},"rq.t":{"bits":"51","hi":"662732780817023","lo":"-968968243846517"},"rq.y":{"bits":"37","hi":"26176832585","lo":"-38272619425"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"37","hi":"26176832585","lo":"-38272619425"},"tensor":"26"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"22","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"27"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"23","intermediates":{"conv.acc":{"bits":"51","hi":"1007738913609455","lo":"-1000302177739894"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-63316407848148"},"rq.p":{"bits":"69","hi":"275681088162656947620","lo":"-273646664951236362216"},"rq.q":{"bits":"38","hi":"128374010400","lo":"-127426658269"},"rq.t":{"bits":"51","hi":"1007738913609455","lo":"-1000302177739894"},"rq.y":{"bits":"38","hi":"128374010400","lo":"-127426658269"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"128374010400","lo":"-127426658269"},"tensor":"28"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"24","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"29"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"25","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"8270969","lo":"-8599209","policy":"derived","result":{"bits":"25","hi":"8270969","lo":"-8599209"},"tensor":"30"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"26","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"31"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"27","intermediates":{"conv.acc":{"bits":"53","hi":"2584210954498838","lo":"-2584210954383427"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"69","hi":"280575535962802338174","lo":"-280575535950271819671"},"rq.q":{"bits":"38","hi":"130653165263","lo":"-130653165258"},"rq.t":{"bits":"53","hi":"2584210954498838","lo":"-2584210954383427"},"rq.y":{"bits":"38","hi":"130653165263","lo":"-130653165258"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"130653165263","lo":"-130653165258"},"tensor":"32"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"28","intermediates":{"conv.acc":{"bits":"52","hi":"1441330894615365","lo":"-1441330894704375"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"67","hi":"58241298789617668920","lo":"-58241298793214385000"},"rq.q":{"bits":"36","hi":"27120718168","lo":"-27120718171"},"rq.t":{"bits":"52","hi":"1441330894615365","lo":"-1441330894704375"},"rq.y":{"bits":"36","hi":"27120718279","lo":"-27120718060"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"27120718279","lo":"-27120718060"},"tensor":"33"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"29","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"34"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"30","intermediates":{"conv.acc":{"bits":"53","hi":"2974539729662872","lo":"-2974539729725888"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"69","hi":"175863712436857981256","lo":"-175863712440583676224"},"rq.q":{"bits":"38","hi":"81892922724","lo":"-81892922726"},"rq.t":{"bits":"53","hi":"2974539729662872","lo":"-2974539729725888"},"rq.y":{"bits":"38","hi":"81892922724","lo":"-81892922726"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"81892922724","lo":"-81892922726"},"tensor":"35"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"31","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"36"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"32","intermediates":{"conv.acc":{"bits":"52","hi":"793359916096739","lo":"-1690518454271223"},"conv.term":{"bits":"47","hi":"55768002828943","lo":"-70366596661249"},"rq.p":{"bits":"68","hi":"57042577967355534100","lo":"-121548276862100933700"},"rq.q":{"bits":"37","hi":"26562520287","lo":"-56600327074"},"rq.t":{"bits":"52","hi":"793359916096739","lo":"-1690518454271223"},"rq.y":{"bits":"37","hi":"26562520287","lo":"-56600327074"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"37","hi":"26562520287","lo":"-56600327074"},"tensor":"37"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"33","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"38"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"34","intermediates":{"conv.acc":{"bits":"51","hi":"822900701144871","lo":"-790018431542007"},"conv.term":{"bits":"47","hi":"63831803923428","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"210710307733753378518","lo":"-202290539543783228406"},"rq.q":{"bits":"38","hi":"98119633148","lo":"-94198873055"},"rq.t":{"bits":"51","hi":"822900701144871","lo":"-790018431542007"},"rq.y":{"bits":"38","hi":"98119633148","lo":"-94198873055"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"98119633148","lo":"-94198873055"},"tensor":"39"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"35","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"40"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"36","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"8270969","lo":"-8599209","policy":"derived","result":{"bits":"25","hi":"8270969","lo":"-8599209"},"tensor":"41"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"37","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"42"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"38","intermediates":{"conv.acc":{"bits":"53","hi":"3677063235153377","lo":"-3677063235187093"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"70","hi":"372343100254866108397","lo":"-372343100258280224273"},"rq.q":{"bits":"39","hi":"173385767384","lo":"-173385767387"},"rq.t":{"bits":"53","hi":"3677063235153377","lo":"-3677063235187093"},"rq.y":{"bits":"39","hi":"173385767384","lo":"-173385767387"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"173385767384","lo":"-173385767387"},"tensor":"43"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"39","intermediates":{"conv.acc":{"bits":"52","hi":"1884923706831005","lo":"-1884923706813115"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"67","hi":"63438992277104304280","lo":"-63438992276502198440"},"rq.q":{"bits":"36","hi":"29541082809","lo":"-29541082809"},"rq.t":{"bits":"52","hi":"1884923706831005","lo":"-1884923706813115"},"rq.y":{"bits":"36","hi":"29541082118","lo":"-29541083500"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"29541082118","lo":"-29541083500"},"tensor":"44"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"40","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"45"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"41","intermediates":{"conv.acc":{"bits":"53","hi":"2775437930844594","lo":"-2775437930755536"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"167711387847146281638","lo":"-167711387841764773872"},"rq.q":{"bits":"38","hi":"78096700761","lo":"-78096700759"},"rq.t":{"bits":"53","hi":"2775437930844594","lo":"-2775437930755536"},"rq.y":{"bits":"38","hi":"78096700761","lo":"-78096700759"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"78096700761","lo":"-78096700759"},"tensor":"46"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"42","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"47"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"43","intermediates":{"conv.acc":{"bits":"52","hi":"681299924428985","lo":"-1889452749394715"},"conv.term":{"bits":"47","hi":"47590385101167","lo":"-70366596661249"},"rq.p":{"bits":"68","hi":"53047374715889630070","lo":"-147116569973371299330"},"rq.q":{"bits":"37","hi":"24702108798","lo":"-68506491359"},"rq.t":{"bits":"52","hi":"681299924428985","lo":"-1889452749394715"},"rq.y":{"bits":"37","hi":"24702108798","lo":"-68506491359"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"37","hi":"24702108798","lo":"-68506491359"},"tensor":"48"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"44","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"49"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"45","intermediates":{"conv.acc":{"bits":"51","hi":"783588865502889","lo":"-686666486062838"},"conv.term":{"bits":"47","hi":"67901285434493","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"175407151131687205539","lo":"-153710979571652349138"},"rq.q":{"bits":"38","hi":"81680319798","lo":"-71577252621"},"rq.t":{"bits":"51","hi":"783588865502889","lo":"-686666486062838"},"rq.y":{"bits":"38","hi":"81680319798","lo":"-71577252621"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"81680319798","lo":"-71577252621"},"tensor":"50"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"46","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"51"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"47","intermediates":{},"npu_flags":[],"op":"subpos_merge","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"52"}],"saturated":false}],"scalars":[]},{"graph_sha256":"b247a7c3436080e8b606b961e3abb1ea5365eb63588a02ce53a8243667e31b22","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"},{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"1"}],"name":"rec_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{"rq.p":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.q":{"bits":"23","hi":"2097152","lo":"-2031616"},"rq.t":{"bits":"7","hi":"32","lo":"-31"},"rq.y":{"bits":"23","hi":"2097152","lo":"-2031616"}},"npu_flags":["rq_floor_mult"],"op":"rescale","out":[{"bits":"23","hi":"2097152","lo":"-2031616","policy":"derived","result":{"bits":"23","hi":"2097152","lo":"-2031616"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"42","hi":"1357045628928","lo":"-1358779514880"},"conv.term":{"bits":"37","hi":"68717379584","lo":"-66569961472"},"rq.p":{"bits":"58","hi":"78496947359711232","lo":"-78597242258718720"},"rq.q":{"bits":"27","hi":"36552989","lo":"-36599694"},"rq.t":{"bits":"42","hi":"1357045628928","lo":"-1358779514880"},"rq.y":{"bits":"27","hi":"36552989","lo":"-36599694"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"27","hi":"36552989","lo":"-36599694","policy":"check","result":{"bits":"27","hi":"36552989","lo":"-36599694"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"2","intermediates":{"convT.acc":{"bits":"46","hi":"19405450378815","lo":"-19401316425855"},"convT.term":{"bits":"42","hi":"1199262173298","lo":"-1197731790563"},"rq.p":{"bits":"62","hi":"2005184593093332765","lo":"-2004757427600023005"},"rq.q":{"bits":"31","hi":"933736838","lo":"-933537925"},"rq.t":{"bits":"46","hi":"19405450378815","lo":"-19401316425855"},"rq.y":{"bits":"31","hi":"933748016","lo":"-933526747"}},"k_c":"0","mac":{"a_bits":["27"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"31","hi":"933748016","lo":"-933526747","policy":"check","result":{"bits":"31","hi":"933748016","lo":"-933526747"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"39","hi":"28932046848","lo":"-179616743424"},"conv.term":{"bits":"35","hi":"1054212096","lo":"-12884508672"},"rq.p":{"bits":"59","hi":"34088808082046976","lo":"-211631092921663488"},"rq.q":{"bits":"28","hi":"15873838","lo":"-98548408"},"rq.t":{"bits":"39","hi":"28932046848","lo":"-179616743424"},"rq.y":{"bits":"28","hi":"15900863","lo":"-98525703"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"28","hi":"15900863","lo":"-98525703","policy":"check","result":{"bits":"28","hi":"15900863","lo":"-98525703"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"38","hi":"131373858816","lo":"-47604695040"},"conv.term":{"bits":"35","hi":"12884508672","lo":"-3387162624"},"rq.p":{"bits":"56","hi":"28592338006573056","lo":"-10360733433200640"},"rq.q":{"bits":"25","hi":"13314344","lo":"-4824593"},"rq.t":{"bits":"38","hi":"131373858816","lo":"-47604695040"},"rq.y":{"bits":"25","hi":"13005079","lo":"-5133858"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"25","hi":"13005079","lo":"-5133858","policy":"check","result":{"bits":"25","hi":"13005079","lo":"-5133858"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"13005079","lo":"-5133858","policy":"derived","result":{"bits":"25","hi":"13005079","lo":"-5133858"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"13005079","lo":"-5133858","policy":"derived","result":{"bits":"25","hi":"13005079","lo":"-5133858"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"13005079","lo":"-5133858","policy":"derived","result":{"bits":"25","hi":"13005079","lo":"-5133858"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"25","hi":"13005079","lo":"-5133858","policy":"derived","result":{"bits":"25","hi":"13005079","lo":"-5133858"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{},"npu_flags":[],"op":"subpos_merge","out":[{"bits":"25","hi":"13005079","lo":"-5133858","policy":"derived","result":{"bits":"25","hi":"13005079","lo":"-5133858"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"12","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2160488726","lo":"-2152617506"},"tensor":"14"}],"saturated":false}],"scalars":[]},{"graph_sha256":"6f5006112fbac6dc1be928eb34175a0f08c777b971e9ba79aea5a54b22bf76ad","inputs":[{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"0"}],"name":"syn_y","nodes":[{"acc32_params":[],"fits":["acc64"],"index":"0","intermediates":{"conv.acc":{"bits":"55","hi":"11998356210376067","lo":"-11998356211229083"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"73","hi":"2537760323700431555103","lo":"-2537760323880852116247"},"rq.q":{"bits":"42","hi":"1181736739212","lo":"-1181736739297"},"rq.t":{"bits":"55","hi":"11998356210376067","lo":"-11998356211229083"},"rq.y":{"bits":"42","hi":"1181733680342","lo":"-1181739798167"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"42","hi":"1181733680342","lo":"-1181739798167"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"2","intermediates":{"conv.acc":{"bits":"53","hi":"3357365196301565","lo":"-3287116711240901"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-54597624241328"},"rq.p":{"bits":"70","hi":"477971296171472301225","lo":"-467970370595810870865"},"rq.q":{"bits":"39","hi":"222572729071","lo":"-217915685194"},"rq.t":{"bits":"53","hi":"3357365196301565","lo":"-3287116711240901"},"rq.y":{"bits":"39","hi":"222572727712","lo":"-217915684782"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"222572727712","lo":"-217915684782"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"convT.acc":{"bits":"53","hi":"3481743154972743","lo":"-3481743154985592"},"convT.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"153534427904833048071","lo":"-153534427905399650424"},"rq.q":{"bits":"38","hi":"71495039344","lo":"-71495039345"},"rq.t":{"bits":"53","hi":"3481743154972743","lo":"-3481743154985592"},"rq.y":{"bits":"38","hi":"71495029514","lo":"-71495049175"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"71495029514","lo":"-71495049175"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"38","hi":"97714962432","lo":"-106852122624"},"conv.term":{"bits":"35","hi":"12884508672","lo":"-7961837568"},"rq.p":{"bits":"52","hi":"1603697963433984","lo":"-1753657036505088"},"rq.q":{"bits":"21","hi":"746780","lo":"-816611"},"rq.t":{"bits":"38","hi":"97714962432","lo":"-106852122624"},"rq.y":{"bits":"21","hi":"746780","lo":"-816611"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"21","hi":"746780","lo":"-816611","policy":"check","result":{"bits":"21","hi":"746780","lo":"-816611"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"40","hi":"292721320205","lo":"-288233212004"},"conv.term":{"bits":"36","hi":"26757892637","lo":"-24469740260"},"rq.p":{"bits":"56","hi":"24345924922770055","lo":"-23972644475584684"},"rq.q":{"bits":"25","hi":"11336954","lo":"-11163133"},"rq.t":{"bits":"40","hi":"292721320205","lo":"-288233212004"},"rq.y":{"bits":"25","hi":"11336954","lo":"-11163133"}},"k_c":"0","mac":{"a_bits":["21"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"25","hi":"11336954","lo":"-11163133","policy":"check","result":{"bits":"25","hi":"11336954","lo":"-11163133"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"8","intermediates":{"rq.p":{"bits":"25","hi":"11336954","lo":"-11163133"},"rq.q":{"bits":"25","hi":"11336954","lo":"-11163133"},"rq.t":{"bits":"25","hi":"11336954","lo":"-11163133"},"rq.y":{"bits":"25","hi":"11402490","lo":"-11097597"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"25","hi":"11402490","lo":"-11097597","policy":"check","result":{"bits":"25","hi":"11402490","lo":"-11097597"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"9","intermediates":{"mul.p":{"bits":"56","hi":"24486660810081030","lo":"-24486660821483520"},"rq.p":{"bits":"56","hi":"24486660810081030","lo":"-24486660821483520"},"rq.q":{"bits":"40","hi":"373636792146","lo":"-373636792320"},"rq.t":{"bits":"56","hi":"24486660810081030","lo":"-24486660821483520"},"rq.y":{"bits":"40","hi":"373636792146","lo":"-373636792320"}},"mac":{"a_bits":["32","25"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"40","hi":"373636792146","lo":"-373636792320"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"10","intermediates":{"convT.acc":{"bits":"52","hi":"2222405056972072","lo":"-2222405057015888"},"convT.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"268150949364136263376","lo":"-268150949369423014304"},"rq.q":{"bits":"38","hi":"124867516273","lo":"-124867516277"},"rq.t":{"bits":"52","hi":"2222405056972072","lo":"-2222405057015888"},"rq.y":{"bits":"38","hi":"124867512279","lo":"-124867520271"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"124867512279","lo":"-124867520271"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"11","intermediates":{"conv.acc":{"bits":"53","hi":"2578689773932752","lo":"-2578689774034068"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"70","hi":"332596828352072420208","lo":"-332596828365140056572"},"rq.q":{"bits":"39","hi":"154877467244","lo":"-154877467251"},"rq.t":{"bits":"53","hi":"2578689773932752","lo":"-2578689774034068"},"rq.y":{"bits":"39","hi":"154877527185","lo":"-154877407310"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"154877527185","lo":"-154877407310"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"12","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"13","intermediates":{"conv.acc":{"bits":"53","hi":"2134603040085294","lo":"-3462879657813263"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-61239791161499"},"rq.p":{"bits":"69","hi":"136785362808665639520","lo":"-221901328472673893040"},"rq.q":{"bits":"38","hi":"63695648130","lo":"-103330858272"},"rq.t":{"bits":"53","hi":"2134603040085294","lo":"-3462879657813263"},"rq.y":{"bits":"38","hi":"63695644152","lo":"-103330850143"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"63695644152","lo":"-103330850143"},"tensor":"14"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"14","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"15"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"15","intermediates":{"conv.acc":{"bits":"55","hi":"10720691487065385","lo":"-10720691487673860"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"70","hi":"350116342584581343330","lo":"-350116342604452919880"},"rq.q":{"bits":"39","hi":"163035626795","lo":"-163035626805"},"rq.t":{"bits":"55","hi":"10720691487065385","lo":"-10720691487673860"},"rq.y":{"bits":"39","hi":"163035612993","lo":"-163035640607"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"163035612993","lo":"-163035640607"},"tensor":"16"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"16","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"17"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"17","intermediates":{"conv.acc":{"bits":"54","hi":"4937494401182400","lo":"-4895399426733906"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-61791694458778"},"rq.p":{"bits":"69","hi":"209848449544653182400","lo":"-208059371035617738906"},"rq.q":{"bits":"38","hi":"97718299154","lo":"-96885194553"},"rq.t":{"bits":"54","hi":"4937494401182400","lo":"-4895399426733906"},"rq.y":{"bits":"38","hi":"97718252961","lo":"-96885208462"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"97718252961","lo":"-96885208462"},"tensor":"18"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"18","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"19"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"19","intermediates":{"conv.acc":{"bits":"53","hi":"3194001821513621","lo":"-3194001820587664"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"69","hi":"177490681221511918970","lo":"-177490681170056488480"},"rq.q":{"bits":"38","hi":"82650539102","lo":"-82650539079"},"rq.t":{"bits":"53","hi":"3194001821513621","lo":"-3194001820587664"},"rq.y":{"bits":"38","hi":"82650479301","lo":"-82650598880"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"82650479301","lo":"-82650598880"},"tensor":"20"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"20","intermediates":{"conv.acc":{"bits":"53","hi":"3033129526033624","lo":"-3033129526064621"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"67","hi":"45126901088328257872","lo":"-45126901088789431238"},"rq.q":{"bits":"36","hi":"21013850852","lo":"-21013850854"},"rq.t":{"bits":"53","hi":"3033129526033624","lo":"-3033129526064621"},"rq.y":{"bits":"36","hi":"21013851765","lo":"-21013849941"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"21013851765","lo":"-21013849941"},"tensor":"21"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"21","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"22"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"22","intermediates":{"conv.acc":{"bits":"50","hi":"447295073866336","lo":"-440390913941231"},"conv.term":{"bits":"47","hi":"65459596527854","lo":"-70366596661249"},"rq.p":{"bits":"63","hi":"2687348803788946688","lo":"-2645868610958915848"},"rq.q":{"bits":"32","hi":"1251394303","lo":"-1232078584"},"rq.t":{"bits":"50","hi":"447295073866336","lo":"-440390913941231"},"rq.y":{"bits":"32","hi":"1251405441","lo":"-1232057006"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"1251405441","lo":"-1232057006","policy":"check","result":{"bits":"32","hi":"1251405441","lo":"-1232057006"},"tensor":"23"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"23","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3398889088","lo":"-3379540654"},"tensor":"24"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"24","intermediates":{"conv.acc":{"bits":"52","hi":"2165887582298890","lo":"-2165887582419260"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"68","hi":"89284383805107142470","lo":"-89284383810069154980"},"rq.q":{"bits":"37","hi":"41576281099","lo":"-41576281102"},"rq.t":{"bits":"52","hi":"2165887582298890","lo":"-2165887582419260"},"rq.y":{"bits":"37","hi":"41576284390","lo":"-41576277811"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"37","hi":"41576284390","lo":"-41576277811"},"tensor":"25"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"25","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"26"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"26","intermediates":{"conv.acc":{"bits":"49","hi":"176306259935053","lo":"-238894670826868"},"conv.term":{"bits":"47","hi":"49851685381458","lo":"-70366596661249"},"rq.p":{"bits":"65","hi":"11223656507465473980","lo":"-15208034744838416880"},"rq.q":{"bits":"34","hi":"5226422337","lo":"-7081793037"},"rq.t":{"bits":"49","hi":"176306259935053","lo":"-238894670826868"},"rq.y":{"bits":"34","hi":"5226423455","lo":"-7081792145"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"5226423455","lo":"-7081792145"},"tensor":"27"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"27","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"28"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"28","intermediates":{"convT.acc":{"bits":"51","hi":"869054419880262","lo":"-869054419896813"},"convT.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"67","hi":"42968657682139794066","lo":"-42968657682958125159"},"rq.q":{"bits":"36","hi":"20008840450","lo":"-20008840451"},"rq.t":{"bits":"51","hi":"869054419880262","lo":"-869054419896813"},"rq.y":{"bits":"36","hi":"20008770152","lo":"-20008910749"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"20008770152","lo":"-20008910749"},"tensor":"29"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"29","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"2147483648","lo":"0"},"exp.nl":{"bits":"32","hi":"2147468724","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sig.num":{"bits":"34","hi":"4296081408","lo":"0"}},"npu_flags":[],"op":"sigmoid","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"30"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"30","intermediates":{"mul.p":{"bits":"48","hi":"140737488289792","lo":"-140737488355328"},"rq.p":{"bits":"48","hi":"140737488289792","lo":"-140737488355328"},"rq.q":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"rq.t":{"bits":"48","hi":"140737488289792","lo":"-140737488355328"},"rq.y":{"bits":"32","hi":"2147483647","lo":"-2147483648"}},"mac":{"a_bits":["32","18"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"31"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"31","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"32"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"32","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"33"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"33","intermediates":{"conv.acc":{"bits":"39","hi":"214727000064","lo":"-228381818880"},"conv.term":{"bits":"35","hi":"12884508672","lo":"-12376473600"},"rq.p":{"bits":"55","hi":"10277478404063232","lo":"-10931038997053440"},"rq.q":{"bits":"24","hi":"4785823","lo":"-5090162"},"rq.t":{"bits":"39","hi":"214727000064","lo":"-228381818880"},"rq.y":{"bits":"24","hi":"4785823","lo":"-5090162"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"24","hi":"4785823","lo":"-5090162","policy":"check","result":{"bits":"24","hi":"4785823","lo":"-5090162"},"tensor":"34"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"34","intermediates":{"conv.acc":{"bits":"43","hi":"3236455478837","lo":"-3262841365798"},"conv.term":{"bits":"39","hi":"156817062241","lo":"-166789338254"},"rq.p":{"bits":"59","hi":"245378345038984829","lo":"-247378843830706966"},"rq.q":{"bits":"28","hi":"114263196","lo":"-115194751"},"rq.t":{"bits":"43","hi":"3236455478837","lo":"-3262841365798"},"rq.y":{"bits":"28","hi":"114263196","lo":"-115194751"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"28","hi":"114263196","lo":"-115194751","policy":"check","result":{"bits":"28","hi":"114263196","lo":"-115194751"},"tensor":"35"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"35","intermediates":{"rq.p":{"bits":"28","hi":"114263196","lo":"-115194751"},"rq.q":{"bits":"28","hi":"114263196","lo":"-115194751"},"rq.t":{"bits":"28","hi":"114263196","lo":"-115194751"},"rq.y":{"bits":"28","hi":"114328732","lo":"-115129215"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"28","hi":"114328732","lo":"-115129215","policy":"check","result":{"bits":"28","hi":"114328732","lo":"-115129215"},"tensor":"36"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"36","intermediates":{"mul.p":{"bits":"59","hi":"247238106619576320","lo":"-247238106504447105"},"rq.p":{"bits":"59","hi":"247238106619576320","lo":"-247238106504447105"},"rq.q":{"bits":"43","hi":"3772554117120","lo":"-3772554115364"},"rq.t":{"bits":"59","hi":"247238106619576320","lo":"-247238106504447105"},"rq.y":{"bits":"43","hi":"3772554117120","lo":"-3772554115364"}},"mac":{"a_bits":["32","28"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"43","hi":"3772554117120","lo":"-3772554115364"},"tensor":"37"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"37","intermediates":{"conv.acc":{"bits":"52","hi":"1379406056268931","lo":"-1379406056132189"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"67","hi":"60132448210931509083","lo":"-60132448204970515077"},"rq.q":{"bits":"36","hi":"28001353242","lo":"-28001353241"},"rq.t":{"bits":"52","hi":"1379406056268931","lo":"-1379406056132189"},"rq.y":{"bits":"36","hi":"28001352764","lo":"-28001353719"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"28001352764","lo":"-28001353719"},"tensor":"38"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"38","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"39"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"39","intermediates":{"conv.acc":{"bits":"55","hi":"11812555925581943","lo":"-11812555925659807"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"70","hi":"479849646808989688546","lo":"-479849646812152679954"},"rq.q":{"bits":"39","hi":"223447404247","lo":"-223447404249"},"rq.t":{"bits":"55","hi":"11812555925581943","lo":"-11812555925659807"},"rq.y":{"bits":"39","hi":"223447407367","lo":"-223447401129"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"223447407367","lo":"-223447401129"},"tensor":"40"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"40","intermediates":{"ln.S":{"bits":"39","hi":"274877906816","lo":"-274877906944"},"ln.T":{"bits":"72","hi":"2361183240335310979200","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"51788591164","lo":"-51788591164"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"40","hi":"274877906880","lo":"-274877907008"},"ln.n":{"bits":"21","hi":"790232","lo":"-790232"},"ln.ng":{"bits":"35","hi":"10303835048","lo":"-10303835048"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"19","hi":"157672","lo":"-156777","policy":"check","result":{"bits":"19","hi":"157672","lo":"-156777"},"tensor":"41"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"41","intermediates":{"conv.acc":{"bits":"38","hi":"85833919663","lo":"-85891081523"},"conv.term":{"bits":"34","hi":"5137111959","lo":"-5166438424"},"rq.p":{"bits":"54","hi":"6320466508304668","lo":"-6324675679027628"},"rq.q":{"bits":"23","hi":"2943196","lo":"-2945157"},"rq.t":{"bits":"38","hi":"85833919663","lo":"-85891081523"},"rq.y":{"bits":"23","hi":"2943196","lo":"-2945157"}},"k_c":"0","mac":{"a_bits":["19"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"23","hi":"2943196","lo":"-2945157","policy":"check","result":{"bits":"23","hi":"2943196","lo":"-2945157"},"tensor":"42"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"42","intermediates":{"conv.acc":{"bits":"39","hi":"262421235233","lo":"-262566653188"},"conv.term":{"bits":"38","hi":"96503959419","lo":"-96439703332"},"rq.p":{"bits":"57","hi":"40818311034316985","lo":"-40840930070127460"},"rq.q":{"bits":"26","hi":"19007507","lo":"-19018041"},"rq.t":{"bits":"39","hi":"262421235233","lo":"-262566653188"},"rq.y":{"bits":"26","hi":"19007507","lo":"-19018041"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"26","hi":"19007507","lo":"-19018041","policy":"check","result":{"bits":"26","hi":"19007507","lo":"-19018041"},"tensor":"43"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"43","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"26","hi":"19007507","lo":"-19018041","policy":"derived","result":{"bits":"26","hi":"19007507","lo":"-19018041"},"tensor":"44"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"44","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"26","hi":"19007507","lo":"-19018041","policy":"derived","result":{"bits":"26","hi":"19007507","lo":"-19018041"},"tensor":"45"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"45","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"26","hi":"19007507","lo":"-19018041","policy":"derived","result":{"bits":"26","hi":"19007507","lo":"-19018041"},"tensor":"46"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"46","intermediates":{"l2.T":{"bits":"62","hi":"1481465378724624325","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"47"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"47","intermediates":{"l2.T":{"bits":"62","hi":"1481465378724624325","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"48"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"48","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"49"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"49","intermediates":{"rq.p":{"bits":"48","hi":"100736847347712","lo":"-100736847314944"},"rq.q":{"bits":"32","hi":"1537122304","lo":"-1537122304"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"1537122304","lo":"-1537122304"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"1537122304","lo":"-1537122304","policy":"check","result":{"bits":"32","hi":"1537122304","lo":"-1537122304"},"tensor":"50"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"50","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"3074244608","lo":"0"},"exp.nl":{"bits":"33","hi":"3074204550","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-3074244608"},"sm.num":{"bits":"34","hi":"4297130256","lo":"0"},"sm.sum":{"bits":"23","hi":"2097696","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"51"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"51","intermediates":{"apply.acc":{"bits":"47","hi":"39861631320064","lo":"-39883722719232"},"apply.term":{"bits":"42","hi":"1245675978752","lo":"-1246366334976"},"rq.p":{"bits":"47","hi":"39861631352832","lo":"-39883722719232"},"rq.q":{"bits":"31","hi":"608240224","lo":"-608577312"},"rq.t":{"bits":"47","hi":"39861631320064","lo":"-39883722719232"},"rq.y":{"bits":"31","hi":"608240224","lo":"-608577312"}},"k_c":"0","mac":{"a_bits":["18","26"]},"npu_flags":[],"op":"apply","out":[{"bits":"31","hi":"608240224","lo":"-608577312","policy":"check","result":{"bits":"31","hi":"608240224","lo":"-608577312"},"tensor":"52"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"52","intermediates":{"conv.acc":{"bits":"50","hi":"355034370519072","lo":"-355038285796192"},"conv.term":{"bits":"46","hi":"19941252782304","lo":"-19930207419808"},"rq.p":{"bits":"67","hi":"57330595117049227488","lo":"-57331227352083287968"},"rq.q":{"bits":"36","hi":"26696638724","lo":"-26696933132"},"rq.t":{"bits":"50","hi":"355034370519072","lo":"-355038285796192"},"rq.y":{"bits":"36","hi":"26696638724","lo":"-26696933132"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"26696638724","lo":"-26696933132"},"tensor":"53"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"53","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"54"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"54","intermediates":{"ln.S":{"bits":"39","hi":"274877906816","lo":"-274877906944"},"ln.T":{"bits":"72","hi":"2361183240335310979200","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"51788591164","lo":"-51788591164"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"40","hi":"274877906880","lo":"-274877907008"},"ln.n":{"bits":"21","hi":"790232","lo":"-790232"},"ln.ng":{"bits":"36","hi":"31180974256","lo":"-31180974256"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"20","hi":"469134","lo":"-482433","policy":"check","result":{"bits":"20","hi":"469134","lo":"-482433"},"tensor":"55"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"55","intermediates":{"conv.acc":{"bits":"39","hi":"156188011035","lo":"-155653816803"},"conv.term":{"bits":"35","hi":"15807882111","lo":"-15372113778"},"rq.p":{"bits":"55","hi":"11391260208815655","lo":"-11352299820893199"},"rq.q":{"bits":"24","hi":"5304468","lo":"-5286327"},"rq.t":{"bits":"39","hi":"156188011035","lo":"-155653816803"},"rq.y":{"bits":"24","hi":"5304468","lo":"-5286327"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"24","hi":"5304468","lo":"-5286327","policy":"check","result":{"bits":"24","hi":"5304468","lo":"-5286327"},"tensor":"56"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"56","intermediates":{"conv.acc":{"bits":"40","hi":"396675405426","lo":"-398036669784"},"conv.term":{"bits":"39","hi":"173217076809","lo":"-173811502956"},"rq.p":{"bits":"57","hi":"51957337953508332","lo":"-52135639081647888"},"rq.q":{"bits":"26","hi":"24194520","lo":"-24277549"},"rq.t":{"bits":"40","hi":"396675405426","lo":"-398036669784"},"rq.y":{"bits":"26","hi":"24194520","lo":"-24277549"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"26","hi":"24194520","lo":"-24277549","policy":"check","result":{"bits":"26","hi":"24194520","lo":"-24277549"},"tensor":"57"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"57","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"26","hi":"24194520","lo":"-24277549","policy":"derived","result":{"bits":"26","hi":"24194520","lo":"-24277549"},"tensor":"58"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"58","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"26","hi":"24194520","lo":"-24277549","policy":"derived","result":{"bits":"26","hi":"24194520","lo":"-24277549"},"tensor":"59"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"59","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"26","hi":"24277549","lo":"0"},"exp.nl":{"bits":"26","hi":"24257484","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"26","hi":"24194520","lo":"-65536","policy":"derived","result":{"bits":"26","hi":"24194520","lo":"-65536"},"tensor":"60"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"60","intermediates":{"mul.p":{"bits":"51","hi":"585374798030400","lo":"-587383644831480"},"rq.p":{"bits":"51","hi":"585374798030400","lo":"-587383644831480"},"rq.q":{"bits":"35","hi":"8932110565","lo":"-8962763136"},"rq.t":{"bits":"51","hi":"585374798030400","lo":"-587383644831480"},"rq.y":{"bits":"35","hi":"8932110565","lo":"-8962763136"}},"mac":{"a_bits":["26","26"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"35","hi":"8932110565","lo":"-8962763136"},"tensor":"61"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"61","intermediates":{"conv.acc":{"bits":"54","hi":"7370803828358973","lo":"-7370803828334937"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"70","hi":"482957179245564987879","lo":"-482957179243990077051"},"rq.q":{"bits":"39","hi":"224894461802","lo":"-224894461802"},"rq.t":{"bits":"54","hi":"7370803828358973","lo":"-7370803828334937"},"rq.y":{"bits":"39","hi":"224894461802","lo":"-224894461802"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"224894461802","lo":"-224894461802"},"tensor":"62"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"62","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"63"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"63","intermediates":{"ln.S":{"bits":"39","hi":"274877906816","lo":"-274877906944"},"ln.T":{"bits":"72","hi":"2361183240335310979200","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"51788591164","lo":"-51788591164"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"40","hi":"274877906880","lo":"-274877907008"},"ln.n":{"bits":"21","hi":"790232","lo":"-790232"},"ln.ng":{"bits":"36","hi":"34277103232","lo":"-34277103232"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"21","hi":"521342","lo":"-524713","policy":"check","result":{"bits":"21","hi":"521342","lo":"-524713"},"tensor":"64"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"64","intermediates":{"conv.acc":{"bits":"40","hi":"436761934376","lo":"-436722234109"},"conv.term":{"bits":"36","hi":"17193270871","lo":"-17082813314"},"rq.p":{"bits":"56","hi":"29661813249277288","lo":"-29659117085044517"},"rq.q":{"bits":"25","hi":"13812358","lo":"-13811103"},"rq.t":{"bits":"40","hi":"436761934376","lo":"-436722234109"},"rq.y":{"bits":"25","hi":"13812358","lo":"-13811103"}},"k_c":"0","mac":{"a_bits":["21"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"25","hi":"13812358","lo":"-13811103","policy":"check","result":{"bits":"25","hi":"13812358","lo":"-13811103"},"tensor":"65"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"65","intermediates":{"conv.acc":{"bits":"42","hi":"1600016238969","lo":"-1600106470959"},"conv.term":{"bits":"40","hi":"452548412001","lo":"-452589534586"},"rq.p":{"bits":"59","hi":"230373538119234558","lo":"-230386529901618738"},"rq.q":{"bits":"28","hi":"107276038","lo":"-107282089"},"rq.t":{"bits":"42","hi":"1600016238969","lo":"-1600106470959"},"rq.y":{"bits":"28","hi":"107276038","lo":"-107282089"}},"k_c":"0","mac":{"a_bits":["25"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"28","hi":"107276038","lo":"-107282089","policy":"check","result":{"bits":"28","hi":"107276038","lo":"-107282089"},"tensor":"66"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"66","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"107276038","lo":"-107282089","policy":"derived","result":{"bits":"28","hi":"107276038","lo":"-107282089"},"tensor":"67"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"67","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"107276038","lo":"-107282089","policy":"derived","result":{"bits":"28","hi":"107276038","lo":"-107282089"},"tensor":"68"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"68","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"107276038","lo":"-107282089","policy":"derived","result":{"bits":"28","hi":"107276038","lo":"-107282089"},"tensor":"69"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"69","intermediates":{"l2.T":{"bits":"67","hi":"47142693356355303365","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"70"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"70","intermediates":{"l2.T":{"bits":"67","hi":"47142693356355303365","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"71"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"71","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"72"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"72","intermediates":{"rq.p":{"bits":"48","hi":"88733755932672","lo":"-88733755899904"},"rq.q":{"bits":"32","hi":"1353969664","lo":"-1353969664"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"1353969664","lo":"-1353969664"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"1353969664","lo":"-1353969664","policy":"check","result":{"bits":"32","hi":"1353969664","lo":"-1353969664"},"tensor":"73"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"73","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"2707939328","lo":"0"},"exp.nl":{"bits":"33","hi":"2707934712","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-2707939328"},"sm.num":{"bits":"34","hi":"4297130256","lo":"0"},"sm.sum":{"bits":"23","hi":"2097696","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"74"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"74","intermediates":{"apply.acc":{"bits":"49","hi":"224974157643776","lo":"-224986847510528"},"apply.term":{"bits":"44","hi":"7030442426368","lo":"-7030838984704"},"rq.p":{"bits":"49","hi":"224974157676544","lo":"-224986847510528"},"rq.q":{"bits":"33","hi":"3432833216","lo":"-3433026848"},"rq.t":{"bits":"49","hi":"224974157643776","lo":"-224986847510528"},"rq.y":{"bits":"33","hi":"3432833216","lo":"-3433026848"}},"k_c":"0","mac":{"a_bits":["18","28"]},"npu_flags":[],"op":"apply","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3432833216","lo":"-3433026848"},"tensor":"75"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"75","intermediates":{"conv.acc":{"bits":"51","hi":"723373424213711","lo":"-723373424205154"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"68","hi":"116786469219030999817","lo":"-116786469217649497838"},"rq.q":{"bits":"37","hi":"54382937596","lo":"-54382937597"},"rq.t":{"bits":"51","hi":"723373424213711","lo":"-723373424205154"},"rq.y":{"bits":"37","hi":"54382937596","lo":"-54382937597"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"37","hi":"54382937596","lo":"-54382937597"},"tensor":"76"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"76","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"77"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"77","intermediates":{"ln.S":{"bits":"39","hi":"274877906816","lo":"-274877906944"},"ln.T":{"bits":"72","hi":"2361183240335310979200","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"51788591164","lo":"-51788591164"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"40","hi":"274877906880","lo":"-274877907008"},"ln.n":{"bits":"21","hi":"790232","lo":"-790232"},"ln.ng":{"bits":"36","hi":"26735129024","lo":"-26735129024"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"20","hi":"411969","lo":"-403922","policy":"check","result":{"bits":"20","hi":"411969","lo":"-403922"},"tensor":"78"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"78","intermediates":{"conv.acc":{"bits":"39","hi":"200341463059","lo":"-200918626087"},"conv.term":{"bits":"35","hi":"13235312174","lo":"-13498988223"},"rq.p":{"bits":"55","hi":"17427904212965469","lo":"-17478112201934217"},"rq.q":{"bits":"24","hi":"8115500","lo":"-8138881"},"rq.t":{"bits":"39","hi":"200341463059","lo":"-200918626087"},"rq.y":{"bits":"24","hi":"8115500","lo":"-8138881"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"24","hi":"8115500","lo":"-8138881","policy":"check","result":{"bits":"24","hi":"8115500","lo":"-8138881"},"tensor":"79"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"79","intermediates":{"conv.acc":{"bits":"41","hi":"788266738945","lo":"-786002569667"},"conv.term":{"bits":"39","hi":"265920588500","lo":"-266686713727"},"rq.p":{"bits":"59","hi":"221793824070215705","lo":"-221156757024634123"},"rq.q":{"bits":"28","hi":"103280797","lo":"-102984141"},"rq.t":{"bits":"41","hi":"788266738945","lo":"-786002569667"},"rq.y":{"bits":"28","hi":"103280797","lo":"-102984141"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"28","hi":"103280797","lo":"-102984141","policy":"check","result":{"bits":"28","hi":"103280797","lo":"-102984141"},"tensor":"80"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"80","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"103280797","lo":"-102984141","policy":"derived","result":{"bits":"28","hi":"103280797","lo":"-102984141"},"tensor":"81"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"81","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"103280797","lo":"-102984141","policy":"derived","result":{"bits":"28","hi":"103280797","lo":"-102984141"},"tensor":"82"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"82","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"28","hi":"102984141","lo":"0"},"exp.nl":{"bits":"28","hi":"102980742","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"28","hi":"103280797","lo":"-65536","policy":"derived","result":{"bits":"28","hi":"103280797","lo":"-65536"},"tensor":"83"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"83","intermediates":{"mul.p":{"bits":"55","hi":"10666923028955209","lo":"-10636284160840377"},"rq.p":{"bits":"55","hi":"10666923028955209","lo":"-10636284160840377"},"rq.q":{"bits":"39","hi":"162764328444","lo":"-162296816420"},"rq.t":{"bits":"55","hi":"10666923028955209","lo":"-10636284160840377"},"rq.y":{"bits":"39","hi":"162764328444","lo":"-162296816420"}},"mac":{"a_bits":["28","28"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"162764328444","lo":"-162296816420"},"tensor":"84"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"84","intermediates":{"conv.acc":{"bits":"53","hi":"2750162048219870","lo":"-2750162048318110"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"70","hi":"320146364033275066700","lo":"-320146364044711185100"},"rq.q":{"bits":"39","hi":"149079768002","lo":"-149079768008"},"rq.t":{"bits":"53","hi":"2750162048219870","lo":"-2750162048318110"},"rq.y":{"bits":"39","hi":"149079768002","lo":"-149079768008"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"149079768002","lo":"-149079768008"},"tensor":"85"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"85","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"86"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"86","intermediates":{"convT.acc":{"bits":"54","hi":"4994404866498444","lo":"-4994404866450351"},"convT.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"177321350380160755776","lo":"-177321350378453261904"},"rq.q":{"bits":"38","hi":"82571688285","lo":"-82571688285"},"rq.t":{"bits":"54","hi":"4994404866498444","lo":"-4994404866450351"},"rq.y":{"bits":"38","hi":"82571684978","lo":"-82571691592"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"82571684978","lo":"-82571691592"},"tensor":"87"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"87","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"88"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"88","intermediates":{"conv.acc":{"bits":"39","hi":"226768846848","lo":"-244242186240"},"conv.term":{"bits":"35","hi":"12884508672","lo":"-12859736064"},"rq.p":{"bits":"55","hi":"14136996681351168","lo":"-15226302132387840"},"rq.q":{"bits":"24","hi":"6583052","lo":"-7090300"},"rq.t":{"bits":"39","hi":"226768846848","lo":"-244242186240"},"rq.y":{"bits":"24","hi":"6583052","lo":"-7090300"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"24","hi":"6583052","lo":"-7090300","policy":"check","result":{"bits":"24","hi":"6583052","lo":"-7090300"},"tensor":"89"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"89","intermediates":{"conv.acc":{"bits":"44","hi":"5323766267232","lo":"-5346644166528"},"conv.term":{"bits":"39","hi":"232327860100","lo":"-215706864884"},"rq.p":{"bits":"60","hi":"312962923785500352","lo":"-314307823973515008"},"rq.q":{"bits":"29","hi":"145734717","lo":"-146360986"},"rq.t":{"bits":"44","hi":"5323766267232","lo":"-5346644166528"},"rq.y":{"bits":"29","hi":"145734717","lo":"-146360986"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"29","hi":"145734717","lo":"-146360986","policy":"check","result":{"bits":"29","hi":"145734717","lo":"-146360986"},"tensor":"90"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"90","intermediates":{"rq.p":{"bits":"29","hi":"145734717","lo":"-146360986"},"rq.q":{"bits":"29","hi":"145734717","lo":"-146360986"},"rq.t":{"bits":"29","hi":"145734717","lo":"-146360986"},"rq.y":{"bits":"29","hi":"145800253","lo":"-146295450"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"29","hi":"145800253","lo":"-146295450","policy":"check","result":{"bits":"29","hi":"145800253","lo":"-146295450"},"tensor":"91"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"91","intermediates":{"mul.p":{"bits":"60","hi":"314167086651801600","lo":"-314167086505506150"},"rq.p":{"bits":"60","hi":"314167086651801600","lo":"-314167086505506150"},"rq.q":{"bits":"44","hi":"4793809305600","lo":"-4793809303368"},"rq.t":{"bits":"60","hi":"314167086651801600","lo":"-314167086505506150"},"rq.y":{"bits":"44","hi":"4793809305600","lo":"-4793809303368"}},"mac":{"a_bits":["32","29"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"44","hi":"4793809305600","lo":"-4793809303368"},"tensor":"92"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"92","intermediates":{"convT.acc":{"bits":"52","hi":"1922751631262331","lo":"-1922751631283214"},"convT.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"66","hi":"18741060149913940257","lo":"-18741060150117486858"},"rq.q":{"bits":"35","hi":"8726986194","lo":"-8726986196"},"rq.t":{"bits":"52","hi":"1922751631262331","lo":"-1922751631283214"},"rq.y":{"bits":"35","hi":"8726986194","lo":"-8726986196"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"35","hi":"8726986194","lo":"-8726986196"},"tensor":"93"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"93","intermediates":{"rq.p":{"bits":"39","hi":"274877906816","lo":"-274877906944"},"rq.q":{"bits":"39","hi":"274877906816","lo":"-274877906944"},"rq.t":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"rq.y":{"bits":"40","hi":"274886262656","lo":"-274869551104"}},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"rescale","out":[{"bits":"25","hi":"16711680","lo":"0","policy":"clamp","result":{"bits":"40","hi":"274886262656","lo":"-274869551104"},"tensor":"94"}],"saturated":false}],"scalars":[]},{"graph_sha256":"9fe55c812491b2a5eec754e7bb11be3a9dffd76004f61cbe1eccf7ada993b699","inputs":[{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"0"},{"hi":"2147483647","kind":"data","lo":"-2147483648","max_h":"16","max_w":"16","policy":"check","tensor":"1"}],"name":"syn_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"55","hi":"15387093996485875","lo":"-15387093996498455"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"71","hi":"690665101126264985250","lo":"-690665101126829651130"},"rq.q":{"bits":"40","hi":"321616000088","lo":"-321616000090"},"rq.t":{"bits":"55","hi":"15387093996485875","lo":"-15387093996498455"},"rq.y":{"bits":"40","hi":"321616016805","lo":"-321615983373"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"40","hi":"321616016805","lo":"-321615983373"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"concat","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"3","intermediates":{"convT.acc":{"bits":"52","hi":"2022736322385751","lo":"-2022736322447699"},"convT.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"262921335392667072233","lo":"-262921335400719259117"},"rq.q":{"bits":"38","hi":"122432287499","lo":"-122432287504"},"rq.t":{"bits":"52","hi":"2022736322385751","lo":"-2022736322447699"},"rq.y":{"bits":"38","hi":"122432205483","lo":"-122432369520"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"122432205483","lo":"-122432369520"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"52","hi":"1539045695476559","lo":"-1539045695700271"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"65","hi":"15421237868675121180","lo":"-15421237870916715420"},"rq.q":{"bits":"34","hi":"7181073477","lo":"-7181073479"},"rq.t":{"bits":"52","hi":"1539045695476559","lo":"-1539045695700271"},"rq.y":{"bits":"34","hi":"7181073477","lo":"-7181073479"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"7181073477","lo":"-7181073479"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"6","intermediates":{"conv.acc":{"bits":"50","hi":"286626789848737","lo":"-37250251340862"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-35744865304315"},"rq.p":{"bits":"64","hi":"4915649445905839550","lo":"-638841810495783300"},"rq.q":{"bits":"33","hi":"2289027648","lo":"-297483900"},"rq.t":{"bits":"50","hi":"286626789848737","lo":"-37250251340862"},"rq.y":{"bits":"33","hi":"2289229371","lo":"-297484085"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-297484085","policy":"check","result":{"bits":"33","hi":"2289229371","lo":"-297484085"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"7","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-2444967733"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"8","intermediates":{"conv.acc":{"bits":"53","hi":"2812872865756705","lo":"-2812872865729865"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"70","hi":"408364444031961161785","lo":"-408364444028064611105"},"rq.q":{"bits":"39","hi":"190159512698","lo":"-190159512697"},"rq.t":{"bits":"53","hi":"2812872865756705","lo":"-2812872865729865"},"rq.y":{"bits":"39","hi":"190159453109","lo":"-190159572286"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"190159453109","lo":"-190159572286"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"10","intermediates":{"conv.acc":{"bits":"51","hi":"380347271171111","lo":"-569285029917818"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-47032039352947"},"rq.p":{"bits":"66","hi":"13101822450031260617","lo":"-19610161425579076646"},"rq.q":{"bits":"35","hi":"6101011508","lo":"-9131693014"},"rq.t":{"bits":"51","hi":"380347271171111","lo":"-569285029917818"},"rq.y":{"bits":"35","hi":"6101049051","lo":"-9131655471"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"35","hi":"6101049051","lo":"-9131655471"},"tensor":"12"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"11","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"13"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"12","intermediates":{"conv.acc":{"bits":"53","hi":"2887452825839444","lo":"-2887452824835181"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"67","hi":"45717040591515916852","lo":"-45717040575615420773"},"rq.q":{"bits":"36","hi":"21288655973","lo":"-21288655967"},"rq.t":{"bits":"53","hi":"2887452825839444","lo":"-2887452824835181"},"rq.y":{"bits":"36","hi":"21288656008","lo":"-21288655932"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"36","hi":"21288656008","lo":"-21288655932"},"tensor":"14"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"13","intermediates":{"conv.acc":{"bits":"51","hi":"1077581524295551","lo":"-1077581524727909"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"64","hi":"7867422708881817851","lo":"-7867422712038463609"},"rq.q":{"bits":"33","hi":"3663554186","lo":"-3663554188"},"rq.t":{"bits":"51","hi":"1077581524295551","lo":"-1077581524727909"},"rq.y":{"bits":"33","hi":"3663554186","lo":"-3663554188"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3663554186","lo":"-3663554188"},"tensor":"15"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"14","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"16"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"15","intermediates":{"conv.acc":{"bits":"49","hi":"226589589529558","lo":"-39256001067160"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-12844099692707"},"rq.p":{"bits":"62","hi":"1233327135809384194","lo":"-213670413808551880"},"rq.q":{"bits":"31","hi":"574312701","lo":"-99498040"},"rq.t":{"bits":"49","hi":"226589589529558","lo":"-39256001067160"},"rq.y":{"bits":"31","hi":"574312701","lo":"-99498040"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"31","hi":"574312701","lo":"-99498040","policy":"check","result":{"bits":"31","hi":"574312701","lo":"-99498040"},"tensor":"17"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"16","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2721796348","lo":"-2246981688"},"tensor":"18"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"17","intermediates":{"conv.acc":{"bits":"52","hi":"1213774937413766","lo":"-1213774937458594"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"66","hi":"19262608256756466420","lo":"-19262608257467886780"},"rq.q":{"bits":"35","hi":"8969850957","lo":"-8969850959"},"rq.t":{"bits":"52","hi":"1213774937413766","lo":"-1213774937458594"},"rq.y":{"bits":"35","hi":"8969850969","lo":"-8969850947"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"35","hi":"8969850969","lo":"-8969850947"},"tensor":"19"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"18","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"32","hi":"2147483647","lo":"0","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"0"},"tensor":"20"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"19","intermediates":{"conv.acc":{"bits":"50","hi":"363532474215101","lo":"-174495931220632"},"conv.term":{"bits":"47","hi":"70366596661249","lo":"-62173946547944"},"rq.p":{"bits":"65","hi":"13878942800584125978","lo":"-6661905662141288496"},"rq.q":{"bits":"34","hi":"6462886370","lo":"-3102191567"},"rq.t":{"bits":"50","hi":"363532474215101","lo":"-174495931220632"},"rq.y":{"bits":"34","hi":"6462886370","lo":"-3102191567"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"34","hi":"6462886370","lo":"-3102191567"},"tensor":"21"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"20","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"22"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"21","intermediates":{"convT.acc":{"bits":"49","hi":"179591909961458","lo":"-179591909952097"},"convT.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"64","hi":"6859692592887849768","lo":"-6859692592530297012"},"rq.q":{"bits":"33","hi":"3194293283","lo":"-3194293284"},"rq.t":{"bits":"49","hi":"179591909961458","lo":"-179591909952097"},"rq.y":{"bits":"33","hi":"3194229352","lo":"-3194357215"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"3194229352","lo":"-3194357215"},"tensor":"23"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"22","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"2147483648","lo":"0"},"exp.nl":{"bits":"32","hi":"2147468724","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sig.num":{"bits":"34","hi":"4296081408","lo":"0"}},"npu_flags":[],"op":"sigmoid","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"24"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"23","intermediates":{"mul.p":{"bits":"48","hi":"140737488289792","lo":"-140737488355328"},"rq.p":{"bits":"48","hi":"140737488289792","lo":"-140737488355328"},"rq.q":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"rq.t":{"bits":"48","hi":"140737488289792","lo":"-140737488355328"},"rq.y":{"bits":"32","hi":"2147483647","lo":"-2147483648"}},"mac":{"a_bits":["32","18"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"25"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"24","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"26"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"25","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"27"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"26","intermediates":{"conv.acc":{"bits":"39","hi":"143081472000","lo":"-142797963264"},"conv.term":{"bits":"35","hi":"11780751360","lo":"-12884508672"},"rq.p":{"bits":"54","hi":"5516076908544000","lo":"-5505147079753728"},"rq.q":{"bits":"23","hi":"2568623","lo":"-2563534"},"rq.t":{"bits":"39","hi":"143081472000","lo":"-142797963264"},"rq.y":{"bits":"23","hi":"2568623","lo":"-2563534"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"23","hi":"2568623","lo":"-2563534","policy":"check","result":{"bits":"23","hi":"2568623","lo":"-2563534"},"tensor":"28"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"27","intermediates":{"conv.acc":{"bits":"40","hi":"463140503403","lo":"-463172777841"},"conv.term":{"bits":"38","hi":"83999318578","lo":"-84166069841"},"rq.p":{"bits":"58","hi":"77963682921350811","lo":"-77969115903420417"},"rq.q":{"bits":"27","hi":"36304668","lo":"-36307199"},"rq.t":{"bits":"40","hi":"463140503403","lo":"-463172777841"},"rq.y":{"bits":"27","hi":"36304668","lo":"-36307199"}},"k_c":"0","mac":{"a_bits":["23"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"27","hi":"36304668","lo":"-36307199","policy":"check","result":{"bits":"27","hi":"36304668","lo":"-36307199"},"tensor":"29"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"28","intermediates":{"rq.p":{"bits":"27","hi":"36304668","lo":"-36307199"},"rq.q":{"bits":"27","hi":"36304668","lo":"-36307199"},"rq.t":{"bits":"27","hi":"36304668","lo":"-36307199"},"rq.y":{"bits":"27","hi":"36370204","lo":"-36241663"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"27","hi":"36370204","lo":"-36241663","policy":"check","result":{"bits":"27","hi":"36370204","lo":"-36241663"},"tensor":"30"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"29","intermediates":{"mul.p":{"bits":"58","hi":"78104418328053988","lo":"-78104418364424192"},"rq.p":{"bits":"58","hi":"78104418328053988","lo":"-78104418364424192"},"rq.q":{"bits":"42","hi":"1191778844117","lo":"-1191778844672"},"rq.t":{"bits":"58","hi":"78104418328053988","lo":"-78104418364424192"},"rq.y":{"bits":"42","hi":"1191778844117","lo":"-1191778844672"}},"mac":{"a_bits":["32","27"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"42","hi":"1191778844117","lo":"-1191778844672"},"tensor":"31"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"30","intermediates":{"conv.acc":{"bits":"51","hi":"801155281919235","lo":"-801155281924530"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"68","hi":"88782426031725784230","lo":"-88782426032312565540"},"rq.q":{"bits":"37","hi":"41342538796","lo":"-41342538797"},"rq.t":{"bits":"51","hi":"801155281919235","lo":"-801155281924530"},"rq.y":{"bits":"37","hi":"41340939918","lo":"-41344137675"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"37","hi":"41340939918","lo":"-41344137675"},"tensor":"32"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"31","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"derived","result":{"bits":"32","hi":"2147483647","lo":"-2147483648"},"tensor":"33"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"32","intermediates":{"ln.S":{"bits":"38","hi":"137438953408","lo":"-137438953472"},"ln.T":{"bits":"71","hi":"1180591620167655489600","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"34525727443","lo":"-34525727443"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"39","hi":"137438953440","lo":"-137438953504"},"ln.n":{"bits":"21","hi":"526821","lo":"-526821"},"ln.ng":{"bits":"37","hi":"38562243558","lo":"-38562243558"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"21","hi":"589916","lo":"-586911","policy":"check","result":{"bits":"21","hi":"589916","lo":"-586911"},"tensor":"34"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"33","intermediates":{"conv.acc":{"bits":"38","hi":"105819292240","lo":"-105874232655"},"conv.term":{"bits":"36","hi":"19231312737","lo":"-19329777572"},"rq.p":{"bits":"55","hi":"17295422581582320","lo":"-17304402207831165"},"rq.q":{"bits":"24","hi":"8053808","lo":"-8057991"},"rq.t":{"bits":"38","hi":"105819292240","lo":"-105874232655"},"rq.y":{"bits":"24","hi":"8053808","lo":"-8057991"}},"k_c":"0","mac":{"a_bits":["21"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"24","hi":"8053808","lo":"-8057991","policy":"check","result":{"bits":"24","hi":"8053808","lo":"-8057991"},"tensor":"35"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"34","intermediates":{"conv.acc":{"bits":"40","hi":"509699765329","lo":"-509435968617"},"conv.term":{"bits":"39","hi":"264036191097","lo":"-263899126736"},"rq.p":{"bits":"58","hi":"117277838404080268","lo":"-117217140891022764"},"rq.q":{"bits":"27","hi":"54611749","lo":"-54583485"},"rq.t":{"bits":"40","hi":"509699765329","lo":"-509435968617"},"rq.y":{"bits":"27","hi":"54611749","lo":"-54583485"}},"k_c":"0","mac":{"a_bits":["24"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"27","hi":"54611749","lo":"-54583485","policy":"check","result":{"bits":"27","hi":"54611749","lo":"-54583485"},"tensor":"36"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"35","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"27","hi":"54611749","lo":"-54583485","policy":"derived","result":{"bits":"27","hi":"54611749","lo":"-54583485"},"tensor":"37"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"36","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"27","hi":"54611749","lo":"-54583485","policy":"derived","result":{"bits":"27","hi":"54611749","lo":"-54583485"},"tensor":"38"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"37","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"27","hi":"54611749","lo":"-54583485","policy":"derived","result":{"bits":"27","hi":"54611749","lo":"-54583485"},"tensor":"39"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"38","intermediates":{"l2.T":{"bits":"65","hi":"12216087055724591045","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"40"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"39","intermediates":{"l2.T":{"bits":"65","hi":"12216087055724591045","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"41"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"40","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"42"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"41","intermediates":{"rq.p":{"bits":"47","hi":"44183133913088","lo":"-44183133880320"},"rq.q":{"bits":"31","hi":"674181120","lo":"-674181120"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"31","hi":"674181120","lo":"-674181120"}},"npu_flags":[],"op":"rescale","out":[{"bits":"31","hi":"674181120","lo":"-674181120","policy":"check","result":{"bits":"31","hi":"674181120","lo":"-674181120"},"tensor":"43"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"42","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"32","hi":"1348362240","lo":"0"},"exp.nl":{"bits":"32","hi":"1348334532","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"32","hi":"0","lo":"-1348362240"},"sm.num":{"bits":"34","hi":"4296605832","lo":"0"},"sm.sum":{"bits":"22","hi":"1048848","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"44"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"43","intermediates":{"apply.acc":{"bits":"47","hi":"57264569319424","lo":"-57234932367360"},"apply.term":{"bits":"43","hi":"3579035582464","lo":"-3577183272960"},"rq.p":{"bits":"47","hi":"57264569352192","lo":"-57234932367360"},"rq.q":{"bits":"31","hi":"873787984","lo":"-873335760"},"rq.t":{"bits":"47","hi":"57264569319424","lo":"-57234932367360"},"rq.y":{"bits":"31","hi":"873787984","lo":"-873335760"}},"k_c":"0","mac":{"a_bits":["18","27"]},"npu_flags":[],"op":"apply","out":[{"bits":"31","hi":"873787984","lo":"-873335760","policy":"check","result":{"bits":"31","hi":"873787984","lo":"-873335760"},"tensor":"45"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"44","intermediates":{"conv.acc":{"bits":"50","hi":"403447102989648","lo":"-403446274063056"},"conv.term":{"bits":"46","hi":"28631410871728","lo":"-28616592847920"},"rq.p":{"bits":"69","hi":"149056356329246381136","lo":"-149056050076514480592"},"rq.q":{"bits":"38","hi":"69409774769","lo":"-69409632160"},"rq.t":{"bits":"50","hi":"403447102989648","lo":"-403446274063056"},"rq.y":{"bits":"38","hi":"69409774769","lo":"-69409632160"}},"k_c":"0","mac":{"a_bits":["31"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"69409774769","lo":"-69409632160"},"tensor":"46"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"45","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"47"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"46","intermediates":{"ln.S":{"bits":"38","hi":"137438953408","lo":"-137438953472"},"ln.T":{"bits":"71","hi":"1180591620167655489600","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"34525727443","lo":"-34525727443"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"39","hi":"137438953440","lo":"-137438953504"},"ln.n":{"bits":"21","hi":"526821","lo":"-526821"},"ln.ng":{"bits":"38","hi":"69257469123","lo":"-69257469123"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"22","hi":"1047557","lo":"-1066014","policy":"check","result":{"bits":"22","hi":"1047557","lo":"-1066014"},"tensor":"48"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"47","intermediates":{"conv.acc":{"bits":"40","hi":"287800755818","lo":"-287426613971"},"conv.term":{"bits":"37","hi":"34930080738","lo":"-34325300219"},"rq.p":{"bits":"56","hi":"25702046498326490","lo":"-25668633760680155"},"rq.q":{"bits":"25","hi":"11968448","lo":"-11952890"},"rq.t":{"bits":"40","hi":"287800755818","lo":"-287426613971"},"rq.y":{"bits":"25","hi":"11968448","lo":"-11952890"}},"k_c":"0","mac":{"a_bits":["22"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"25","hi":"11968448","lo":"-11952890","policy":"check","result":{"bits":"25","hi":"11968448","lo":"-11952890"},"tensor":"49"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"48","intermediates":{"conv.acc":{"bits":"41","hi":"1013891941360","lo":"-1015211633152"},"conv.term":{"bits":"40","hi":"391660346630","lo":"-392170135616"},"rq.p":{"bits":"59","hi":"145045353347078880","lo":"-145234145815458816"},"rq.q":{"bits":"28","hi":"67542005","lo":"-67629920"},"rq.t":{"bits":"41","hi":"1013891941360","lo":"-1015211633152"},"rq.y":{"bits":"28","hi":"67542005","lo":"-67629920"}},"k_c":"0","mac":{"a_bits":["25"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"28","hi":"67542005","lo":"-67629920","policy":"check","result":{"bits":"28","hi":"67542005","lo":"-67629920"},"tensor":"50"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"49","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"67542005","lo":"-67629920","policy":"derived","result":{"bits":"28","hi":"67542005","lo":"-67629920"},"tensor":"51"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"50","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"67542005","lo":"-67629920","policy":"derived","result":{"bits":"28","hi":"67542005","lo":"-67629920"},"tensor":"52"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"51","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"28","hi":"67629920","lo":"0"},"exp.nl":{"bits":"28","hi":"67593888","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"28","hi":"67542005","lo":"-65536","policy":"derived","result":{"bits":"28","hi":"67542005","lo":"-65536"},"tensor":"53"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"52","intermediates":{"mul.p":{"bits":"54","hi":"4561922439420025","lo":"-4567860394789600"},"rq.p":{"bits":"54","hi":"4561922439420025","lo":"-4567860394789600"},"rq.q":{"bits":"38","hi":"69609412222","lo":"-69700018232"},"rq.t":{"bits":"54","hi":"4561922439420025","lo":"-4567860394789600"},"rq.y":{"bits":"38","hi":"69609412222","lo":"-69700018232"}},"mac":{"a_bits":["28","28"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"69609412222","lo":"-69700018232"},"tensor":"54"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"53","intermediates":{"conv.acc":{"bits":"52","hi":"1638686789442583","lo":"-1638686789254952"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"70","hi":"575300325916765384142","lo":"-575300325850893018448"},"rq.q":{"bits":"39","hi":"267895090354","lo":"-267895090325"},"rq.t":{"bits":"52","hi":"1638686789442583","lo":"-1638686789254952"},"rq.y":{"bits":"39","hi":"267895090354","lo":"-267895090325"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"39","hi":"267895090354","lo":"-267895090325"},"tensor":"55"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"54","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"56"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"55","intermediates":{"ln.S":{"bits":"38","hi":"137438953408","lo":"-137438953472"},"ln.T":{"bits":"71","hi":"1180591620167655489600","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"34525727443","lo":"-34525727443"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"39","hi":"137438953440","lo":"-137438953504"},"ln.n":{"bits":"21","hi":"526821","lo":"-526821"},"ln.ng":{"bits":"38","hi":"79474108776","lo":"-79474108776"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"22","hi":"1190937","lo":"-1234420","policy":"check","result":{"bits":"22","hi":"1190937","lo":"-1234420"},"tensor":"57"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"56","intermediates":{"conv.acc":{"bits":"40","hi":"375390816812","lo":"-377613147428"},"conv.term":{"bits":"37","hi":"40448240140","lo":"-39023432679"},"rq.p":{"bits":"57","hi":"36663294905577604","lo":"-36880343269850476"},"rq.q":{"bits":"26","hi":"17072677","lo":"-17173749"},"rq.t":{"bits":"40","hi":"375390816812","lo":"-377613147428"},"rq.y":{"bits":"26","hi":"17072677","lo":"-17173749"}},"k_c":"0","mac":{"a_bits":["22"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"26","hi":"17072677","lo":"-17173749","policy":"check","result":{"bits":"26","hi":"17072677","lo":"-17173749"},"tensor":"58"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"57","intermediates":{"conv.acc":{"bits":"42","hi":"1745976911674","lo":"-1746131147546"},"conv.term":{"bits":"41","hi":"559420407259","lo":"-562732233483"},"rq.p":{"bits":"60","hi":"289711694930978494","lo":"-289737287443455326"},"rq.q":{"bits":"29","hi":"134907520","lo":"-134919439"},"rq.t":{"bits":"42","hi":"1745976911674","lo":"-1746131147546"},"rq.y":{"bits":"29","hi":"134907520","lo":"-134919439"}},"k_c":"0","mac":{"a_bits":["26"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"29","hi":"134907520","lo":"-134919439","policy":"check","result":{"bits":"29","hi":"134907520","lo":"-134919439"},"tensor":"59"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"58","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"29","hi":"134907520","lo":"-134919439","policy":"derived","result":{"bits":"29","hi":"134907520","lo":"-134919439"},"tensor":"60"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"59","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"29","hi":"134907520","lo":"-134919439","policy":"derived","result":{"bits":"29","hi":"134907520","lo":"-134919439"},"tensor":"61"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"60","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"29","hi":"134907520","lo":"-134919439","policy":"derived","result":{"bits":"29","hi":"134907520","lo":"-134919439"},"tensor":"62"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"61","intermediates":{"l2.T":{"bits":"68","hi":"74560532562226100165","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"63"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"62","intermediates":{"l2.T":{"bits":"68","hi":"74560532562226100165","lo":"0"},"l2.k":{"bits":"26","hi":"20748634","lo":"0"},"l2.vk":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"l2norm","out":[{"bits":"18","hi":"65536","lo":"-65536","policy":"derived","result":{"bits":"18","hi":"65536","lo":"-65536"},"tensor":"64"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"63","intermediates":{"gram.acc":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"gram.term":{"bits":"34","hi":"4294967296","lo":"-4294967296"},"rq.p":{"bits":"46","hi":"17592186077184","lo":"-17592186044416"},"rq.q":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.t":{"bits":"46","hi":"17592186044416","lo":"-17592186044416"},"rq.y":{"bits":"30","hi":"268435456","lo":"-268435456"}},"k_c":"0","mac":{"a_bits":["18","18"]},"npu_flags":[],"op":"gram","out":[{"bits":"30","hi":"268435456","lo":"-268435456","policy":"check","result":{"bits":"30","hi":"268435456","lo":"-268435456"},"tensor":"65"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"64","intermediates":{"rq.p":{"bits":"48","hi":"140151225352192","lo":"-140151225319424"},"rq.q":{"bits":"32","hi":"2138537984","lo":"-2138537984"},"rq.t":{"bits":"30","hi":"268435456","lo":"-268435456"},"rq.y":{"bits":"32","hi":"2138537984","lo":"-2138537984"}},"npu_flags":[],"op":"rescale","out":[{"bits":"32","hi":"2138537984","lo":"-2138537984","policy":"check","result":{"bits":"32","hi":"2138537984","lo":"-2138537984"},"tensor":"66"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"65","intermediates":{"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"33","hi":"4277075968","lo":"0"},"exp.nl":{"bits":"33","hi":"4277039604","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"},"sm.diff":{"bits":"33","hi":"0","lo":"-4277075968"},"sm.num":{"bits":"34","hi":"4296605832","lo":"0"},"sm.sum":{"bits":"22","hi":"1048848","lo":"0"}},"npu_flags":[],"op":"softmax","out":[{"bits":"18","hi":"65536","lo":"0","policy":"derived","result":{"bits":"18","hi":"65536","lo":"0"},"tensor":"67"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"66","intermediates":{"apply.acc":{"bits":"49","hi":"141460787691520","lo":"-141473285668864"},"apply.term":{"bits":"45","hi":"8841299230720","lo":"-8842080354304"},"rq.p":{"bits":"49","hi":"141460787724288","lo":"-141473285668864"},"rq.q":{"bits":"33","hi":"2158520320","lo":"-2158711024"},"rq.t":{"bits":"49","hi":"141460787691520","lo":"-141473285668864"},"rq.y":{"bits":"33","hi":"2158520320","lo":"-2158711024"}},"k_c":"0","mac":{"a_bits":["18","29"]},"npu_flags":[],"op":"apply","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"2158520320","lo":"-2158711024"},"tensor":"68"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"67","intermediates":{"conv.acc":{"bits":"51","hi":"1039953316123840","lo":"-1039953315956630"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"269733731556356504640","lo":"-269733731512987079730"},"rq.q":{"bits":"38","hi":"125604556666","lo":"-125604556647"},"rq.t":{"bits":"51","hi":"1039953316123840","lo":"-1039953315956630"},"rq.y":{"bits":"38","hi":"125604556666","lo":"-125604556647"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"125604556666","lo":"-125604556647"},"tensor":"69"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"68","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"70"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"69","intermediates":{"ln.S":{"bits":"38","hi":"137438953408","lo":"-137438953472"},"ln.T":{"bits":"71","hi":"1180591620167655489600","lo":"0"},"ln.d":{"bits":"33","hi":"4294967295","lo":"-4294967295"},"ln.dk":{"bits":"37","hi":"34525727443","lo":"-34525727443"},"ln.k":{"bits":"26","hi":"20748634","lo":"0"},"ln.m":{"bits":"39","hi":"137438953440","lo":"-137438953504"},"ln.n":{"bits":"21","hi":"526821","lo":"-526821"},"ln.ng":{"bits":"38","hi":"73331375916","lo":"-73331375916"},"ln.v":{"bits":"65","hi":"18446744065119659974","lo":"42949"},"rsq.num":{"bits":"34","hi":"4294967296","lo":"4294967296"}},"npu_flags":[],"op":"layernorm_c","out":[{"bits":"22","hi":"1151434","lo":"-1124190","policy":"check","result":{"bits":"22","hi":"1151434","lo":"-1124190"},"tensor":"71"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"70","intermediates":{"conv.acc":{"bits":"40","hi":"291875198888","lo":"-290629930136"},"conv.term":{"bits":"37","hi":"37729037878","lo":"-37198226804"},"rq.p":{"bits":"56","hi":"29212621155904368","lo":"-29087987187591696"},"rq.q":{"bits":"25","hi":"13603186","lo":"-13545150"},"rq.t":{"bits":"40","hi":"291875198888","lo":"-290629930136"},"rq.y":{"bits":"25","hi":"13603186","lo":"-13545150"}},"k_c":"0","mac":{"a_bits":["22"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"25","hi":"13603186","lo":"-13545150","policy":"check","result":{"bits":"25","hi":"13603186","lo":"-13545150"},"tensor":"72"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"71","intermediates":{"conv.acc":{"bits":"41","hi":"1000841513872","lo":"-1000805299408"},"conv.term":{"bits":"40","hi":"445735595662","lo":"-443833930050"},"rq.p":{"bits":"59","hi":"148702029606560144","lo":"-148696648970142416"},"rq.q":{"bits":"28","hi":"69244778","lo":"-69242273"},"rq.t":{"bits":"41","hi":"1000841513872","lo":"-1000805299408"},"rq.y":{"bits":"28","hi":"69244778","lo":"-69242273"}},"k_c":"0","mac":{"a_bits":["25"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"28","hi":"69244778","lo":"-69242273","policy":"check","result":{"bits":"28","hi":"69244778","lo":"-69242273"},"tensor":"73"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"72","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"69244778","lo":"-69242273","policy":"derived","result":{"bits":"28","hi":"69244778","lo":"-69242273"},"tensor":"74"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"73","intermediates":{},"npu_flags":[],"op":"split","out":[{"bits":"28","hi":"69244778","lo":"-69242273","policy":"derived","result":{"bits":"28","hi":"69244778","lo":"-69242273"},"tensor":"75"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"74","intermediates":{"elu.p":{"bits":"33","hi":"1114112","lo":"-4294967296"},"exp.c":{"bits":"33","hi":"2818695150","lo":"0"},"exp.negx":{"bits":"28","hi":"69242273","lo":"0"},"exp.nl":{"bits":"28","hi":"69229224","lo":"0"},"exp.t2":{"bits":"34","hi":"7862368900","lo":"1870130025"}},"npu_flags":[],"op":"elu","out":[{"bits":"28","hi":"69244778","lo":"-65536","policy":"derived","result":{"bits":"28","hi":"69244778","lo":"-65536"},"tensor":"76"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"75","intermediates":{"mul.p":{"bits":"54","hi":"4794839280269284","lo":"-4794665822100394"},"rq.p":{"bits":"54","hi":"4794839280269284","lo":"-4794665822100394"},"rq.q":{"bits":"38","hi":"73163441166","lo":"-73160794405"},"rq.t":{"bits":"54","hi":"4794839280269284","lo":"-4794665822100394"},"rq.y":{"bits":"38","hi":"73163441166","lo":"-73160794405"}},"mac":{"a_bits":["28","28"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"73163441166","lo":"-73160794405"},"tensor":"77"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"76","intermediates":{"conv.acc":{"bits":"49","hi":"172204566212856","lo":"-172204566205899"},"conv.term":{"bits":"47","hi":"70366596694016","lo":"-70366596661249"},"rq.p":{"bits":"69","hi":"182810989855038226752","lo":"-182810989847652731208"},"rq.q":{"bits":"38","hi":"85128000869","lo":"-85128000867"},"rq.t":{"bits":"49","hi":"172204566212856","lo":"-172204566205899"},"rq.y":{"bits":"38","hi":"85128000869","lo":"-85128000867"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"38","hi":"85128000869","lo":"-85128000867"},"tensor":"78"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"77","intermediates":{},"npu_flags":[],"op":"add","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"33","hi":"4294967294","lo":"-4294967296"},"tensor":"79"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"78","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"20","hi":"393216","lo":"0","policy":"derived","result":{"bits":"20","hi":"393216","lo":"0"},"tensor":"80"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"79","intermediates":{"conv.acc":{"bits":"38","hi":"115701841920","lo":"-114979897344"},"conv.term":{"bits":"35","hi":"12884508672","lo":"-10428874752"},"rq.p":{"bits":"53","hi":"4052341311406080","lo":"-4027055924576256"},"rq.q":{"bits":"22","hi":"1887018","lo":"-1875245"},"rq.t":{"bits":"38","hi":"115701841920","lo":"-114979897344"},"rq.y":{"bits":"22","hi":"1887018","lo":"-1875245"}},"k_c":"0","mac":{"a_bits":["20"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"22","hi":"1887018","lo":"-1875245","policy":"check","result":{"bits":"22","hi":"1887018","lo":"-1875245"},"tensor":"81"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"80","intermediates":{"conv.acc":{"bits":"40","hi":"459945121716","lo":"-459416514016"},"conv.term":{"bits":"37","hi":"61831918806","lo":"-61446152915"},"rq.p":{"bits":"57","hi":"50323515657190992","lo":"-50265679631518592"},"rq.q":{"bits":"26","hi":"23433713","lo":"-23406782"},"rq.t":{"bits":"40","hi":"459945121716","lo":"-459416514016"},"rq.y":{"bits":"26","hi":"23433713","lo":"-23406782"}},"k_c":"0","mac":{"a_bits":["22"],"w_bits":"16"},"npu_flags":["rq_floor_mult"],"op":"conv","out":[{"bits":"26","hi":"23433713","lo":"-23406782","policy":"check","result":{"bits":"26","hi":"23433713","lo":"-23406782"},"tensor":"82"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"81","intermediates":{"rq.p":{"bits":"26","hi":"23433713","lo":"-23406782"},"rq.q":{"bits":"26","hi":"23433713","lo":"-23406782"},"rq.t":{"bits":"26","hi":"23433713","lo":"-23406782"},"rq.y":{"bits":"26","hi":"23499249","lo":"-23341246"}},"npu_flags":["rq_post_bias"],"op":"rescale","out":[{"bits":"26","hi":"23499249","lo":"-23341246","policy":"check","result":{"bits":"26","hi":"23499249","lo":"-23341246"},"tensor":"83"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"82","intermediates":{"mul.p":{"bits":"57","hi":"50464252944281103","lo":"-50464252967780352"},"rq.p":{"bits":"57","hi":"50464252944281103","lo":"-50464252967780352"},"rq.q":{"bits":"41","hi":"770023390873","lo":"-770023391232"},"rq.t":{"bits":"57","hi":"50464252944281103","lo":"-50464252967780352"},"rq.y":{"bits":"41","hi":"770023390873","lo":"-770023391232"}},"mac":{"a_bits":["32","26"]},"npu_flags":[],"op":"mul","out":[{"bits":"32","hi":"2147483647","lo":"-2147483648","policy":"check","result":{"bits":"41","hi":"770023390873","lo":"-770023391232"},"tensor":"84"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"83","intermediates":{"convT.acc":{"bits":"51","hi":"645293066257468","lo":"-645293066282492"},"convT.term":{"bits":"47","hi":"70366596661249","lo":"-70366596694016"},"rq.p":{"bits":"63","hi":"2962540467188035588","lo":"-2962540467302920772"},"rq.q":{"bits":"32","hi":"1379540407","lo":"-1379540408"},"rq.t":{"bits":"51","hi":"645293066257468","lo":"-645293066282492"},"rq.y":{"bits":"32","hi":"1379540456","lo":"-1379540359"}},"k_c":"0","mac":{"a_bits":["32"],"w_bits":"16"},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"conv_transpose","out":[{"bits":"32","hi":"1379540456","lo":"-1379540359","policy":"check","result":{"bits":"32","hi":"1379540456","lo":"-1379540359"},"tensor":"85"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"84","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"32","hi":"1379540456","lo":"-1379540359","policy":"derived","result":{"bits":"32","hi":"1379540456","lo":"-1379540359"},"tensor":"86"}],"saturated":false},{"acc32_params":[],"fits":["acc64"],"index":"85","intermediates":{"rq.p":{"bits":"39","hi":"176581178368","lo":"-176581165952"},"rq.q":{"bits":"39","hi":"176581178368","lo":"-176581165952"},"rq.t":{"bits":"32","hi":"1379540456","lo":"-1379540359"},"rq.y":{"bits":"39","hi":"176589534208","lo":"-176572810112"}},"npu_flags":["rq_floor_mult","rq_post_bias"],"op":"rescale","out":[{"bits":"25","hi":"16711680","lo":"0","policy":"clamp","result":{"bits":"39","hi":"176589534208","lo":"-176572810112"},"tensor":"87"}],"saturated":false}],"scalars":[]}],"lowering":"jpegai-int/1","set_sha256":"3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37","verdict":{"acc32":false,"acc32_first_failure":{"bits":"42","graph":"rec_y","index":"1","key":"conv.acc","where":"node"},"acc64":true,"npu":false,"npu_flags":["rq_floor_mult","rq_post_bias"],"npu_reasons":["acc32","conv_groups","op:apply","op:elu","op:gram","op:l2norm","op:layernorm_c","op:sigmoid","op:softmax"]}} \ No newline at end of file diff --git a/wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad.json b/wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad.json deleted file mode 100644 index 95b0078b4..000000000 --- a/wai/ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad.json +++ /dev/null @@ -1 +0,0 @@ -{"capability":"wai.image.jpegai","certificate":"wai-ops/1 bounds","graphs":[{"graph_sha256":"855f51089f67930d3f2f6a9de47ecbd246bbe138b1e6935ac8970546fa998b43","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_y","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"20","hi":"325039","lo":"-323175"},"conv.term":{"bits":"14","hi":"4096","lo":"-4096"},"rq.p":{"bits":"20","hi":"325039","lo":"-323175"},"rq.q":{"bits":"17","hi":"38494","lo":"-38383"},"rq.t":{"bits":"20","hi":"325039","lo":"-323175"},"rq.y":{"bits":"17","hi":"38494","lo":"-38383"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"9"},"npu_flags":[],"op":"conv","out":[{"bits":"17","hi":"38494","lo":"-38383","policy":"derived","result":{"bits":"17","hi":"38494","lo":"-38383"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"17","hi":"38494","lo":"0","policy":"derived","result":{"bits":"17","hi":"38494","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"18","hi":"119507","lo":"-113009"},"conv.term":{"bits":"15","hi":"15748","lo":"-15367"},"rq.p":{"bits":"18","hi":"119507","lo":"-113009"},"rq.q":{"bits":"10","hi":"270","lo":"-442"},"rq.t":{"bits":"18","hi":"119507","lo":"-113009"},"rq.y":{"bits":"10","hi":"270","lo":"-442"}},"k_c":"136365","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"10","hi":"270","lo":"-442","policy":"derived","result":{"bits":"10","hi":"270","lo":"-442"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"10","hi":"270","lo":"0","policy":"derived","result":{"bits":"10","hi":"270","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"16","hi":"31800","lo":"-31877"},"conv.term":{"bits":"15","hi":"16256","lo":"-16256"},"rq.p":{"bits":"16","hi":"31800","lo":"-31877"},"rq.q":{"bits":"15","hi":"15017","lo":"-15177"},"rq.t":{"bits":"16","hi":"31800","lo":"-31877"},"rq.y":{"bits":"15","hi":"15017","lo":"-15177"}},"k_c":"132104","mac":{"a_bits":["8"],"w_bits":"9"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"15017","lo":"-15177","policy":"derived","result":{"bits":"15","hi":"15017","lo":"-15177"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"15","hi":"15017","lo":"-15177","policy":"derived","result":{"bits":"15","hi":"15017","lo":"-15177"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"15","hi":"15177","lo":"0","policy":"derived","result":{"bits":"15","hi":"15177","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3971","lo":"-686"},"rq.q":{"bits":"13","hi":"3971","lo":"-686"},"rq.t":{"bits":"13","hi":"3971","lo":"-686"},"rq.y":{"bits":"13","hi":"3971","lo":"-686"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3971","lo":"-686","policy":"derived","result":{"bits":"13","hi":"3971","lo":"-686"},"tensor":"12"}],"saturated":false}],"scalars":[]},{"graph_sha256":"75bff95e2652c45176ec50c0f252a579d82cae89074dc75cc23d5e55a163a2e5","inputs":[{"hi":"32","kind":"data","lo":"-31","max_h":"4","max_w":"4","policy":"check","tensor":"0"}],"name":"hs_uv","nodes":[{"acc32_params":[],"fits":["acc32","acc64"],"index":"0","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"7","hi":"32","lo":"-31","policy":"derived","result":{"bits":"7","hi":"32","lo":"-31"},"tensor":"1"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"1","intermediates":{"conv.acc":{"bits":"19","hi":"181871","lo":"-182589"},"conv.term":{"bits":"13","hi":"4032","lo":"-4096"},"rq.p":{"bits":"19","hi":"181871","lo":"-182589"},"rq.q":{"bits":"16","hi":"22733","lo":"-22824"},"rq.t":{"bits":"19","hi":"181871","lo":"-182589"},"rq.y":{"bits":"16","hi":"22733","lo":"-22824"}},"k_c":"524287","mac":{"a_bits":["7"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"16","hi":"22733","lo":"-22824","policy":"derived","result":{"bits":"16","hi":"22733","lo":"-22824"},"tensor":"2"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"2","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"16","hi":"22733","lo":"0","policy":"derived","result":{"bits":"16","hi":"22733","lo":"0"},"tensor":"3"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"3","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"127","lo":"0","policy":"derived","result":{"bits":"8","hi":"127","lo":"0"},"tensor":"4"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"4","intermediates":{"conv.acc":{"bits":"18","hi":"88914","lo":"-107059"},"conv.term":{"bits":"15","hi":"15367","lo":"-15748"},"rq.p":{"bits":"18","hi":"88914","lo":"-107059"},"rq.q":{"bits":"8","hi":"69","lo":"-105"},"rq.t":{"bits":"18","hi":"88914","lo":"-107059"},"rq.y":{"bits":"8","hi":"69","lo":"-105"}},"k_c":"136365","mac":{"a_bits":["8"],"w_bits":"8"},"npu_flags":[],"op":"conv","out":[{"bits":"8","hi":"69","lo":"-105","policy":"derived","result":{"bits":"8","hi":"69","lo":"-105"},"tensor":"5"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"5","intermediates":{},"npu_flags":[],"op":"relu","out":[{"bits":"8","hi":"69","lo":"0","policy":"derived","result":{"bits":"8","hi":"69","lo":"0"},"tensor":"6"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"6","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"8","hi":"69","lo":"0","policy":"derived","result":{"bits":"8","hi":"69","lo":"0"},"tensor":"7"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"7","intermediates":{"conv.acc":{"bits":"16","hi":"17422","lo":"-17319"},"conv.term":{"bits":"15","hi":"8832","lo":"-8832"},"rq.p":{"bits":"16","hi":"17422","lo":"-17319"},"rq.q":{"bits":"15","hi":"8425","lo":"-8660"},"rq.t":{"bits":"16","hi":"17422","lo":"-17319"},"rq.y":{"bits":"15","hi":"8425","lo":"-8660"}},"k_c":"243148","mac":{"a_bits":["8"],"w_bits":"9"},"npu_flags":[],"op":"conv","out":[{"bits":"15","hi":"8425","lo":"-8660","policy":"derived","result":{"bits":"15","hi":"8425","lo":"-8660"},"tensor":"8"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"8","intermediates":{},"npu_flags":[],"op":"pixel_shuffle","out":[{"bits":"15","hi":"8425","lo":"-8660","policy":"derived","result":{"bits":"15","hi":"8425","lo":"-8660"},"tensor":"9"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"9","intermediates":{},"npu_flags":[],"op":"abs","out":[{"bits":"15","hi":"8660","lo":"0","policy":"derived","result":{"bits":"15","hi":"8660","lo":"0"},"tensor":"10"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"10","intermediates":{},"npu_flags":[],"op":"clamp","out":[{"bits":"13","hi":"3967","lo":"0","policy":"derived","result":{"bits":"13","hi":"3967","lo":"0"},"tensor":"11"}],"saturated":false},{"acc32_params":[],"fits":["acc32","acc64"],"index":"11","intermediates":{"rq.p":{"bits":"13","hi":"3961","lo":"-684"},"rq.q":{"bits":"13","hi":"3961","lo":"-684"},"rq.t":{"bits":"13","hi":"3961","lo":"-684"},"rq.y":{"bits":"13","hi":"3961","lo":"-684"}},"npu_flags":[],"op":"rescale","out":[{"bits":"13","hi":"3961","lo":"-684","policy":"derived","result":{"bits":"13","hi":"3961","lo":"-684"},"tensor":"12"}],"saturated":false}],"scalars":[]}],"lowering":"jpegai-int/1","set_sha256":"60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad","verdict":{"acc32":true,"acc64":true,"npu":true,"npu_flags":[],"npu_reasons":[]}} \ No newline at end of file diff --git a/wai/ops-conformance/graphs/lower_jpegai.jsonl b/wai/ops-conformance/graphs/lower_jpegai.jsonl index 4f42344a6..b76bc6b5d 100644 --- a/wai/ops-conformance/graphs/lower_jpegai.jsonl +++ b/wai/ops-conformance/graphs/lower_jpegai.jsonl @@ -2,3 +2,11 @@ {"decodes":[{"expect":{"refuse":"field_range"},"inputs":[{"data":["33","32","-31","0","-31","32","22","-31","32","-4","-31","-31","-27","28","-31","0","32","23","15","0","32","7","-27","25","1","-16","32","-14","-31","30","-31","0","-31","-31","29","-31","32","10","-12","0","32","32","-31","0","32","0","-22","-19","-28","7","17","30","-3","32","0","-31","0","-20","-31","32","26","32","-31","0","15","26","-18","-31","32","-17","0","-31","10","24","-31","-31","17","-31","29","32","0","27","-31","32","32","27","11","-31","-31","7","-29","0","-31","0","0","32","32","19","-31","32","-31","24","-31","-31","-31","32","32","32","32","0","0","-31","32","-31","-21","-31","32","-13","15","-31","30","-31","-31","0","32","-31","32","32","-31","-31","6","-31","11","32","32","12","32","-28","32","32","-9","32","-25","-31","32","32","32","-22","-14","28","13","0","32","-31","-31","26","28","-31","2","32","32","-31","1","-31","24","-29","-31","32","-16","32","0","-13","-31","32","-31","32","-17","-8","-18","-31","-31","-31","-23","32","32","-31","9","20","0","32","32","27","-31","32","-31","-31","8","32","21","32","-23","5","8","-31","-31","30","32","0","-4","-31","14","32","32","-31","-31","32","32","-31","-2","-4","-31","0","24","-31","20","0","8","32","9","19","32","32","32","-1","-1","32","-31","19","-31","0","32","27","0","0","32","-31","-31","-31","-23","0","24","24","32","-15","-10","0","-8","32","32","25","32","16","-31","31","-31","-31","32","32","-31","9","32","-31","20","0","0","29","-31","-31","-31","32","32","-20","32","-30","-3","0","25","20","32","31","20","-31","-8","8","32","32","-13","0","-31","-31","-24","32","32","27","-31","32","32","28","32","0","6","-31","0","32","-31","-17","32","22","32","-25","28","-31","-31","-12","-29","32","32","0","32","6","-23","-31","0","-16","-31","-6","10","-31","21","-31","32","-13","-31","32","14","11","-31","-31","0","-31","-5","17","0","-31","32","-17","2","32","-31","32","-30","32","32","-31","-30","-31","32","32","-31","-13","11","-31","-17","-31","-26","3","32","32","-7","32","32","32","24","-31","12","32","-31","15","32","-5","-31","32","-20","32","-31","5","32","-31","-7","-31","0","-7","31","-31","32","-2","32","-31","2","-31","32","-31","32","-31","-22","13","-31","-11","32","-31","32","-31","0","0","-31","32","-31","18","-31","-31","-31","-31","32","0","0","-31","-14","32","4","31","-22","0","32","-22","23","32","32","30","-3","-31","-31","27","32","-31","25","32","13","32","-31","32","0","-31","8","-31","-31","32","-31","32","10","32","0","0","32","5","-31","2","-31","27","-31","-18","-31","-31","4","4","22","-31","32","0","0","32","32","-24","0","-31","-31","0","-31","0","-31","-31","0","2","32","0","0","-31","4","22","32","0","3","21","-31","0","5","29","-31","-12","32","28","17","0","-31","-31","32","6","-5","-4","-31","32","25","32","32","0","32","0","32","-31","-31","-16","24","0","-31","32","32","22","-24","0","9","-25","-31","32","32","32","6","-31","32","32","3","5","-25","32","-9","16","-13","32","32","-20","-31","32","0","-31","-31","32","32","6","0","-13","32","-28","13","-31","-31","0","-10","-31","-31","-31","-31","-10","-31","0","-16","32","-31","0","-24","25","-31","-10","-31","-31","-23","32","-31","32","32","-31","32","-29","-31","-31","-15","32","32","32","0","32","-31","-17","-31","0","32","-31","-15","0","-31","-17","32","32","32","-4","24","22","32","-31","-31","-4","32","-31","32","-31","25","6","32","32","-31","32","-31","-31","0","32","-25","-1","32","0","32","-30","-22","32","32","-22","32","-31","0","10","0","-4","16","-22","32","32","-31","23","0","32","24","0","-31","0","0","-31","32","32","-15","0","32","0","-31","-31","0","32","32","-31","32","32","-31","32","-31","32","32","-29","-31","-9","-31","-13","27","0","-31","4","-31","32","-31","32","32","32","-22","-31","-31","-17","-31","14","32","-22","8","-31","-13","-31","32","0","0","-31","-31","32","-31","2","32","32","14","-6","-11","32","-28","32","32","32","0","-9","32","32","-31","32","32","-19","-31","2","19","0","-31","32","0","32","32","-31","-31","-31","-31","6","-31","-3","0","-7","-31","-31","32","0","-31","10","32","15","32","-31","-31","32","-15","-15","27","0","28","32","-31","-19","29","32","0","-31","32","-31","-31","15","-31","-31","-31","-31","32","-31","0","2","1","32","-3","29","32","-31","32","29","-23","-7","-31","-31","29","32","17","-31","-15","-31","32","0","32","32","-1","-31","-31","-31","32","-31","32","-31","0","-26","-19","0","-31","23","0","0","-7","32","18","23","0","19","-27","32","-16","-31","-16","-1","32","-6","3","-7","18","32","32","-14","13","26","12","10","29","-31","-18","-31","24","-27","32","32","-31","-6","-11","-11","32","0","-12","-31","32","-9","32","-31","14","28","7","32","14","-26","-8","32","-31","32","-31","0","-12","13","-6","-31","0","-31","0","-31","-5","0","3","9","-29","-26","-6","32","-10","1","-26","32","-17","0","0","0","-12","-31","32","22","-31","3","0","0","-15","32","-5","0","15","32","0","-31","-6","-31","32","-31","-31","0","32","-31","23","6","32","32","4","-31","32","-31","32","32","-10","-31","32","-11","24","32","-31","-31","-31","-3","0","-4","32","-31","1","11","32","-22","32","-21","-31","-31","0","0","-31","-31","9","-20","32","0","-31","32","29","-31","32","4","0","-8","-13","32","6","32","-31","0","27","19","2","-31","32","-31","-31","-17","-18","32","32","32","-31","32","32","3","-7","-31","-30","32","-10","6","-23","23","-31","-31","-31","-14","3","-31","32","-31","-31","32","32","32","28","0","-31","32","0","11","32","-31","-21","-29","-30","-20","-2","-14","32","32","-31","-31","-31","-27","-29","10","-31","-31","-31","32","32","19","-8","32","-31","32","-21","-31","0","-31","17","32","28","-31","19","-15","32","0","-31","0","-31","0","32","32","0","-31","-29","-31","27","-19","-31","32","-1","-31","25","32","-31","0","32","-31","-16","-31","32","15","32","-17","-31","32","32","-31","19","10","-6","-19","-15","6","12","-31","-31","-31","32","-14","19","-31","5","-31","32","0","32","-21","11","21","32","32","-31","32","-24","0","-31","-31","22","32","32","32","-8","32","23","32","-31","32","-31","-31","26","26","25","0","0","32","-26","23","0","-31","32","32","-31","-31","32","32","-9","32","-21","17","-29","32","28","-23","-30","32","32","0","-31","0","18","-31","32","0","-3","-28","0","6","32","17","-20","0","-31","-20","32","29","-31","32","-31","19","32","32","32","32","0","32","27","21","32","32","0","32","-31","32","30","32","32","-31","-31","32","0","32","32","-31","32","29","-24","5","14","0","-28","32","-28","32","32","32","32","32","32","-3","-31","32","32","32","32","0","-31","-31","0","0","-31","-31","32","-21","18","-31","0","32","-1","-31","-21","32","18","32","32","0","31","-31","0","32","1","0","31","-31","-12","-31","32","-31","32","32","15","-31","-31","-31","-31","-31","-4","32","0","-31","-30","-31","5","-31","32","32","-30","-31","-31","20","24","32","31","30","-31","-31","32","-18","0","-30","32","10","-31","-31","11","-31","-14","-31","-31","32","-18","32","-31","-31","32","-31","32","-11","32","-22","32","32","-31","-12","32","-31","32","0","0","32","32","32","32","-8","0","-15","-31","0","-22","-24","-31","32","0","18","32","-31","32","-31","-7","0","6","32","-29","13","-31","18","32","32","-23","-31","-14","32","32","32","4","12","5","-31","32","32","18","-31","-31","32","10","-24","-31","32","8","13","29","0","-31","-31","-14","-29","0","-15","32","-31","-4","32","-31","32","-31","-31","32","23","-18","-31","19","16","-31","28","0","16","-31","-31","32","0","8","-31","-31","-31","-31","-31","-31","6","32","-14","-3","0","-31","-1","32","32","0","32","-31","-31","-31","-18","-31","0","-31","32","32","-13","32","32","0","32","-31","0","-31","0","32","32","15","-30","-31","32","-18","16","-21","-3","-10","32","29","-9","32","-31","-14","30","28","0","-31","-28","12","17","0","-31","-31","1","13","32","-31","21","24","32","-31","-31","32","-31","21","-31","32","-20","32","24","32","9","32","32","9","0","-15","0","11","10","24","32","0","0","24","-31","32","28","32","0","32","15","-31","-31","-31","-31","-31","32","32","32","0","32","-31","32","32","-31","32","-31","32","12","7","18","32","25","2","0","5","32","0","32","4","-10","-31","0","32","5","-7","32","-29","32","0","-14","0","32","0","-31","32","0","-31","9","0","32","-31","0","-31","-31","0","0","32","-31","19","-14","6","32","32","-5","-31","32","32","-6","-4","0","32","21","32","-31","32","-31","7","-23","-31","32","-31","10","32","0","32","-31","4","18","0","8","-31","0","6","-31","-31","-16","-31","13","0","32","-31","22","15","0","-30","-31","32","-23","32","16","-2","29","0","0","-31","-31","-2","6","17","-31","-31","32","-31","32","-31","2","0","-31","11","-4","0","32","0","-31","0","32","0","-13","32","-23","32","-31","10","-16","-9","32","0","9","32","32","32","18","-31","30","-13","-31","-31","0","-31","0","32","-3","15","0","0","-7","-31","-25","-31","-31","32","32","32","-4","1","-10","0","-31","32","32","32","32","0","0","-31","-8","-31","-18","32","-31","25","32","-31","2","-17","-31","-31","3","-31","-31","-31","-31","-31","-31","8","-31","6","32","16","32","32","-31","32","-2","-31","-7","30","29","-31","32","-31","0","32","-31","-25","-31","-31","-28","31","-31","-22","0","-31","-24","32","-6","0","32","0","32","24","-31","15","-31","-31","7","10","-31","-31","32","32","32","-14","32","16","21","-25","32","-8","-8","-3","-19","3","27","32","0","3","-31","-31","0","32","-14","32","0","0","-15","0","-12","-31","32","26","0","-31","32","-31","-31","18","-31","-31","0","32","-31","32","32","-31","0","32","25","16","22","-29","-31","-13","32","0","-31","32","32","-31","-31","-2","32","-31","29","-31","1","-31","0","26","32","22","32","32","-31","-31","-12","-31","0","6","32","32","22","-31","32","32","32","9","32","-20","-17","5","-25","32","-8","20","-28","0","-18","-6","-29","0","-31","-31","-31","0","-4","-31","6","-26","16","-31","-30","-5","32","32","32","0","0","32","-25","-31","-9","-31","9","19","32","25","-31","32","4","32","13","-31","32","-31","-22","8","-9","32","-6","-31","-31","32","-31","-31","-10","-31","-31","32","0","26","11","-19","32","32","32","-31","-8","-17","-26","-17","-31","32","-31","-31","-1","11","32","32","-31","32","3","-15","0","0","11","32","32","-15","-31","-11","-3","-31","-31","32","0","32","32","-31","-31","-31","0","32","-18","-31","17","9","-31","-30","27","-31","32","-31","-4","-7","-20","-5","0","-28","-31","-17","19","-31","7","-15","0","-31","-10","0","32","-5","32","-31","-31","0","32","32","-11","23","-31","32","-31","32","-29","32","-13","-31","32","32","14","-27","-31","-31","32","0","-2","-31","-15","32","-24","32","31","-14","32","32","32","-26","0","-31","31","0","-8","0","25","32","-31","-13","-22","21","4","0","-21","3","-31","-11","32","-31","0","27","-26","32","32","-12","-31","-31","-31","-1","-31","-31","-31","0","32","-17","-19","25","32","32","-11","22","32","0","-27","8","-21","32","32","-31","-11","14","-6","-31","-31","32","32","23","7","-31","-31","-6","-31","28","32","32","0","15","32","32","-31","32","0","32","-31","15","-20","32","18","32","-31","-19","-31","-31","2","32","-31","-31","-1","32","0","32","-31","32","32","0","-31","26","32","-31","32","0","-31","32","-31","-31","0","-31","3","-20","-31","-31","-28","32","-31","-31","-31","-31","32","-16","-31","32","32","19","-31","-31","-5","-15","32","32","3","14","32","11","-20","32","-13","-22","32","-31","0","0","32","-31","0","9","-24","32","32","-31","-13","14","0","-31","0","0","-31","-23","32","32","32","19","32","30","0","-31","3","-31","-31","-31","32","-31","-31","-23","12","-13","32","-31","32","32","21","-31","-31","32","-25","19","-31","-31","3","32","32","32","32","-31","0","-31","14","32","1","-21","-31","21","32","32","-31","-31","-16","25","32","32","-31","-31","32","-31","-17","9","-29","32","19","32","-31","29","-31","-26","30","32","32","32","-17","27","32","2","0","32","31","17","0","0","12","28","-31","32","32","32","32","-31","29","32","0","0","-31","-3","-31","-31","-31","0","-31","32","-4","32","-10","-23","-10","4","-24","-18","-8","17","-4","11","9","-31","32","30","-2","32","32","4","-9","-31","32","32","32","-31","10","10","27","-31","-15","-9","-29","30","-18","32","-14","15","-12","-9","-31","32","-31","-31","32","-25","15","20","28","6","0","-21","10","32","-31","0","0","7","32","-14","-31","-8","-31","-31","-31","-31","0","-31","32","-20","32","-31","-31","-31","0","32","-16","-31","0","4","15","-31","32","22","-31","0","30","-31","-31","32","32","-31","-31","32","-31","-2","32","-31","-2","-2","32","-15","-12","12","3","32","32","-31","-31","-31","-17","-31","31","32","0","32","31","-31","-8","32","31","19","32","32","32","32","32","32","32","-31","-31","-5","6","8","-4","-31","32","-31","-31","-10","-31","0","0","-25","32","-31","-31","32","-31","-31","17","29","-12","32","0","0","-12","-28","12","32","32","32","0","-31","-31","32","-28","12","18","-31","-14","-31","0","20","-17","17","-31","0","32","7","-21","32","13","0","28","25","28","32","32","32","15","14","32","-31","32","32","32","-31","-31","32","-18","32","-31","32","32","-19","12","32","32","32","-18","32","32","0","-31","-31","0","32","32","-31","-31","32","-4","32","17","-9","32","0","-9","-5","-11","3","32","-31","32","0","13","32","32","-17","32","11","8","-31","-31","-31","-9","0","32","-8","-1","32","0","-19","-31","32","-31","0","-31","-31","32","-31","32","31","32"],"shape":["160","4","4"]}],"scalars":[]}],"graph":"57484731010100000d0000000c0000000100010000000000000000040000000000000000040000000400000000000000000000000000000000000000000000000c000000a000000080020000e1ffffffffffffff2000000000000000a00000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000000a00008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a000000080000000000000000000000000000000000000000b01010000000000010000001000000080ffffffffffffff7f00000000000000010101000100000002000000b60200000200000001000000010000000100000001000000000000000000000001000000020000000001000200040000040307000000080000001d00e0ff52002c0052000c005f0019007b00b8fff1ff6100a8ff0a00baffe8ffc1ff650048006400c6ff2400c8fffdff3e004600d7ff98ff54002c00e3ffe5ffd4ff4a00020012007e00e5ff80ff0c007d003300daff8eff5500a3ff80009aff5f003600fcff23007b0042001000f7ff5e005100efff51007800acff1900b8ff2400ccffd1ff7b004000390095ff0800f3ffd8ffdeff620046005a0020004e006800abff0b0097ff1c003f00efffc2ffcaff3f001900b9ffb4fff2ff7f00f5ff5200b5ff9dff5000210078007200b3fff0ff5100c0ffecff5800590060001c007000f7ffbcff07006a0080008affb4ff36001300d5ffd5ff99ffb7ff37008cffe0ff79006c004700cdffe5ff0f00bdffdaff6800c4ffc2ffa0ff6700170096ff4600a8ff82fff7ff7700affffcff9bff480075006300d6ffe8ff080025003a006700c0ff84ffbbff160059005f00ecff5500cdffe8ff50000900c9ff7200adff84ff90ff4e0094ff2100c7ff28002600c7ffffff85ff08006700f7ff4000fcff06006100080013003c00ceff2d006a00f6ff5e00b0ff600045006a001400040063008eff3100e1ff180014007c0080005700e9ffa8ff470089ff3000d1ff9dff2f00f9ff4b0078002100a8ff6b006100340020001d008dffbdff4e00ebff1b003300d5ff1d00caff82ff1300c6ff2100a6ff04006c0092ffafff82ffaaff220084ff620039002e000f005a008bff34009dffe4ff96ff4d004500fffff5ff24007e0046003400e5ff30007a00f1ffa9ffdeffc6ff0d00630099ffeaffb5ff3100feffecffdaffb2ff4700d0ffcffff1ffadffe4ff6f00acff4700c1ff5000e2ff770038001600bcff1e006a001e0008000400ffff1700ddff0f00bcff190079000c0101000200000003000000000000000b01010003000000040000001000000080ffffffffffffff7f000000000000000101010004000000050000005a0000000200000003000000030000000100000001000000010000000100000001000000010000000001000200040000080a6499fffff39cffff87e821d990f17c05f5d5aab774d93b7a88563065d7b4d90858741d0243fb7104746370260c0101000500000006000000000000000b01010006000000070000001000000080ffffffffffffff7f000000000000000101010007000000080000002c5a0000000a000001000000010000000100000001000000000000000000000001000000020000000001000200040000050501070106040107070502030401020307070607050304020404010705010201070604010405010703030604060303020502040503020101050401060103030706040602030703040205020504040505070303070702060404050102040401040706040605070106020301020105060504050101060702040505060602040407070201020604050202040206010602060101060303050503060407060201070703060207010402060507040603060103070107010605050602070602030502050103040106060704030305010706020502010707070707030504030707050703040704050501010401020607010105010701050202030105020303030702060706010303020607070506040202060703010102050607070105050707050706020701010404040704030507030402070401050406010606010704050606030407030503060701030105070502050203060502070206010705030705050206050305050702060204010106070101020505060105040701030701050504010605040106070504030606030702050205010606050706040702010304020703020202030304020607010207020401060501050702050603060205040504030607030302070603050706020403040701030503050403010502050105070204070102060602040203060605070603060701040201020506060606030306050706020206070307040101040701060501030201060407040201060201050402070307070204040105060704040601030502010503050407070605040704060106060701040602030405020602020304010404040605010705060704050402030306020601020707060305010507010603040706070304010106050301030502040606040601010503020302040104070502060503060306020503060507020407030401050401070307070604020602030504030403020404040501020404070106050106010707040701040703050502030105070405040201040305050304010305010606040601010502010703010603050304050701010201010407030104020606050503050105070201030306020204070103010203020407050503020604040506030704030204040207030701040206030104040105030406020701070406010202030202040607070502070305030402010205050206020101010506050205010402070105040401040304040607070305010605050703020201020604060701050404060503020505020107040702050606010204020203070201020302030503040504010201050702030603030603060402020503010107030102010705010703010402070502070206030401060402050706030103040701050405070405070207070604050502010105010301020304020201040104070302070105050603010402050202030707070607070204040605050302010706010407060204010303050205060202050406070604020107070107010301050402010603020602010107060503050606050106070106070401020404020101060404010203040301070605070601020605010707020207020307070702050406030305030605050206020303070702030406040302030307050306060103030501020702070501040205040102040403030504030401070706050204070301030501060607030503050202070304020304020604030403050307070304030704050205010601070303010303010607070601060203070207050102060602040605050103030207020507010105030101020107030206060105010303020602010606010605040607050506050505040607040101060205060306040105050205040401070307070207070507050501060602070702040205050103020703020505050707040203050703020202040202020705060305020601070107060502010302010302050107030604030704070102070302010301070707010303070705060406030402040305030707030507030204050107030404060105060702060201060205020202010703060103040301030707020505040701070604070607020603040705010305060206070303010705060701020204040403010103030607030204060401060103060606050507050203040207030407030507050502060205060602030505020101030702070405040107070705030704060305040605030104030505030205060104030204010406070703060507030107020306070406020604020507020707060101020301050401020303050705040101050605010201030106040102010102020203030501070205050304070201010201030107060705010501030403010104040604040402030206060707050206070703030501030503030303050606030403030107060305060604060502020502070201060406040307020301010401010703030301030706010406020506060305030702070403060702040103030503040704070607010502060505020301010201020505040606030402010107040203020103060103020301050706050304050205010301010607060205030107060205030407050302020104010603030301010303070303040303030704030306010507040603020104050201060605030504050106030302050104070704030706070607050502040304030706020503010603040504040501020601020705010607040601070102060207060605050507050407040702060305020707050405040302030206060506040502030106070207060403030706060705010303010304050203060401060404010505050706030704070702010506020405070703020305060601070704020607040401060402060601060305020104020304060605050302020706060303030201070603070105020506070707050202070606020503040302060502030406050601040505070605050406070105070501010302020405030507070406020501070304040201070406060205010106020106070107040206050607010403030706070505070704010304050607030704030501060205070307050601060506020404060602010707030605040704020501030607050104020204040407070405010102010502010505030402060601050307010505060105020507020601010404020703060105050603010202010503040404010402020304070504010501030702030404010105040104060105060502020601020505070103060307030607020603050605050604050104030303050402020303020502050705070107060605040102030601030402010501060303010101070605020703020606060505060106070605010203040603030706010402050202050501070304040606040302010305060406040103030206030201060603070702050401010704020603050105030304030604010506040404050404070207060403060607060403030404050403030306010301040505070706030602020104010701070301020203030505020302040101030406040107010305030700000029000000250000003f000000040000003100000028000000270000003a0000001a0000000b0000003c00000006000000400000002700000039000000190000001700000012000000140000002c000000210000003200000034000000310000001f0000000f0000002c000000010000003400000013000000140000003a00000037000000280000000b0000000a00000018000000120000000100000003000000220000003c00000010000000360000001d0000001800000020000000160000001d00000006000000380000001800000034000000160000000d0000000b0000003a0000001c0000000c0000003c000000340000001d000000340000001f000000350000001b000000220000003c000000110000000900000003000000300000002a000000090000003e000000370000002f00000033000000020000000c0000003c0000003d0000003f00000007000000010000001a00000037000000080000002c000000090000001c00000033000000390000003c000000210000002b0000002400000020000000170000001e0000003d0000000d0000002d000000390000000a0000001c0000002a0000000c0000003a0000003b000000170000000e0000002e0000003a0000002f0000003d000000310000003e00000019000000290000001c000000090000003c0000003a00000001000000140000002f00000005000000270000000a000000360000000a000000340000001d000000120000002d0000003b000000080000003f000000100000002e000000030000003d0000002200000032000000090000003a0000002a00000010000000170000001800000022000000160000000b000000110000002c000000040000000f0000001200000010000000290000003c0000002c000000060000001d000000220000002900000013000000210000000400000011000000190000000b000000100000002b0000001d000000070000003100000014000000240000000d0000003100000016000000300000000900000014000000350000002e0000000f0000002a0000003a00000017000000230000002a0000002e0000001900000013000000250000002f000000170000002100000006000000100000000d00000040000000180000001a00000003000000080000003b00000021000000280000001c000000110000001400000037000000350000001900000001000000150000001b0000003e000000360000002b000000260000000e00000001000000170000000a000000120000001800000018000000300000000c000000310000000b0000001a00000025000000230000000c0000000d0000000b0000000b0000002400000010000000240000003c00000036000000210000001600000006000000250000001d0000001f000000020000001400000018000000290000002600000035000000140000002e00000017000000280000002c000000010000001b0000002d0000001900000016000000150000000c0000003f0000002100000020000000380000001f000000380000002d00000011000000250000003b000000300000001000000010000000300000002f000000190000001a0000000200000005000000060000001c00000003000000330000003c0000000a000000360000000a0000003e000000140000004000000019000000130000004000000018000000060000003e00000003000000400000000c000000030000002c0000001f000000150000002e0000002b0000002f000000230000002e0000002b00000012000000400000001f000000220000001e000000300000000600000032000000130000000f00000015000000390000001e00000010000000310000000a000000320000001600000001000000040000002b000000350000000f000000240000003e0000002c0000002f00000008000000020000002b00000003000000200000001800000040000000010000000a000000250000003b0000003f000000300000000a0000001d0000003d0000002d0000002900000039000000010000000b0000001d0000002c0000001400000027000000380000000a0000002a0000003e000000290000000b00000022000000340000003e0000001b000000010000003500000010000000340000002f0000002a0000000900000028000000060000001d000000390000000c0000002d0000001b000000210000003c0000003e0000003600000040000000010000002e00000014000000080000001a0000003b0000000d00000004000000070000001f00000007000000150000001700000029000000200000003a00000009000000210000001b000000200000002b000000110000001a000000280000001d0000001a00000035000000080000001f0000003a0000002c00000028000000140000000600000007000000080000003f000000210000003b0000002a0000000f00000028000000300000000a0000000c00000002000000160000001d00000037000000230000002b0000000d0000000800000010000000340000003b0000002a00000014000000170000001f0000000c0000000300000010000000030000002e000000360000001c0000000a000000200000000400000023000000320000001d0000003f0000003800000028000000400000001300000031000000350000002200000040000000370000002f00000039000000390000003f00000020000000060000001d000000080000003b0000002a0000003c00000012000000090000003c000000090000001e00000011000000240000001b00000007000000390000002a000000390000001c00000008000000080000002d000000070000003b0000003a00000018000000290000003e00000006000000070000001800000031000000040000000c00000018000000190000003b000000120000000a00000032000000270000001c0000000a00000031000000240000003f0000001e0000003f0000002300000030000000300000002400000033000000230000002a00000023000000360000003e000000160000002d0000003300000017000000270000003400000024000000180000001000000005000000290000002800000001000000290000003000000039000000230000003d00000027000000350000002b0000000a00000014000000230000001200000001000000200000001700000020000000190000000a0000001f00000032000000080000003800000032000000310000000200000039000000370000001b0000003d0000002c000000320000003700000003000000210000003c000000300000000c0000002b000000130000002c0000001500000037000000400000003a00000032000000400000002f00000040000000350000002100000007000000130000000d000000330000002f0000000d0000002e0000000f000000100000002f0000000f0000000700000006000000160000003f000000040000003a00000033000000260000000c000000160000000a0000000a0000002b0000003e0000001f0000002d0000003e00000034000000390000001c0000001200000020000000340000001c0000000a000000120000002c000000090000003e000000210000003b0000000c0000002d0000001d000000060000001200000028000000340000000b000000350000003400000034000000160000003f000000030000000f0000003f000000040000001b0000003e000000110000001a00000031000000220000002100000008000000200000001a0000002d000000360000000e000000150000001b000000350000003d00000027000000060000003f00000027000000030000001b00000021000000230000002b00000036000000140000002d0000000700000040000000140000001f00000033000000170000003b0000003b00000024000000340000003c000000010000000e0000002300000017000000220000003f0000003d0000001b00000036000000200000003a0000002400000029000000080000001f0000001f0000000e0000000800000027000000140000002a000000070000003a0000003c0000001d0000001f0000001900000009000000170000003c000000120000003f000000330000002a0000001e00000034000000350000000800000037000000090000002e0000001b0000002b000000140000002d0000000e0000003d000000270000001f0000002c000000220000003e0000002d000000290000003d0000003800000021000000120000000e00000014000000180000003e0000002500000038000000370000003a00000034000000190000000d000000320000001c00000031000000240000001a00000036000000250000003a00000004000000130000003c0000001d0000000b0000001d0000003c0000002d0000003f0000001e000000190000000300000026000000030000003100000039000000010000002e0000000c0000000200000019000000400000003e0000003a0000003d0000001a0000000f0000003a000000090000002c0000003a0000003b0000002900000020000000200000001e000000370000000700000037000000290000001f0000002600000019000000330000000d00000005000000380000002f00000011000000220000003a00000014000000360000003c0000000b00000033000000270000002300000013000000080000000d0000002f000000350000002d000000200000002c000000080000002b000000060000001b0000000200000016000000190000003c000000020000001a00000025000000040000002a0000002900000002000000290000002b0000002200000036000000310000001e0000002d000000070000001c0000002100000002000000190000000b0000000d0000001b000000150000002600000029000000180000001d0000001000000024000000020000001c00000014000000340000000100000027000000190000001f00000035000000090000002a0000003f000000060000003a000000210000003d000000230000002b00000022000000120000001400000034000000080000003c00000012000000270000003200000036000000120000002e000000220000002c00000023000000340000001b000000360000002b0000000a00000007000000290000003700000022000000370000003f0000003d0000003300000012000000360000002700000035000000050000003400000018000000090000001d00000006000000240000001a0000000400000037000000240000003e00000027000000070000002a0000003d00000018000000020000003f0000002c00000038000000360000001d0000000e0000000500000004000000060000000e000000120000000a0000000d00000020000000140000002300000023000000120000001800000028000000270000001b0000002d000000380000001e0000000a0000002d000000240000001b0000001000000035000000170000002a000000250000002d000000270000000f0000000f0000003a0000001c000000170000001f000000280000000f0000002c000000340000000a0000000a0000003700000016000000360000002f000000170000002e000000330000000c00000035000000230000003f0000002a0000001700000032000000370000002b0000001b00000004000000340000003000000036000000270000003d0000000800000022000000010000000c00000031000000110000004000000018000000390000002e000000060000002a000000290000002f0000002000000003000000140000001d0000003e0000002a000000230000002600000030000000030000001300000029000000080000001b0000001e0000002100000036000000060000001c000000110000002c0000002000000020000000140000000300000018000000080000001a0000000b000000380000001b0000002c0000000b000000350000000d0000003e000000150000003e0000001600000010000000360000002a0000001a0000000d0000002d0000000b000000320000003e00000013000000200000000400000040000000050000001e0000003300000040000000120000003a00000005000000230000001c000000090000001e00000005000000190000000a000000220000002800000028000000390000003a00000039000000010000000f0000001a0000000b000000210000000600000018000000280000000a0000002c0000003900000030000000200000002e0000001d000000140000001700000009000000180000003d000000100000002a00000036000000260000003b0000003600000003000000310000002a000000100000002a000000270000001f000000150000003d0000000200000001000000330000002d000000100000002e0000001d0000000400000039000000040000000e0000002500000019000000310000003e0000003b0000002a00000003000000010000001900000012000000370000000300000019000000390000002c0000003f0000001a000000090000001b000000360000001e000000400000002c0000002900000013000000210000003f0000000800000015000000090000002b0000003000000017000000060000000a000000360000003f0000003c000000190000002e0000002e0000002e0000002f000000270000002300000038000000360000003800000020000000220000003c00000009000000330000001a0000004000000032000000250000003b0000003100000038000000290000002600000006000000130000002000000029000000200000001d0000002f0000001e000000110000003e0000002c0000000b0000000c0000002e0000002200000023000000230000001500000036000000110000001e0000003a000000100000003d0000001c00000017000000200000002900000005000000120000003b0000000700000008000000280000000b0000003f00000005000000340000003c0000001d0000001100000033000000130000003000000009000000170000002d000000400000000f000000280000001e0000003200000004000000350000003600000013000000270000003d0000000a0000001b0000000e0000001d00000007000000050000003a0000001600000021000000060000000a0000003e0000001b0000003c0000000a0000000c0000002d0000003b0000003d0000002000000013000000190000003200000040000000250000002c000000090000000e000000350000001c0000003c000000050000002500000032000000200000003500000008000000140000003e00000037000000400000001800000034000000100000003100000001000000300000003a0000000c00000015000000280000003d0000001f000000350000002b0000002400000029000000180000001a000000010000003500000026000000020000001c000000020000000a0000000b0000002200000005000000070000002b00000015000000030000003e00000031000000140000002400000025000000360000001900000022000000050000000f00000029000000340000003d000000340000003200000008000000390000003e0000000c000000110000000f000000120000003400000028000000190000001a000000120000002a0000003e00000007000000060000003d0000001a0000000b000000390000002b0000003a0000002d0000001e0000001c0000003700000010000000330000002800000005000000150000001d00000010000000190000002d000000210000003c00000009000000370000003c00000002000000120000003800000016000000380000001a00000017000000310000003d000000290000002e00000007000000230000002f000000050000003b00000011000000200000001200000023000000180000003f000000300000003c00000033000000310000002000000018000000360000002c0000003e0000003b0000000a0000000a000000290000002c00000010000000390000002d0000002300000027000000300000001d0000003900000025000000140000000f0000002a0000002f0000001b0000000d000000380000003400000013000000350000001d0000003b000000070000000a000000020000001c000000190000002f000000030000003f0000000a000000060000004000000002000000020000000600000037000000210000002b0000003a00000009000000210000002000000007000000010000002f0000002e0000002d000000160000001b0000003a0000001000000023000000360000002d0000001100000031000000060000002a00000015000000230000003f0000000d000000320000003b00000018000000080000001a000000040000000f0000002f0000001b0000001b00000006000000030000003c0000000e000000160000002e000000250000002200000015000000340000000c0000002e00000013000000300000002b00000017000000350000002f0000002b0000002f0000002e00000010000000230000000a0000002d0000001f000000360000002d00000023000000300000001e0000003b00000035000000130000000a0000003b000000010000000c00000025000000010000003a0000002a000000200000000b0000000a000000090000001e0000001c000000330000000f000000300000002900000002000000020000003d0000002700000017000000290000003d0000003d00000012000000360000000f0000001e0000003c0000001d0000002d0000001e00000035000000080000004000000006000000100000003800000004000000020000002c0000001700000032000000350000000e0000000d000000140000001c00000021000000200000003f0000002f000000130000001e00000003000000320000003b000000170000001a00000003000000250000000a0000003100000017000000390000001e0000003100000038000000080000000d0000003d0000001c0000001e0000003a0000002a00000021000000300000002f00000034000000360000004000000023000000220000001c000000340000002b0000003f000000160000002a0000000300000006000000340000001f000000240000003b000000240000000b000000350000003400000025000000060000003d0000000f0000002d0000003500000009000000280000002a0000001b00000033000000300000000a0000001f0000003d0000001b000000060000000e000000320000001400000023000000200000003c00000030000000370000003e0000003f0000002c0000002b0000002600000040000000150000000b0000001b0000003d000000340000001500000038000000190000003e0000001d000000370000001e0000001400000034000000300000002b0000003600000006000000180000000c00000025000000010000000d0000003300000022000000180000000200000024000000070000001800000025000000160000002500000016000000290000002a000000050000001e0000003b00000017000000040000002b000000240000001400000028000000390000000a0000002c000000130000003a0000000b0000003c000000230000003b0000001d000000340000002a0000001f0000003b0000002d0000001e000000380000001f0000000e000000190000001b00000033000000300000003d000000010000000700000014000000130000003500000020000000150000000e0000003c0000000800000016000000180000003c00000001000000150000002b000000170000002500000003000000050000002c000000090000000a00000006000000230000002c0000003f0000002d000000020000000f00000018000000140000001f0000000f0000001500000003000000190000002200000015000000230000003200000038000000090000002a0000001d0000002f00000027000000310000002000000011000000060000001b0000003c0000000e00000001000000200000003f0000000d000000060000002f0000002d000000390000000f000000300000000c000000320000000c00000009000000020000001d000000090000002d000000370000000b0000001a0000001400000005000000120000000e000000170000001800000040000000320000002c00000035000000360000001d0000001d000000390000000d0000002400000037000000030000003a000000010000003f0000001d0000001e0000001a00000021000000130000001e00000034000000100000002e0000002a000000050000001d0000001c000000070000002900000006000000030000003a000000170000003d0000003400000022000000010000001c00000017000000280000003e0000000a00000027000000350000003c00000037000000120000002d000000230000002c0000001c0000000f0000002800000004000000090000001c00000039000000380000003b0000001f000000260000001a0000000c00000037000000030000001a000000260000002500000005000000280000002f000000180000000d0000003a0000002d000000080000003e000000220000003c00000001000000400000003d000000400000000f000000330000001000000008000000380000000f000000280000001700000011000000160000000e0000002c0000002d0000001a0000001f000000140000002e0000001f00000002000000400000003f000000230000000d0000000a0000002e0000003b00000028000000160000000100000037000000320000000a000000160000000500000032000000380000003000000036000000010000002c00000001000000300000003b0000002c0000002d0000003e000000170000001000000037000000200000003e00000040000000120000001c000000240000000f000000390000002f0000001d0000000d000000260000000d00000036000000370000002600000001000000210000002f000000260000001200000031000000190000000a000000090000003600000019000000150000003f00000019000000350000002700000036000000080000002200000011000000090000002d00000004000000320000001c0000001f0000003d0000002d000000400000000300000026000000190000003c0000002f0000000e00000011000000360000001a00000021000000090000002f0000003c0000003a000000190000000f000000380000000f000000030000000a0000001b000000060000000300000037000000350000003f0000002b000000240000001a0000001f000000010000002d0000001a0000002c00000017000000140000002b0000003900000006000000150000003d000000180000003400000027000000160000001e00000034000000040000001c0000000c000000010000003200000040000000090000003200000015000000340000000500000022000000400000000700000019000000360000002d000000050000000a0000001c000000230000002d0000003a000000370000001b0000002e00000020000000340000002e000000400000000600000012000000240000002f0000003e000000340000002c0000003a000000100000003b0000000c0000001a00000023000000040000003c0000001100000031000000030000003e0000001e0000002c0000000800000040000000180000001a0000003b00000007000000270000000e00000030000000360000002c0000001d000000360000000e0000001c000000370000002a0000002100000012000000170000003f0000003f000000100000002b00000016000000180000003b000000330000002800000039000000330000003a0000000b0000000c00000004000000340000002d000000380000001800000009000000140000001600000010000000090000001f000000180000001b000000300000000900000003000000280000002a000000010000000f0000001c000000310000002e0000000e000000230000002f0000000c000000400000003e0000002b000000320000001d00000033000000110000003c00000003000000070000002d00000029000000070000003b000000200000000200000011000000340000001e00000021000000370000001b0000000b0000002b0000002100000013000000270000002e0000000400000023000000090000003a0000001e000000030000001f000000290000003b0000002d000000010000000d0000000200000014000000330000003a00000015000000300000002b0000001600000023000000120000003100000007000000230000001900000004000000160000000200000004000000330000001700000018000000050000002e000000240000002000000031000000060000000b0000000700000004000000360000001a000000300000003c0000000f0000002d0000003c0000003e000000360000003e0000002b00000030000000040000003c0000000d0000001800000018000000060000001a0000002a0000003e00000037000000190000001d000000330000001000000004000000120000003a0000003f000000190000000700000016000000220000002500000024000000260000002f0000001c000000350000003200000039000000200000000300000026000000190000003d0000003c00000033000000320000001e0000003d00000020000000230000003c000000010000001a0000000c0000001a0000002f0000001a000000270000001e0000003300000008000000030000000400000005000000220000001700000031000000350000001d0000003c00000037000000080000002c0000003300000011000000110000003e0000000f000000120000000c00000011000000080000003a000000030000001f0000001a000000380000001e00000035000000060000003000000001000000020000001f000000220000003f0000001b0000004000000002000000100000002f000000390000002e0000003800000016000000040000002f0000000a0000003f0000000b0000003600000034000000240000001a000000030000002c0000003e0000000e0000000700000033000000200000002c0000002f000000270000002000000017000000230000003f0000003c0000003c000000310000002100000014000000170000001d0000001a00000001000000050000002200000031000000360000002d0000003e0000000f00000015000000400000003a000000360000003a0000000900000007000000180000000d0000001300000006000000070000000d0000000d000000370000001b00000024000000250000002300000010000000350000000100000030000000220000003e0000003b0000003500000004000000270000003e00000002000000300000002600000006000000380000002a00000026000000240000002000000040000000250000000b0000002d0000003c0000003d0000001c0000003a000000110000000b00000021000000360000002d000000090000002500000039000000380000000f000000290000001f00000037000000160000003d000000390000001e0000000900000033000000280000001d000000140000002f0000003b0000002a0000000e0000002d000000040000000500000006000000130000001e0000001300000026000000050000000900000001000000170000002a0000000500000001000000280000002f0000002500000009000000050000001e000000200000001100000011000000010000000d0000002f00000015000000200000003d0000001100000008000000160000000c00000018000000300000002b000000020000002d000000090000001200000003000000360000002c0000002c00000019000000280000000b000000130000003b000000010000001b00000001000000400000002f00000019000000160000003700000011000000080000001e0000001c0000000a0000001100000028000000050000003b000000090000003f000000390000001f0000000e00000004000000070000002e00000009000000180000002f0000002c0000003c0000000c000000250000002c00000006000000210000001e0000001c0000003000000040000000320000002e00000036000000050000001d00000012000000200000002b00000024000000f2ffccffb2ff57008eff590014008cfffcffc7fffdff62000d007d00dfff91ff730091ff7c002e00b5ff050041003f00f7ff55000400a2ff94ff3d0023001000c8ffbdff3c00edffe4ffa3ffeaff54000b005f00bcffa8ff490080ff3d0089ff87ff82ff7b001b0031003c0094ff3c0025003d00c4ffb0ff31008dffceff7e003c000b0094ff75001d002c006200abff0d00c7ffa5ffb8ff7a00e8ff27008efffbff1b0086ffdaffefff720010001a009bff1100e5ff3300f8ffb6ff210018000d0032001300f1ffe4ffd0ff5c00d2fff1ffbcffb3ffebffe2ff0b00adffe8ff3f0087ff4e005d003c0077003c00b8ff80003500dfffd9ffbcffd3ffe5ff4b00c7ff7c0093ffceff7800afff660091ff09003400510088ffd3ff3f007800d0ff1a0011002a00fdfff0ff86ffcdff1a00020080ffb3ffe2ff2c00acff280016009dff99ff5b0015007500a6ffdeff7100ecff69002300f1ffeeff9bff4b007500fdffa3ffb2fff5ff6300acff4f00c0ff020092ff81ffc7ffd3ffe3ff21008eff5d003100beff0a00bcfff1ff6700d0ff5300560096ff170055000800eaffa0ffd1ff2100cfff440062006800aeffc7ffc3ffefff3400a0ff8bff80008affa2ff3a0001004a0020001a005700ddff89ff3900b9ff8efff4ff1400f2ff56001600e0ffb5ff3000f3ff0800690084ff6000110095ffc6ff3f00acff0e004f00c6ff4300ecff8000180085ff52006d002900f3ffebff470045009cff6800f4ff8effcfff7a003a003a001a000f007400d9ffb1ff8000c0ff2a004900c4ff7e00d6ff2f0008001e003400f4ff7100f3ff9dff43001900bfff7a004c00f0ff16005600beff180020008dffb3ff0c0051001d0081ffd2ffe9ff0300beff0800b0ffc2ff93ffc9ffd8ff84ff8eff480000002700dbff85ffa2ff87ffe3ff32009cffa3ff6800cbffc5ff70004a003900caffa3ff61001e0098ff640001005b00570014001300d3ff03003e00ceff48003700e5ff4e00d8ff4900e7ff380013000a0066005b004000e0ff0800c6ffe7ffb6ff7b009dff88ff99ffcdff6e00d3ffebffccffb0ffb0ff2d00120097ff3d002600410095ff8000fefffaffebffeaff0a002400abff070084ff24004d00bcff3c00e9ff7a006500ddffedff500090ff4700c3ffbaff680087ff1c00cbff8eff88fffeffe1ff530034007b00f8ffd4ff1500beff7200b3ff89ff5100600090ff3000acff5700200085ff49006c00a4ff80ff5100a7ff700099ffb9ffbfffd0ffc9ff2e0068007b00e6ff690084ff9dffbeff0b00eeff290047004700f3ffb8ff98ff5300440056001600a5ffa3ffd2ffd2ff4c001a005d00250020000800bdffaaff1b00c6ff9bffacff89ff0a004d0078005d00570074002b00a5ffa3ff3b00c7ff72002500b4ff9dff7c00a1ff0b006e003500adff0600b2ffb6ffc0ff4d005d008dff8effc3ff1d00c8ff52003300deffa7ff6b002c006a003600d8ff4100740013006c00f0ff9bff1900ccff2800eaff1b00b0ffd8ffc2ff78003c000200a4ff78006d00aeff3b00d1ffe0ffc0ff3800bbff83ff1d00bfff9effe4ff80ff4e0098ff8effd0ff630099ff8aff6000d8ffcfff33003000a8ff5c0070006b001500f9ffabff16006d00d0ffebff450093ff85ff36008fff99ff84ffe6ff98fff2ff97ffefff0b002b00a9ff7d0095ffcafffbff1100cdff53001000350074005600e0ffa6ff35007f00d7ff67004500120073007900a1ffdcff74000d00feffdcff71000000b2ffe9ff1700f3ffd2ff9bffe5ffe9ff9bff42002d00d5fff9ff5800eeff4f001a004600eeff05005300d4ff2f000400520014005d003c0090ff96ffe5ffa5ffb5fffdffd1ff4600dfff32004400beff4e000200c5ff6a005c004e00afff43008cff0d00e8ff4b00ccff660080ff0e003900e9ff03007800400091ff4e006700c7ff8eff000088ff7400f1ff46005d0097ff36001a006900d5ff2e00410059005b004d004b00b1ffe0ffc7ff81ff0a00a1ff3b0061000100f1ff3e00640082ffbbff98fff1ffdcffdbffb7ff4c001f0004008bff4500cfffd6ff88ffadff3c00cdff680011003000040046005a005900570051006c001f00c1ff0f007f002200e0ff2c0021000900a4ffeaff5b00f3ff1b002b003200a6ff1c001e0046009aff66003700a4ffcbff0600ddff4200faff39004800c9ff82ff14009bff95ffc0ff54001100eaff4f000600b9ff0f00e1ff3c001700730075008dff9bff38001f0007000500f5ff5600dcff6b0083ff91fffcff31005f002f003f001800dfff1f005c00a5ffdbff98ff04003300bbffbdffa7ff2b001300b4ff60001500c2ffa0ffbeff6c00f0fff0ffabffedffcbff43006100010088ff3c00730037002900f4ffffff72000a00dbff8bff97ff6b00760009005e00b2fff8ffd7ff3200c5ffa6ffa4ff3900010034002000a0ff88ff53007300bcfff6ff790088ff6c007d0080ff76009dff2600dfff0700f1ff3d006b00d8ff84fff2ffe9ff7700aeff220064006100daff240084ffe2ffd9ff97ffeaff2300beff2d00bbffddff2c00fdff1a005000e3ffe9ff29009dffddffeaffddff9fff1e00beff62008fffcfffa2ff87fff5ff05003300a0ffd8fffdfff9ffb1ff560089ffe5fff0ff7800beff1e00590082ff85ff0c0001001d000b0088ff62002000ceffc8ffa7ff9cff8aff4400abfffbff7c007800540052008aff7a00a3ff47005400d0ffd7ffd9ff14004100b0ffd5ff4c007200acff2600c8ff9fff30008eff2e006100cbff83fff5ff3600d5ff6600e3ff40002c003a00ecff650058007b006200c0ff7300f2ffe2ff6100b4ff94fffaffaaff2900bdff1d007000b9ff93ff93ff050033005300a5ff07007f0088ffcbff79005a0069002800f6ff5a003100e2ff31001500f3ffedff1000feff6700190045001100caffcbfff8ffd8ff99ffe3ff6f005c000600afffecff65003f00cffffdff50000600baffebff2600a7ffdfff2900a5ffc8ff56007200b1ff5c001400c4ffa6ff9cff7a00e0ff04001b000d00fcff4300b4ffefff7800eaff99ffddff94ff010085ffd1ff2e00e8ff0e00b5ffd8ff5d00acff360088ff58009aff61004500bbffcfff3c008aff4f002600d8ff01002300f0ffbfff0f00f2ff3f00cbffa3ff7f002000b9ff750091ff530086ffb8ff7a00c6ff5b00f4ff6e006000310095ff5c002f00c0ff8dff99ff5600b2ff550000007a000900c6ffdcff080016006a00b3ff27005500c8ff6200e9ffe4ff05003400fcffdffffcffffffe2ff93ff3900e6ff85ff3d0071001900ceff0500430045005a003000ceff9effb0ffc5ff58000a006a00edfff3ff9cff2800750086ff29009eff7b00c2ff50004c007900fbff84ff2100a6ff8dfff5ff1c006a008dff43002200a0ff610019007e006300cbffdaffd8ffdeff700051001e0098fff8ffd6ffd5ff76001000c7ff7e00c4ff640002008cff1900680034006e0042002e0099ff80ff9cffffff8fff6500eaff0d000b00e4ff22001f00a1fff3ffb3ffceff7c0022000e00b7ffc5ff94ff2e00c6ff8cff4c00f1ff9affddff17007000ebffc7ff01003b0082ff120038005f00750023002100a6ffefffbaff02003b00cdffddff520053005300d9ff0e008bffedff6700acffeeffa5ffe2ff310053000a000d005700bdffddffe4ffc3ff98ffdfff1b00aaff88fffdff5f00daffeeff140097ff8dfffcff8cffe8ff6e00a7ff76007300b8ff3100b7ff9dffa4ff4400d4ffa0ff1400d3ffb5ffedffc2ffb9ff4e003d00bcff3100f1ff32002e002a00d9ff9effb5ffd2ffb1fffaffbaff6b00120072006200d5ff96ffabff9bff6c0092ff0000ffff770094ffadff330053007d009aff4e00b0ff2600edffbfff2e0093ffd8ffa2ffc4ff300006001e005f00edffdfff5a00450082ffcdff8000a6fffdff99ff1700210086ff2b00e1ff1400bfff86ffd1fffdffe6ff86ff91ff58003700dcff91ff350029006f00ebfffbff0000690000003e00430035004b0082ff6000ccffe4fffeffb1ffedff500096ffb2ffcfffe9ff2100d8ff7c00d5ffb4ff51009cffbeff3b002a000a00100098ffc7ff90fff2ff68001b00f4ff23007300aaffceff15000900a4ff1d009eff8dff9fff97ff1b0072001e002d00c8ff46000b005a009cffe1ff2d0006001f0090ffebffffff5e0088ff690019003900efff43008bff1a0094ff66009efff2ff04005c00e1ff2200ecffd4ff6400760098ff3e0005009cfff5ff07006000dcffbaffa8ff8eff2f0032003c00210012002e00dcff43004600c1ff1100abffaeff610049000900c1ff7d00c3ff1a00d9ffe6ffa8ffd5ff56001600a4ff7400d6ff110013007b003e00feff1100afff1400d3ff3b009dff42008cfff3ff5800d3ff130060006d006a005e002f0095ff3e006b005300baff4c00ebff4e004c00c2ff86ff0e00ffff1500aaff3b0040001600c6ff85ffeeffedff0e0088ffd0ff18006b00f1ff1a00a0ffe7ff80ffd8ffe8ffc6ff6900000021007a0078007400f2ff0d002a007b00a7ff3a002500b6ffc5fff1ffadffc9ff86ff69006d00e9ffb0fff7ff5100dcff83ffb3ff32005000e0ffe5ff82ffc8ff3d007000d1ff7d00fbff59003e0039000b000400dbffb2ff3d00b9ff0a000200d6ff4d000500c7ffefff1200baffe6ffdeffc7ffd5ff620075001a005c0091ff6800f2ffe4ffb2ff4500310023006a00d3ffc8ff44004c000300dfff3500d9ffc3ffe6ff85fff0ff7300260015002f000000510009004300bcff3c009eff8000a7ffe5ff99fff7ff7200e1fff2ff7d00a8ffe1ffdcff70006a00eeffbbff5d0038000d00fbffa1ffaaffdcffacff380012008dff83ff5900b1ff45002c004e005e00aeff140096fffaff66006200a4ff410012005a00c5ff93ff6a001000d8ff8effecff6f00f0ffd1ff78006d004100fcff9fff4700fcff5500a0ff31003c002e003d001b00c0ffddffb0ff65000b00cdff1a0004007b00d5ff88ff4500b2ffafffefffd7ffdbff7f007e005900f5ffcafffaffa5ff5100ffff1a00b5ff4500ffffdbff3800d3ff58002900c2fffcff6f003a007e005c0066008cff39004000740078008dffabff9cffc7ffcbff660095ff96ff3c0057002e002d005800b2ff7f00e5ff9aff70003800e3ff45006a004a0094ffd5ffa3ffc9ffedff82ff3700a3ffd1ff9eff0a000d00c1ffb5ffceffc8ff3d0054007a0082ff0f00d1ff5000c3ff4d00d7ff0a008fffcdff3f0022005f00fdfff2ffa8ff51003300240099ffe5ff2400a8ff98ff6400c0fff2ff7d00a6fffaff1f0019003d00b5ff0e005b0063004100430064005d005a0082ff49005600d4ffadffc6ffaaff94ff1100caff680016003500a4ff410029006e00160067000400dbff0e00deff82ffedff57006d00fcffc1ff1c0012004c009bff40002f00e1ff9eff7500cfff3100720054004400f2ffd4ff7000ceff9cff3a006f00fbff1f0090ffc6ff59004800afff5f002200a5ffb4ff0b003600c9ff22007c00e6ff34003000e6ff330085ffb9ffadff120081ff1d006300630094ffdcff5b00f5ff01005c003800a0ffc4ff81ffc3ff33006b00c9ff94ff7300e4ffb4ff4c00e0ff7e002b000f00c9ffb9ff3f0022006d00b7ffd3ffe8ff8dff43009cff16007e007400dbff570080006300f3ff05004600f6ff580080ffebff3c00cdff2500a6ffc3fff4ff8dff6b009cffcdff7b0094ff530075003d006d0086ff0700efff22009eff95ffd5ffb0fff1ff2000cafffcff9dff800058006d003b006d000e000800efff4000fbff290012002d00b5ff2c00c4ffc8ff82ff37008dff4000d5ff420091ffa9ff7e00a4ff2d007e009dff6b002000eaffadffcdffe4ffb4ff6a004a000c006b004c007500c3ffefff3400bfff62009affadfffdff89ff290037009bff43005e005a0099ff1a000100afff8eff4b00b4fff4ff0b0027005e0094ffc2ff2f0099ff90ff81ff3900c8ff8eff0a006a009cff1700c1ff96ff7800e7ff5f007c007000fdff8bffbfff2e00e5ff650003002b00b8ff4f00aaffb1ff6800c3ff1c0044004e00edff640094ff6c00f8ffd6ff7a00a1fff2ff83ff52009bff390005007b005600bfff1900fcffadff0d00430090fffbff39005d00fbffefff7b000f0063005600faff92ffe4ffb6ffafff780018004000c8ffabff680072000900fdff4c00bfffc5ff300024009bff2300aeff1500c5ff5f000500ddff6b003500baff96ff50001d00c6ff1100eaff0c006d008fffaeff0800b6ff86fff1ff84ff0a005500a0ff0400fbff89ff3a002200e2ff4500430070006d009bffd4ffa5ffb5ff6e00caffc8ffa0ffc9ffb1ffa6ff85ff80ff86ffb5ff0100eeffc2ffe2ff3500daffaeff4100fcff9aff8fffe7ffcbffa9ff1500750054008fff240083ff7b002800d9ff6700c9ff9dff4800adffd0ffd4ffb4ffcbff2400f7ffd1ffaeff30000a00c6ff55003a005800e7ff1400c1ff0900beff62004d00ffff9fff4200a5ff69006800e4ffe0ff2c008cff51004a006f002c00c3ff98ffe1ff28002800aaffb3ff1800060050000d0002001c0085ff5900b0ff81ff580027005500acff16008bff8aff0b005900320022001f007b00cdff86ffdeffbdff1b00afff8affb7ffbeff8fff6b00ebff39004f006100faffe6ff80002a001100340089ff81ffbdff4100daff680012001e0094ff0c00ebff6400d1ff3600450087ff68002600aaffcdff5a00fcffcdffb6ff3600d7ff3000bfffa7ff9eff9dffc6ff44002c004600000094ff9dff6b00f3ff8cff1a0080fff6ff5a007f00f8ffabff120047003100afff9dff97ff80ff3500f4ff5d009bff10000600c2ff08009dffa8ff97ffbaff0c0036002a0061007000730083ffeeff0d00e2fff2ffa3ff85ff97ffdaffbcff76007d00ccffc5ffc5ff3900afff5500feff4e0090ffdaff5d002500060085fffaffb3ffe9ffb9ff1d0043004d006f0095ff2100b6ff50006e00fbfff1ffbcffa7ff1a006800bafff6ff7700acff5f0091ff050049001400ddff1900a0ffefff45004b000b005f00f8ffa3ffbcffebff3100a8ffbdffa6ff1500e8ffe9ff32002e00eeffa4ff22007000ebff08007b007f00100095ff5c00560029008cfff7ffaeffe5ffdeff4b000300a5ff0a00dcffefff6100660055001800630066008bffabff410057007e000b004d00adff49002b009cffe8ffa9ff7c00460095ff35003800520080ff3700eaff1e009cff42004900b4ff710080ffdffffcfff9ff62009affc0ffbeff3900e6ff4a00d0ffd4ff86ffbbffb2ff5c003f00cfffabff4000a2ff90ffc0ff9bffffff5b00c8ffd8ff4b00b7fffaff290049002200eeff5a00dfffb3ff84ff94ffaaff4d00b6ff82ffecffb4fffcff4000dbff2a00dbffeeffdcff1e001e002100a9ff7a00d9ffb1ff65001a008000bdffabff1600ddff19000700490017002d0029006300a0ff2d003b00caffc4ffdeff71001d00c6ffd3ffc0ffdeff66000f007900baff680048005d00cbff2d00d7ff86ffa7ffb3ff8000a1ff1a006000d9ff3500fcff43006a004b00daff4400530000000e00f6ff4700e8ffc5ffa5ffffff070026004c00ebff2b00ddfff5ff3a00a8ff4500d1ffbfffa1ff17000d00f7ffb7ff260078003e000e0097ff5500f3ff3b007b006d0094ffb8ff80fff2ff24001a00e2ff16002600fdffc1ff68009eff27009fff0c00a3ffa6ff0700a3fff7ffb7ff88ffa2ffa5ff000075003d008fff86ff87ffbcffb0ff77003700b9ff90ffcfff3700580096ffe2ff2900a5ffe4ffe1ffd4ffd1fffeffb8ff0d0086ffc0ff7f00ccfff4ffefff0e006c0096ff5600caffedff80ffdfffbaff98ff360098ff1b007700e3ff4c0084ff3000c4ffc2ff83ff110009003100e8ff2000d4ff62004100adff6e006b00f4ff5b001b00e3ff1300abff73008aff1600700083ff3400d7ffc0ffccff3000a5ff5300d5ffddffd0ff28003b005000b9ffd1ff030041005900ffffc1ffdfffdaffcaff6100b2ffabff0e007400beffb0ff240048005800ffffd8ffc5ffabff450084ffbbff9bff720073003100d3ff6400baff44002900e4ff7b00fdff75002500d6ff4200dfff1200c5ffc2ff6f009fffd8ffa6ffd9ff8fff2f006d0016003500f8ff1300b7ffc4ff5000baff4e0094ff3f008effaaff3700baffb9ffbfff0300e5ff5300e1ff620085ff4b00d3ff2e00d4ff6300c8ff4b002e004d008cff33004f009dfffcff6f004600a3ff5700d0ff2f00b8ff0d00aeff64006800f5ff2400260034005a0075002d0088ff0600d7ff9dff91ffe2ff520086ff4e0018003c00b7ff5c0088ff0100e8ffc1ff3a0004003d006600c0ffe3ff6f006b002a000900f9ff1000390009003c00bfff7200a4ff1300a2ffccff5f00eaff87ff1e003f008cfff0ff97ff7800e9ff36006a00deff85ffd7ffb3ff190097ff160077002d0080ff67000700a2ffa2ff8cff86ff96ff52005c005f0087ffcaff3700c0ff220025007f0045002b00a4ff92ff3d00bfffdcff6d00a3fffaff69000600c0ffd5ffa8ff2c0009007c0087ff6300120075006200cfffd5ff1b00fdff5f005e00b2ff2b001900f3ff49004100e9ff7b00660021004600d0ffc0ff6a00e5ffd4ff4f006f005000a9ffddffdeff4c00a6fffdfff9ff0b00d5ff3c00aaff1f004a002b00d1ffb8ffaaffb0ff3000e1ffecffb7ff48003b00c2ff7d0098ff450055006400b9ff0600d9ffa1ffbbff0800b0ff5d00a7ff8aff4a00f4ff8cff56009bffbdff590082ff28002b000c002100c2ffb8ffdfffb5ff87fff5ffe0ffb2ffb5ff800088ff4a0046008dff76002300fcff6e00bcff3000faff53001b00ffff5e00a9ffa0ff6e00ddff10006c00b9ff4900670099ff0c00040085ff84ff96ff8dff7a00b7ff4800abff800035002f001500760013007d007e00b1ffddffe2ffb8ffdcffcaffc5ff9fffcfff6900c0ff5900a4ffebff3f001d00e3ff96ffd1ffd9ffdbff44007e001c004d008affceff86ff78006800bbff4600e2ff96ffdbff04006200750078005d00b1ff600004007a004b0002003600bfff10002a007f001600abff1300bcff2200dfff97ff91ffd0ff3f008dff10008bff7e00ecff46004900fdff1900320075001a0032008bff23001e00b7ff81ffe0ff86ff64008000adffcaffe9fff5ff96ff8fff9eff5d002800310092ff3a007b006a00aaff2f007b00a5ff52002d001b00eeff0200d9ff7c0086ffb3ff320006007900f9ff25005600710056001900e0ff3500b9fffbff6200cfff2a00e7ff4900ccff6200610074007a008fff8fff3a00f6ff5e00030047009aff48005b0073003800450080ff2c004a00c2ff2800370017003c004000c6ffa9ffddff5900740054003c00d6ffc4ffa5ffb3ff3300c7ff4300e5fff4ff46006100b6ff1d005c0081ff9dff2600dbffedff6100f7ff520091ff46005600ffff1a001b00f7ff0e005a0047005d00edff0c0060004c00f1ff2700edff0200f9ffcaff1e007500e1ff56002d00feffb6ff7c00faff4c009cff050051009affe1ffa0ff7a00f1ff3b000100b6ffd3ffe5ffa6ffb4ffc7ff5400c7ff2d000a00bffff0ff040058007800b8ffd9ffdfffadfffeff1500220096ffeeff81ff9bffcaffc6ff4900a0ff0e009bffb2ff12004800e2ff0700c1ff64001d006c00dcff45009dff7f006700e3ff3b00b7ff340090ff6300a0ff5e00d9ff8dffaaff2d00e0ff92fffbff5500660088ffa2ff5900110083ff87ff9bffb8ff0e001500b6ff5e0048004d007c00afff87ff58009cff46003b00d5ffeeff65006a003a003d00d0fff7ffb6ff3a00e3ff51008cff6d00aeff3b00b9ff99ffcdffc5ff98ff69008fffbbff760030006d00b1ff620080ff3e00b4ff0900c0ff7f00d5fff4ff80ff11002f001d00400086ffdeff1d00a2ffb4ff040023000a0082ffaeffaaffbdff96ffdfff2f00530014009fff44003e00460099ff81ff2f00f2fffaff0200160038003200feff10006f002000f9ff6b004500f7ff1c00f8ff3700280084ff2c000f00a6ff9bffc5ff55007b000200ceffdfffb5ffdaff0800670054009bfff3ffe4ffb1ffa8ffe6ff2d001c001f00beffeeffd4ff3100d2ffa8fff9ff2b0094ff4c009dffe9ff2700f7ff3e00a7ff4400100001007c00b2ffb7ffacffa8ffe4fff4ffdfff4300760087ff8effd3ff9afff8ffa2ffebfffaff1f005e0059007d0008008dff44002900e9ffd2ffe7ff22005d001200dfff3e00fdff58009dffccff4200e4ff41002d00a5ff75009effb6ff90ff2700f7ffb8ff51005700510002000600baff82ffcbff76007c0015004b0031002d00a7ffc3ff2a005c0084ffa2ff0f002d00f7ff1600cdffffff460035007d004100a1ff43006a00f8ffd5ffdcff8000edff87ff74006d00afff43005900b6ff1900bdffd2fff7ff8efffeff220077003c00d0ff330043004b0092ffc8ffbeffa1ff7d0037007900540098ff8cffc9ff06005300d0ff4e001100ffffe4ff8000cbffc4ff2a00abff8fff33007800ddff46002c00d8ff2900030028007f007700dcff4b0009002300f1ff070093ffceff92ff81ff33009bff2c000d00a0ff6e0027009effd2ffebff1c00650019005e009bffa8ff4c00c7ffb4ff31005a004600d3ff68003d0038003700d8ff85ff7b00fdfff7ff99ff84ffa7ff1500e7ff3100feffc5ffc1ff1d00a6ff81ff08002b00670015001e00daff48003e004b00cfff6700a1ffbcffadff8cff0c00ffff86ff550051003c005a003d0085ff5100080047000700c8ff6300e2ff01004700a7ff150084ff4d00b3ff1800b9ff87ff1b0080ffe7ffa0ff83ff2c00fcff250082ff3200cdfff4ff6a00d8ff2b009cff99ff7a00b4ff1700e2ff9bffd8ffbcff030029009fffd7fffdff4000340024008fff7f005f0090ffbdffc7ffe8ffb3ffbaffc8ffd8fff9ffc6ff1500d3ff6800e5ff11005e00dcff19000b0069002200a1ffafffa5ff790044009cff2b00c1fff5ffd7ff6400d7ffd7ff7b00440074000f005d001a00cbffa7ffebffecffe9ff79000b001000f6ff0500cfffccffdeffdaff2100140084ffc2fff5ff6f002200f9ffb0ff6e0023002700690039007b0047002b006f007800e7ff470069001e0091ffcfffc3ff8aff540033007f0099ff54003e00b6ff4c00cdff7c00e8ffb9ffb7ffddff66002f008dfff1ff5a007b002900ebffdefff0ff3b00ebff65006a0084ffcdffdfff90ffc5ff9aff98ff01002000bbff1e00f1ffb7ff94ff1000aeff7f00b9fff5ffa9ff2a006c00b0ffdbfff0ffb1ff36001800e7ff4c003000bbff5f007800aeff28007c0097ffb7ff9dff5900bfffb0ff6200800013004a000b0076005400c4ff4900d7ff00001400e7ff1d00afffc4ff7e007e000a003500a6ffe4ff92ffacff9cff80ff610022001b00eaff18006c00f5ffb2ffd9ff56007d0057005400f8ff84ffcfff1600e5ff0b004300ebff3c00d1ff7d00ceffb9ffd3ffa9ff5800f1ff5f002e00c6ff04006f00e5ff99ffa7ffc8ffa3ff34003c009dff80ff15006a00edffe4ffb5ffa8ff4d00e0ffe8ff8fff2a00c7fff7fff1ffb1ffc1ffd3ffc4ff3500f1ffdeff0400d6ffbdffd0ffb8ff60002f008aff62005300abffd2fff1ffedff5e006400ecff590092ffebffe0ff470008008cff9eff34003500f2ff11001d0009002b00daff4f005c00a2ff5600faffc1ff6700dfff96ff9dffbeff7200c8ff390087fff5ff94ff0000c2ff6400ebffcfff30000c0056003f0023004f0039000500e0ffd0ffc3ff9bffb6ff90ff15007800d2ff7c00bbff5f007700b7ffafffccff1500c7ffaaff5d001000a1ff7d0064006c007e0098ffcdff0e007b006400eaff85ff3c0096ff1700bfffdaff3d00f5ff3400f2ff5100280090ff6a001700c6ffdcffc0ff1700c4ff0200baffa7ff2800adffecff330063005f00670001003700caff4400000099ff1100edff96fff8ff7900dfffdafff5ffa0ff8effb6ffe3ffaeffc7ff4c002200b5ffbbffecff0100aeff35001200dbff60004b006500e2ff6600caff8cff8dff2e008effc8ffaaff030059000000f4ffcfff5c001000d9ffe4ff5d002000c8ffe9ff1f00dfffefff2a00ceff6c00a9ff96ffa3ff210022004a00b2ffa8ffe2ff3b001500bbff4d0087fffdff110002000400efff5100eaff020096ff290039000c004a0044006f001d00670098ff27003f00450031003c00c7ff6c0042005c008effe8ff7b0011007f008fff95ff6700daff0f0074001f00d9ff4c0029007b00b2ff3d00c6ff0300aeffc0ffc2ff94ff4900b2ff98ff2400adffadffa1ff0d0097ff6900b5ffb8ff99ff1e004c000e007d00beffd3ffb9ff5700d9ff6500beffefff79007d00e8ffa3ff0b0020005d00ecff1a007a005a001800a5ff580023002c002900afffc9ff2600e3ff3b00710095fff4ffceff3800aaff7e00b3ff6200edffa9ff60004300aeff8cff24001a00a7ff5d007c00c6ff4500fdffecffd3ff96ff3f002900edff7000ceffb7ffeeff64009eff2000c5ffb2ff0a00a2ff0c00c0ffabff7100f3ffabff42003c00beffc5ff2b00800034003200eaffb3ffa9ff6f009bffe2fff7ff97ff58001e004d007d0014000c00ccffa0ffb7fff3ff6a0086ff9bff2a009cffefffc6ffceff0b00a5ff0c00cfff6a00e1ff99ffdeff130075004d00a2ffedff59002400490044000b00c5ff3d0066003200ecffb1fff3ff8effc7ffe0ffb2ff5e00e9ffc4ff540083ff13007c00c0ff8dff8affb7ff1800bdff89ff4300ebffb0ff53005f00bfff61007600c5ff0000b1ff9bffc2ffb2ffc0ffc8fff2ffccffc2ffbaff9bff0a00fffff6ffeafff6ffaeffeaffa4ff2200f4ff6f00abff330003009cff32006700a5ff6700ceff3900dfff0600b7ffbfff2400a8ffacff5700bfffcfff3a00210056006000d5ffd5ff3e003d002b001b00beffb0ff85ff6b001400b9ff0d00e5ff2d00360024003e0089ff0b003d00c8ffa3ffa8ff05001b002a0023008dff99ffafff7f0061006400a7ff570080ff310094ffdafff9ff2200070046009aff58000a008eff68005300f0ff95ffb5ffd5ff12005700d4ff1f001f00b6ffb5ff0b00f3ff3b002f00b5ff1900abfff1ff720027002d005f00b2ff0e005300aaff5f0029006c006a00c4ffeeff8dffe9fffdffa3ffefff7800dcff14009dffc1ffebfff1ff010010003600140060005200d9fff7fff0ffeeff3b000a00adff04000100f6ff6e00a9ff83ffb4fff0ff0500510058008eff15006500a0ff08000a000b00f8ff5000b9ff9bff5f0097ff0200f5fff7fff0ff3b00c5ff4100e9ff2a000f0082ff87ffd3ff9cfff9ff89ff04006300deff7b00d0ff7700a7ffcaffdbff0d005400e9ff4200fbffe8ffdcff70000a006c008fffaaffebffd4ff4d00dcff4400500092ff430014003e0079004000650094ffd9ffc6ffffff1f009aff770099ff1000590072005c00f4ffccffcfff340074002f009bff31004100210088ff2c003a0080ff17001300faff550091ff41000f00b9ffccfffeffd0ffe8ffe5ffccffc2ff38001a000d004500a2ff5a007200ccff1f004000f5ff270019008aff3600a7ff22005600150001003c00e6ff6c008fffe3ff33001800edffeeffecffacffaaff4400f4ff4800f0ff4000f8ffe5ffe9ffbfff2000a7ff15003900c4ffb2ff540080ff360090ff32003200a9ffb0ff2200ddffa8ffabff140081ff3700bbffa9ff49001a0037008bff1000030090ff88ff77006600f4ff1c007d000000a7ff63007800c7ff4b008dff6e00baff06003a00c4ff1100c9ff9fffcaff95ffe7ff8fff0300f9ffb6ffe9ff6d00efffdaff0400590091ffb5ff4200220065002b00dcffb8fff8ff70002900cdff21007e008affb7ff93ff32006a00a4fffeff63002300e6ffd5ff40000a007d000d004600f0ff7f00ccff430017001e00690098ffb1ffbdff0f00aaff7c007e006a0086ff33009fff290082ffc5ffb4ff2600cfff2f00ddff4500fbffb5ff84ff7700c9ff010088ffeeff93fff1ffc9ff3a00dcff8bff74004d0070003200000002001c002900d7ffd4ff1800e0ffa1ffe0ffb1ffb6ff8dffcdff0500e8ff0d00f8ffa4ff96ff4b005f00f8ffb5ff93ff82ffbfff81ffcdffbdfff8ffecff1d00e0ffc1ff13003a00e8ff93ffe2ff7000aeff98ff46000d00efff84ffd3fffdff92ff8000b5fff5ff6b001e000a00c1ffe0ff54000800adff6f0069007200acff7200e6ffe7fff5ff3100d0ff7900f2ff72001100e9ff500061003a00f3ff6a00bdff9ffff8ff090101000800000009000000040000000400000013010100090000000a000000000000000b0101000a0000000b0000001000000000000000000000007f0f000000000000020101000b0000000c000000890200000001000100040000006cffffff1cfeffff70fdffff9cfdffff99fdffff63ffffffbcffffff03000000c7fdffff8bffffffedfffffff8ffffff9ffeffff5fffffffdafeffffacfdffff4bffffff96ffffffc5feffff90feffffc8fffffff1feffff6bffffffccffffff94ffffffe7feffffa6fdffff91ffffffd3ffffff91fdfffff2ffffffe6ffffff38feffffe7ffffff60feffff3ffeffffb8fdffff57feffff33ffffff1cfeffffe3ffffffa6feffffabffffff9afdffff5afdffffe1ffffffcdfdffff6cfdffff85ffffff50feffff39ffffff70ffffffacfdffff6dfdffffd4fdffff52fdffffbefdffff4cffffff23ffffffcdfdffffb7feffff95feffffdcfeffff5dfefffff6ffffffd2feffff30ffffff60fdffff65feffff7ffdffff52fdffffd0ffffffb9ffffffc7feffffc2feffff59ffffffc8ffffffe5fdffff8cfffffff4ffffff1cfeffff6afdffffbcfdffff84ffffffd1ffffffc4fdffffaffdffff2effffff54fdffff96fdffff010000003bfeffff74ffffff04000000f4feffffd3feffff9bfeffffb3ffffff52fdffff62fefffff5fdffff7affffff6ffeffff07ffffff67fefffff8feffff6affffffc1ffffff92fdffffa3feffffe4fdffffb5feffffe2feffff17fffffff6fdfffffdffffff39feffff66feffff55ffffff2dffffff50feffff55ffffffa2ffffffeffdffffd1ffffff2afeffff52ffffff6bffffff69fdffff3bffffffe1ffffffdcfeffff72feffff38ffffffc4ffffffddfeffff4effffffa5feffff2bffffff3fffffffaffeffff60fdffff15fefffffdfeffff58fdffff43feffffc2fdffff89fdffff03ffffffbdfeffffa8feffffa7feffff53fdffff38feffff7bffffff61ffffff76ffffffd4fdffffabfeffffe2fdffff","id":"lower_jpegai/jpegai/hs_y/range/1","load":"ok","profiles":["acc32","acc64"]} {"decodes":[{"expect":{"outputs":[{"data":["-125","-121","-120","-119","-121","-119","-36","-4","-125","-121","-120","-119","-122","-121","-48","-19","-124","-125","-125","-114","-124","-123","-120","30","-124","-125","-125","-114","-124","-124","-121","12","-124","-111","-125","-124","-96","-23","-122","-120","-124","-111","-125","-124","-100","-38","-123","-121","-125","-123","-105","-120","-95","-61","71","-66","-125","-123","-105","-120","-99","-69","49","-74","-123","-123","-71","-47","-122","-121","-48","-19","-125","-121","-120","-119","-125","-121","-120","-119","-124","-124","-122","-24","-124","-124","-121","12","-124","-125","-125","-114","-124","-125","-125","-114","-107","-67","-123","-122","-100","-38","-123","-121","-124","-111","-125","-124","-124","-111","-125","-124","-106","-84","5","-90","-99","-69","49","-74","-125","-123","-105","-120","-125","-123","-105","-120","-125","-121","-120","-119","-124","-123","-107","-90","-118","-112","34","82","-125","-121","-120","-119","-124","-125","-125","-114","-124","-125","-124","-78","-124","-122","-117","138","-124","-125","-125","-114","-124","-111","-125","-124","-118","-110","-124","-123","-74","64","-120","-117","-124","-111","-125","-124","-125","-123","-105","-120","-118","-108","-61","-114","-72","-15","203","-18","-125","-123","-105","-120","-125","-121","-120","-119","-125","-121","-120","-119","-125","-121","-120","-119","-125","-121","-120","-119","-124","-125","-125","-114","-124","-125","-125","-114","-124","-125","-125","-114","-124","-125","-125","-114","-124","-111","-125","-124","-124","-111","-125","-124","-124","-111","-125","-124","-124","-111","-125","-124","-125","-123","-105","-120","-125","-123","-105","-120","-125","-123","-105","-120","-125","-123","-105","-120","-406","-406","-376","-404","-391","-403","-64","-380","-406","-406","-376","-404","-393","-403","-110","-383","-405","-406","-406","-404","-331","-399","-402","-232","-405","-406","-406","-404","-340","-400","-402","-253","-406","-395","-399","-375","-403","-251","-290","-309","-406","-395","-399","-375","-403","-272","-306","-325","-406","-395","-406","-377","-304","-315","-403","131","-406","-395","-406","-377","-317","-328","-403","67","-396","-404","-203","-389","-393","-403","-110","-383","-406","-406","-376","-404","-406","-406","-376","-404","-359","-402","-403","-296","-340","-400","-402","-253","-405","-406","-406","-404","-405","-406","-406","-404","-404","-314","-337","-357","-403","-272","-306","-325","-406","-395","-399","-375","-406","-395","-399","-375","-342","-353","-404","-60","-317","-328","-403","67","-406","-395","-406","-377","-406","-395","-406","-377","-406","-406","-376","-404","-402","-405","-343","-398","-379","-400","215","-362","-406","-406","-376","-404","-405","-406","-406","-404","-387","-404","-405","-361","-276","-395","-398","-103","-405","-406","-406","-404","-406","-395","-399","-375","-405","-376","-383","-405","-400","-127","-198","-213","-406","-395","-399","-375","-406","-395","-406","-377","-380","-392","-405","-250","-227","-239","-400","512","-406","-395","-406","-377","-406","-406","-376","-404","-406","-406","-376","-404","-406","-406","-376","-404","-406","-406","-376","-404","-405","-406","-406","-404","-405","-406","-406","-404","-405","-406","-406","-404","-405","-406","-406","-404","-406","-395","-399","-375","-406","-395","-399","-375","-406","-395","-399","-375","-406","-395","-399","-375","-406","-395","-406","-377","-406","-395","-406","-377","-406","-395","-406","-377","-406","-395","-406","-377","-198","-180","-198","-190","-156","124","-195","-70","-198","-180","-198","-190","-161","81","-196","-87","-198","-198","-196","-198","-193","-184","-166","-85","-198","-198","-196","-198","-194","-186","-170","-100","-179","-183","-198","-198","137","-5","-114","-193","-179","-183","-198","-198","98","-27","-124","-194","-189","-196","-196","-198","-175","-161","-48","-196","-189","-196","-196","-198","-176","-166","-67","-196","-171","-4","-196","-121","-161","81","-196","-87","-198","-180","-198","-190","-198","-180","-198","-190","-195","-189","-178","-128","-194","-186","-170","-100","-198","-198","-196","-198","-198","-198","-196","-198","19","-72","-145","-195","98","-27","-124","-194","-179","-183","-198","-198","-179","-183","-198","-198","-180","-176","-105","-197","-176","-166","-67","-196","-189","-196","-196","-198","-189","-196","-196","-198","-198","-180","-198","-190","-187","-131","-197","-172","-124","379","-194","32","-198","-180","-198","-190","-198","-198","-196","-198","-197","-195","-189","-170","-190","-173","-144","-1","-198","-198","-196","-198","-179","-183","-198","-198","-100","-138","-177","-197","374","129","-51","-189","-179","-183","-198","-198","-189","-196","-196","-198","-185","-191","-162","-198","-164","-131","66","-194","-189","-196","-196","-198","-198","-180","-198","-190","-198","-180","-198","-190","-198","-180","-198","-190","-198","-180","-198","-190","-198","-198","-196","-198","-198","-198","-196","-198","-198","-198","-196","-198","-198","-198","-196","-198","-179","-183","-198","-198","-179","-183","-198","-198","-179","-183","-198","-198","-179","-183","-198","-198","-189","-196","-196","-198","-189","-196","-196","-198","-189","-196","-196","-198","-189","-196","-196","-198","-53","-51","-53","-51","-50","39","-48","-36","-53","-51","-53","-51","-51","28","-49","-38","-38","-53","-52","-53","126","-50","-10","39","-38","-53","-52","-53","105","-51","-15","27","-42","-42","-52","-53","-28","166","-52","-49","-42","-42","-52","-53","-32","137","-52","-50","-51","-53","-47","-40","-48","-47","179","186","-51","-53","-47","-40","-49","-48","149","157","-52","4","-50","-42","-51","28","-49","-38","-53","-51","-53","-51","-53","-51","-53","-51","64","-51","-26","4","105","-51","-15","27","-38","-53","-52","-53","-38","-53","-52","-53","-41","79","-52","-51","-32","137","-52","-50","-42","-42","-52","-53","-42","-42","-52","-53","-50","-49","90","101","-49","-48","149","157","-51","-53","-47","-40","-51","-53","-47","-40","-53","-51","-53","-51","-53","-31","-52","-47","-48","110","-44","-25","-53","-51","-53","-51","-38","-53","-52","-53","3","-52","-42","-30","249","-49","22","108","-38","-53","-52","-53","-42","-42","-52","-53","-51","-7","-52","-52","-1","338","-52","-47","-42","-42","-52","-53","-51","-53","-47","-40","-53","-51","1","16","-43","-42","358","355","-51","-53","-47","-40","-53","-51","-53","-51","-53","-51","-53","-51","-53","-51","-53","-51","-53","-51","-53","-51","-38","-53","-52","-53","-38","-53","-52","-53","-38","-53","-52","-53","-38","-53","-52","-53","-42","-42","-52","-53","-42","-42","-52","-53","-42","-42","-52","-53","-42","-42","-52","-53","-51","-53","-47","-40","-51","-53","-47","-40","-51","-53","-47","-40","-51","-53","-47","-40","-66","-56","-63","-66","-60","120","-52","-60","-66","-56","-63","-66","-60","98","-54","-61","-61","-60","-66","-65","7","164","-57","-55","-61","-60","-66","-65","-3","136","-58","-56","-66","-65","-63","-66","-60","-50","20","-56","-66","-65","-63","-66","-61","-52","8","-58","-66","-62","-63","-66","-65","-55","55","-58","-66","-62","-63","-66","-65","-57","40","-59","-62","54","-58","-62","-60","98","-54","-61","-66","-56","-63","-66","-66","-56","-63","-66","-23","80","-60","-59","-3","136","-58","-56","-61","-60","-66","-65","-61","-60","-66","-65","-63","-56","-14","-60","-61","-52","8","-58","-66","-65","-63","-66","-66","-65","-63","-66","-65","-61","9","-61","-65","-57","40","-59","-66","-62","-63","-66","-66","-62","-63","-66","-66","-56","-63","-66","-64","-12","-64","-64","-55","252","-40","-55","-66","-56","-63","-66","-61","-60","-66","-65","-52","-4","-64","-62","65","332","-50","-48","-61","-60","-66","-65","-66","-65","-63","-66","-65","-63","-47","-64","-55","-38","86","-49","-66","-65","-63","-66","-66","-62","-63","-66","-66","-66","-38","-64","-64","-44","148","-53","-66","-62","-63","-66","-66","-56","-63","-66","-66","-56","-63","-66","-66","-56","-63","-66","-66","-56","-63","-66","-61","-60","-66","-65","-61","-60","-66","-65","-61","-60","-66","-65","-61","-60","-66","-65","-66","-65","-63","-66","-66","-65","-63","-66","-66","-65","-63","-66","-66","-65","-63","-66","-66","-62","-63","-66","-66","-62","-63","-66","-66","-62","-63","-66","-66","-62","-63","-66","-286","-301","-301","-301","-66","-296","-286","-301","-286","-301","-301","-301","-94","-296","-288","-301","-300","-300","-301","-295","-281","-260","-289","-89","-300","-300","-301","-295","-283","-265","-291","-117","-293","-301","-298","-300","-217","-278","-264","-290","-293","-301","-298","-300","-226","-281","-269","-291","-300","-301","-301","-288","-272","-270","-296","-296","-300","-301","-301","-288","-276","-274","-296","-298","-149","-298","-292","-301","-94","-296","-288","-301","-286","-301","-301","-301","-286","-301","-301","-301","-289","-275","-294","-171","-283","-265","-291","-117","-300","-300","-301","-295","-300","-300","-301","-295","-245","-287","-279","-294","-226","-281","-269","-291","-293","-301","-298","-300","-293","-301","-298","-300","-283","-282","-298","-299","-276","-274","-296","-298","-300","-301","-301","-288","-300","-301","-301","-288","-286","-301","-301","-301","-231","-300","-297","-301","99","-292","-275","-301","-286","-301","-301","-301","-300","-300","-301","-295","-297","-290","-298","-253","-265","-230","-280","74","-300","-300","-301","-295","-293","-301","-298","-300","-274","-295","-294","-298","-160","-261","-234","-282","-293","-301","-298","-300","-300","-301","-301","-288","-294","-293","-299","-293","-250","-247","-292","-282","-300","-301","-301","-288","-286","-301","-301","-301","-286","-301","-301","-301","-286","-301","-301","-301","-286","-301","-301","-301","-300","-300","-301","-295","-300","-300","-301","-295","-300","-300","-301","-295","-300","-300","-301","-295","-293","-301","-298","-300","-293","-301","-298","-300","-293","-301","-298","-300","-293","-301","-298","-300","-300","-301","-301","-288","-300","-301","-301","-288","-300","-301","-301","-288","-300","-301","-301","-288","-569","-568","-564","-571","-513","-548","-332","-569","-569","-568","-564","-571","-520","-551","-361","-569","-568","-555","-564","-571","-515","-311","-352","-565","-568","-555","-564","-571","-521","-341","-378","-566","-560","-565","-563","-571","-474","-461","-467","-566","-560","-565","-563","-571","-484","-474","-481","-567","-570","-570","-571","-559","-569","-547","-568","-373","-570","-570","-571","-559","-569","-550","-568","-396","-534","-555","-419","-570","-520","-551","-361","-569","-569","-568","-564","-571","-569","-568","-564","-571","-534","-402","-431","-567","-521","-341","-378","-566","-568","-555","-564","-571","-568","-555","-564","-571","-506","-500","-509","-568","-484","-474","-481","-567","-560","-565","-563","-571","-560","-565","-563","-571","-569","-556","-569","-442","-569","-550","-568","-396","-570","-570","-571","-559","-570","-570","-571","-559","-569","-568","-564","-571","-555","-563","-506","-571","-471","-533","-158","-568","-569","-568","-564","-571","-568","-555","-564","-571","-554","-494","-511","-569","-475","-128","-193","-561","-568","-555","-564","-571","-560","-565","-563","-571","-538","-539","-551","-570","-409","-383","-383","-562","-560","-565","-563","-571","-570","-570","-571","-559","-569","-565","-570","-512","-568","-530","-566","-233","-570","-570","-571","-559","-569","-568","-564","-571","-569","-568","-564","-571","-569","-568","-564","-571","-569","-568","-564","-571","-568","-555","-564","-571","-568","-555","-564","-571","-568","-555","-564","-571","-568","-555","-564","-571","-560","-565","-563","-571","-560","-565","-563","-571","-560","-565","-563","-571","-560","-565","-563","-571","-570","-570","-571","-559","-570","-570","-571","-559","-570","-570","-571","-559","-570","-570","-571","-559","-187","-192","-193","-193","-129","-158","-191","-178","-187","-192","-193","-193","-136","-162","-191","-180","-187","-173","-193","-192","43","-149","-187","-75","-187","-173","-193","-192","14","-152","-187","-90","-193","-193","-193","-193","-181","-191","-178","-178","-193","-193","-193","-193","-182","-191","-180","-180","-193","-184","-180","-193","-190","156","-158","-187","-193","-184","-180","-193","-190","114","-164","-188","-151","-172","-192","-184","-136","-162","-191","-180","-187","-192","-193","-193","-187","-192","-193","-193","-43","-158","-189","-119","14","-152","-187","-90","-187","-173","-193","-192","-187","-173","-193","-192","-185","-192","-183","-183","-182","-191","-180","-180","-193","-193","-193","-193","-193","-193","-193","-193","-191","29","-176","-189","-190","114","-164","-188","-193","-184","-180","-193","-193","-184","-180","-193","-187","-192","-193","-193","-172","-185","-192","-190","-85","-130","-190","-167","-187","-192","-193","-193","-187","-173","-193","-192","-130","-167","-191","-163","215","-131","-182","12","-187","-173","-193","-192","-193","-193","-193","-193","-190","-192","-189","-189","-172","-189","-167","-167","-193","-193","-193","-193","-193","-184","-180","-193","-192","-99","-192","-191","-187","411","-122","-183","-193","-184","-180","-193","-187","-192","-193","-193","-187","-192","-193","-193","-187","-192","-193","-193","-187","-192","-193","-193","-187","-173","-193","-192","-187","-173","-193","-192","-187","-173","-193","-192","-187","-173","-193","-192","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-193","-184","-180","-193","-193","-184","-180","-193","-193","-184","-180","-193","-193","-184","-180","-193","-453","-451","-451","-452","-340","-413","-15","-88","-453","-451","-451","-452","-354","-418","-69","-135","-446","-456","-456","-442","-448","-451","-390","-318","-446","-456","-456","-442","-450","-452","-398","-334","-456","-455","-456","-449","-401","-431","-448","-410","-456","-455","-456","-449","-408","-434","-449","-415","-456","-456","-454","-446","-451","-442","-383","-90","-456","-456","-454","-446","-452","-444","-392","-137","-382","-427","-178","-228","-354","-418","-69","-135","-453","-451","-451","-452","-453","-451","-451","-452","-455","-453","-415","-365","-450","-452","-398","-334","-446","-456","-456","-442","-446","-456","-456","-442","-421","-440","-451","-424","-408","-434","-449","-415","-456","-455","-456","-449","-456","-455","-456","-449","-453","-447","-410","-231","-452","-444","-392","-137","-456","-456","-454","-446","-456","-456","-454","-446","-453","-451","-451","-452","-425","-441","-342","-367","-255","-384","312","191","-453","-451","-451","-452","-446","-456","-456","-442","-451","-455","-439","-411","-434","-447","-340","-225","-446","-456","-456","-442","-456","-455","-456","-449","-442","-449","-454","-439","-360","-413","-442","-381","-456","-455","-456","-449","-456","-456","-454","-446","-455","-453","-436","-372","-448","-432","-330","192","-456","-456","-454","-446","-453","-451","-451","-452","-453","-451","-451","-452","-453","-451","-451","-452","-453","-451","-451","-452","-446","-456","-456","-442","-446","-456","-456","-442","-446","-456","-456","-442","-446","-456","-456","-442","-456","-455","-456","-449","-456","-455","-456","-449","-456","-455","-456","-449","-456","-455","-456","-449","-456","-456","-454","-446","-456","-456","-454","-446","-456","-456","-454","-446","-456","-456","-454","-446","-203","-213","-190","-213","281","-205","-178","-188","-203","-213","-190","-213","221","-206","-180","-191","-201","-211","-213","-206","-121","-183","-197","-20","-201","-211","-213","-206","-131","-187","-199","-45","-213","-206","-211","-208","-210","22","-159","-207","-213","-206","-211","-208","-210","-8","-166","-209","-213","-213","-206","-213","-213","-159","168","-208","-213","-213","-206","-213","-213","-166","119","-208","100","-208","-183","-197","221","-206","-180","-191","-203","-213","-190","-213","-203","-213","-190","-213","-151","-195","-203","-95","-131","-187","-199","-45","-201","-211","-213","-206","-201","-211","-213","-206","-211","-68","-179","-211","-210","-8","-166","-209","-213","-206","-211","-208","-213","-206","-211","-208","-213","-179","22","-210","-213","-166","119","-208","-213","-213","-206","-213","-213","-213","-206","-213","-203","-213","-190","-213","-82","-211","-187","-206","644","-200","-169","-169","-203","-213","-190","-213","-201","-211","-213","-206","-181","-207","-209","-170","-61","-160","-186","130","-201","-211","-213","-206","-213","-206","-211","-208","-212","-159","-198","-211","-207","204","-120","-199","-213","-206","-211","-208","-213","-213","-206","-213","-213","-200","-123","-212","-213","-119","459","-204","-213","-213","-206","-213","-203","-213","-190","-213","-203","-213","-190","-213","-203","-213","-190","-213","-203","-213","-190","-213","-201","-211","-213","-206","-201","-211","-213","-206","-201","-211","-213","-206","-201","-211","-213","-206","-213","-206","-211","-208","-213","-206","-211","-208","-213","-206","-211","-208","-213","-206","-211","-208","-213","-213","-206","-213","-213","-213","-206","-213","-213","-213","-206","-213","-213","-213","-206","-213","-475","-474","-474","-474","-460","-452","-462","-308","-475","-474","-474","-474","-462","-455","-464","-329","-474","-469","-474","-472","-474","-412","-415","-322","-474","-469","-474","-472","-474","-421","-422","-341","-474","-475","-474","-475","-468","-473","-460","-468","-474","-475","-474","-475","-468","-473","-462","-469","-472","-475","-474","-468","-450","-462","-460","-368","-472","-475","-474","-468","-453","-464","-462","-380","-466","-461","-467","-371","-462","-455","-464","-329","-475","-474","-474","-474","-475","-474","-474","-474","-475","-438","-438","-380","-474","-421","-422","-341","-474","-469","-474","-472","-474","-469","-474","-472","-470","-474","-465","-471","-468","-473","-462","-469","-474","-475","-474","-475","-474","-475","-474","-475","-459","-467","-465","-405","-453","-464","-462","-380","-472","-475","-474","-468","-472","-475","-474","-468","-475","-474","-474","-474","-471","-470","-473","-434","-449","-434","-451","-182","-475","-474","-474","-474","-474","-469","-474","-472","-475","-464","-461","-439","-473","-360","-369","-205","-474","-469","-474","-472","-474","-475","-474","-475","-472","-474","-471","-474","-463","-472","-450","-463","-474","-475","-474","-475","-472","-475","-474","-468","-467","-472","-471","-443","-434","-453","-449","-293","-472","-475","-474","-468","-475","-474","-474","-474","-475","-474","-474","-474","-475","-474","-474","-474","-475","-474","-474","-474","-474","-469","-474","-472","-474","-469","-474","-472","-474","-469","-474","-472","-474","-469","-474","-472","-474","-475","-474","-475","-474","-475","-474","-475","-474","-475","-474","-475","-474","-475","-474","-475","-472","-475","-474","-468","-472","-475","-474","-468","-472","-475","-474","-468","-472","-475","-474","-468","-568","-570","-571","-570","-532","-558","-556","-513","-568","-570","-571","-570","-537","-560","-558","-520","-571","-571","-543","-565","-564","-567","-347","-491","-571","-571","-543","-565","-565","-568","-371","-500","-568","-568","-571","-571","-565","-562","-564","-570","-568","-568","-571","-571","-566","-563","-565","-571","-571","-570","-571","-566","-565","-557","-557","-458","-571","-570","-571","-566","-566","-559","-559","-473","-548","-563","-562","-535","-537","-560","-558","-520","-568","-570","-571","-570","-568","-570","-571","-570","-566","-569","-420","-519","-565","-568","-371","-500","-571","-571","-543","-565","-571","-571","-543","-565","-569","-566","-567","-571","-566","-563","-565","-571","-568","-568","-571","-571","-568","-568","-571","-571","-567","-562","-562","-503","-566","-559","-559","-473","-571","-570","-571","-566","-571","-570","-571","-566","-568","-570","-571","-570","-563","-569","-568","-558","-500","-547","-545","-468","-568","-570","-571","-570","-571","-571","-543","-565","-569","-570","-494","-546","-558","-565","-200","-435","-571","-571","-543","-565","-568","-568","-571","-571","-570","-571","-569","-571","-559","-553","-559","-570","-568","-568","-571","-571","-571","-570","-571","-566","-570","-567","-567","-547","-560","-548","-547","-370","-571","-570","-571","-566","-568","-570","-571","-570","-568","-570","-571","-570","-568","-570","-571","-570","-568","-570","-571","-570","-571","-571","-543","-565","-571","-571","-543","-565","-571","-571","-543","-565","-571","-571","-543","-565","-568","-568","-571","-571","-568","-568","-571","-571","-568","-568","-571","-571","-568","-568","-571","-571","-571","-570","-571","-566","-571","-570","-571","-566","-571","-570","-571","-566","-571","-570","-571","-566","-324","-326","-323","-317","-277","-295","-252","-141","-324","-326","-323","-317","-283","-299","-261","-163","-326","-327","-325","-327","-313","-317","-310","-311","-326","-327","-325","-327","-314","-318","-312","-313","-326","-314","-327","-326","-322","-228","-308","-320","-326","-314","-327","-326","-322","-242","-310","-321","-324","-326","-321","-327","-256","-323","-281","-311","-324","-326","-321","-327","-265","-324","-288","-313","-294","-307","-281","-207","-283","-299","-261","-163","-324","-326","-323","-317","-324","-326","-323","-317","-318","-321","-316","-317","-314","-318","-312","-313","-326","-327","-325","-327","-326","-327","-325","-327","-323","-270","-315","-323","-322","-242","-310","-321","-326","-314","-327","-326","-326","-314","-327","-326","-284","-325","-301","-317","-265","-324","-288","-313","-324","-326","-321","-327","-324","-326","-321","-327","-324","-326","-323","-317","-312","-318","-311","-273","-241","-272","-192","-9","-324","-326","-323","-317","-326","-327","-325","-327","-324","-324","-321","-323","-301","-309","-299","-299","-326","-327","-325","-327","-326","-314","-327","-326","-325","-312","-322","-326","-319","-144","-294","-314","-326","-314","-327","-326","-324","-326","-321","-327","-312","-327","-320","-323","-201","-319","-242","-298","-324","-326","-321","-327","-324","-326","-323","-317","-324","-326","-323","-317","-324","-326","-323","-317","-324","-326","-323","-317","-326","-327","-325","-327","-326","-327","-325","-327","-326","-327","-325","-327","-326","-327","-325","-327","-326","-314","-327","-326","-326","-314","-327","-326","-326","-314","-327","-326","-326","-314","-327","-326","-324","-326","-321","-327","-324","-326","-321","-327","-324","-326","-321","-327","-324","-326","-321","-327","-27","-27","-27","-11","-25","-22","-18","385","-27","-27","-27","-11","-25","-23","-19","335","-27","-20","-27","-14","-13","105","-25","-22","-27","-20","-27","-14","-15","90","-26","-24","-5","-13","-13","-27","347","53","-25","-20","-5","-13","-13","-27","298","42","-27","-21","-27","-26","-19","-19","-24","-25","-25","65","-27","-26","-19","-19","-24","-25","-26","54","-26","-24","-21","236","-25","-23","-19","335","-27","-27","-27","-11","-27","-27","-27","-11","-18","59","-26","-25","-15","90","-26","-24","-27","-20","-27","-14","-27","-20","-27","-14","199","18","-23","-22","298","42","-27","-21","-5","-13","-13","-27","-5","-13","-13","-27","-25","-26","-25","33","-24","-25","-26","54","-27","-26","-19","-19","-27","-26","-19","-19","-27","-27","-27","-11","-27","-26","-25","88","-23","-19","-11","682","-27","-27","-27","-11","-27","-20","-27","-14","-24","12","-27","-18","-2","199","-24","-9","-27","-20","-27","-14","-5","-13","-13","-27","50","-17","-17","-25","644","124","-13","-14","-5","-13","-13","-27","-27","-26","-19","-19","-26","-27","-22","2","-21","-22","-17","128","-27","-26","-19","-19","-27","-27","-27","-11","-27","-27","-27","-11","-27","-27","-27","-11","-27","-27","-27","-11","-27","-20","-27","-14","-27","-20","-27","-14","-27","-20","-27","-14","-27","-20","-27","-14","-5","-13","-13","-27","-5","-13","-13","-27","-5","-13","-13","-27","-5","-13","-13","-27","-27","-26","-19","-19","-27","-26","-19","-19","-27","-26","-19","-19","-27","-26","-19","-19","-135","-110","-140","-140","-105","210","-130","-138","-135","-110","-140","-140","-110","162","-131","-139","-140","-111","-138","-134","-136","-77","-81","-60","-140","-111","-138","-134","-136","-89","-89","-71","-139","-130","-140","-116","-117","-6","-137","260","-139","-130","-140","-116","-120","-24","-137","213","-140","-140","-124","-140","-92","-139","60","-137","-140","-140","-124","-140","-98","-139","33","-137","-120","67","-134","-139","-110","162","-131","-139","-135","-110","-140","-140","-135","-110","-140","-140","-137","-112","-103","-92","-136","-89","-89","-71","-140","-111","-138","-134","-140","-111","-138","-134","-125","-60","-138","119","-120","-24","-137","213","-139","-130","-140","-116","-139","-130","-140","-116","-110","-139","-21","-138","-98","-139","33","-137","-140","-140","-124","-140","-140","-140","-124","-140","-135","-110","-140","-140","-135","-75","-138","-140","-75","495","-123","-137","-135","-110","-140","-140","-140","-111","-138","-134","-139","-134","-124","-125","-132","-8","-39","4","-140","-111","-138","-134","-139","-130","-140","-116","-134","-114","-139","-22","-101","102","-134","542","-139","-130","-140","-116","-140","-140","-124","-140","-128","-140","-102","-139","-56","-138","222","-134","-140","-140","-124","-140","-135","-110","-140","-140","-135","-110","-140","-140","-135","-110","-140","-140","-135","-110","-140","-140","-140","-111","-138","-134","-140","-111","-138","-134","-140","-111","-138","-134","-140","-111","-138","-134","-139","-130","-140","-116","-139","-130","-140","-116","-139","-130","-140","-116","-139","-130","-140","-116","-140","-140","-124","-140","-140","-140","-124","-140","-140","-140","-124","-140","-140","-140","-124","-140","-135","-126","-104","-131","-121","-86","254","-98","-135","-126","-104","-131","-123","-91","202","-102","-130","-135","-128","-126","-78","-124","-70","-48","-130","-135","-128","-126","-86","-125","-77","-58","-134","-116","-135","-129","-121","236","-131","-76","-134","-116","-135","-129","-122","192","-131","-84","-131","-135","-135","-134","-131","-127","-128","-107","-131","-135","-135","-134","-131","-128","-129","-111","-127","-101","97","-110","-123","-91","202","-102","-135","-126","-104","-131","-135","-126","-104","-131","-102","-128","-91","-77","-86","-125","-77","-58","-130","-135","-128","-126","-130","-135","-128","-126","-126","104","-132","-100","-122","192","-131","-84","-134","-116","-135","-129","-134","-116","-135","-129","-131","-130","-130","-117","-131","-128","-129","-111","-131","-135","-135","-134","-131","-135","-135","-134","-135","-126","-104","-131","-132","-116","-61","-123","-111","-56","569","-73","-135","-126","-104","-131","-130","-135","-128","-126","-125","-132","-113","-106","-32","-115","-26","11","-130","-135","-128","-126","-134","-116","-135","-129","-130","-28","-134","-125","-111","500","-127","-27","-134","-116","-135","-129","-131","-135","-135","-134","-131","-133","-133","-127","-131","-121","-122","-88","-131","-135","-135","-134","-135","-126","-104","-131","-135","-126","-104","-131","-135","-126","-104","-131","-135","-126","-104","-131","-130","-135","-128","-126","-130","-135","-128","-126","-130","-135","-128","-126","-130","-135","-128","-126","-134","-116","-135","-129","-134","-116","-135","-129","-134","-116","-135","-129","-134","-116","-135","-129","-131","-135","-135","-134","-131","-135","-135","-134","-131","-135","-135","-134","-131","-135","-135","-134","-299","-299","-269","-299","-292","-281","-261","-294","-299","-299","-269","-299","-293","-283","-270","-294","-269","-298","-299","-298","-49","-281","-295","-162","-269","-298","-299","-298","-84","-284","-295","-179","-299","-299","-297","-286","-292","-291","-272","-134","-299","-299","-297","-286","-293","-292","-275","-153","-292","-299","-299","-299","-201","-295","-297","-289","-292","-299","-299","-299","-214","-296","-297","-291","-294","-288","-287","-296","-293","-283","-270","-294","-299","-299","-269","-299","-299","-299","-269","-299","-154","-288","-296","-213","-84","-284","-295","-179","-269","-298","-299","-298","-269","-298","-299","-298","-295","-294","-281","-191","-293","-292","-275","-153","-299","-299","-297","-286","-299","-299","-297","-286","-240","-297","-298","-293","-214","-296","-297","-291","-292","-299","-299","-299","-292","-299","-299","-299","-299","-299","-269","-299","-297","-294","-286","-298","-286","-267","-210","-290","-299","-299","-269","-299","-269","-298","-299","-298","-259","-295","-298","-265","161","-268","-291","-58","-269","-298","-299","-298","-299","-299","-297","-286","-297","-297","-291","-248","-287","-285","-253","-20","-299","-299","-297","-286","-292","-299","-299","-299","-280","-298","-299","-297","-122","-292","-296","-282","-292","-299","-299","-299","-299","-299","-269","-299","-299","-299","-269","-299","-299","-299","-269","-299","-299","-299","-269","-299","-269","-298","-299","-298","-269","-298","-299","-298","-269","-298","-299","-298","-269","-298","-299","-298","-299","-299","-297","-286","-299","-299","-297","-286","-299","-299","-297","-286","-299","-299","-297","-286","-292","-299","-299","-299","-292","-299","-299","-299","-292","-299","-299","-299","-292","-299","-299","-299","-583","-583","-583","-571","-577","-572","-570","-503","-583","-583","-583","-571","-578","-574","-572","-512","-580","-579","-583","-575","-495","-532","-481","-419","-580","-579","-583","-575","-507","-538","-494","-438","-579","-583","-583","-570","-131","-536","-577","-452","-579","-583","-583","-570","-187","-542","-578","-470","-582","-582","-577","-583","-557","-575","-349","-582","-582","-582","-577","-583","-560","-576","-377","-582","-579","-576","-575","-529","-578","-574","-572","-512","-583","-583","-583","-571","-583","-583","-583","-571","-529","-550","-520","-477","-507","-538","-494","-438","-580","-579","-583","-575","-580","-579","-583","-575","-299","-554","-580","-506","-187","-542","-578","-470","-579","-583","-583","-570","-579","-583","-583","-570","-567","-578","-434","-582","-560","-576","-377","-582","-582","-582","-577","-583","-582","-582","-577","-583","-583","-583","-583","-571","-581","-580","-580","-554","-573","-564","-561","-452","-583","-583","-583","-571","-580","-579","-583","-575","-563","-567","-558","-536","-427","-497","-405","-302","-580","-579","-583","-575","-579","-583","-583","-570","-467","-571","-582","-560","205","-501","-573","-344","-579","-583","-583","-570","-582","-582","-577","-583","-577","-582","-520","-583","-536","-567","-178","-580","-582","-582","-577","-583","-583","-583","-583","-571","-583","-583","-583","-571","-583","-583","-583","-571","-583","-583","-583","-571","-580","-579","-583","-575","-580","-579","-583","-575","-580","-579","-583","-575","-580","-579","-583","-575","-579","-583","-583","-570","-579","-583","-583","-570","-579","-583","-583","-570","-579","-583","-583","-570","-582","-582","-577","-583","-582","-582","-577","-583","-582","-582","-577","-583","-582","-582","-577","-583","-370","-370","-352","-370","-330","-313","-252","-367","-370","-370","-352","-370","-335","-320","-269","-367","-368","-366","-367","-369","-361","-349","-355","-360","-368","-366","-367","-369","-362","-352","-357","-361","-366","-364","-362","-363","-362","-325","-206","-242","-366","-364","-362","-363","-364","-331","-228","-257","-370","-351","-369","-370","-355","-261","-350","-368","-370","-351","-369","-370","-357","-277","-353","-368","-345","-334","-303","-368","-335","-320","-269","-367","-370","-370","-352","-370","-370","-370","-352","-370","-364","-359","-360","-363","-362","-352","-357","-361","-368","-366","-367","-369","-368","-366","-367","-369","-367","-344","-271","-287","-364","-331","-228","-257","-366","-364","-362","-363","-366","-364","-362","-363","-361","-309","-357","-369","-357","-277","-353","-368","-370","-351","-369","-370","-370","-351","-369","-370","-370","-370","-352","-370","-360","-356","-354","-369","-299","-270","-150","-365","-370","-370","-352","-370","-368","-366","-367","-369","-366","-368","-364","-367","-356","-330","-347","-353","-368","-366","-367","-369","-366","-364","-362","-363","-369","-363","-335","-333","-353","-287","-77","-151","-366","-364","-362","-363","-370","-351","-369","-370","-366","-357","-364","-370","-345","-165","-336","-366","-370","-351","-369","-370","-370","-370","-352","-370","-370","-370","-352","-370","-370","-370","-352","-370","-370","-370","-352","-370","-368","-366","-367","-369","-368","-366","-367","-369","-368","-366","-367","-369","-368","-366","-367","-369","-366","-364","-362","-363","-366","-364","-362","-363","-366","-364","-362","-363","-366","-364","-362","-363","-370","-351","-369","-370","-370","-351","-369","-370","-370","-351","-369","-370","-370","-351","-369","-370","-426","-429","-428","-425","72","-424","-401","79","-426","-429","-428","-425","8","-425","-405","16","-431","-431","-425","-431","-426","-428","-331","-426","-431","-431","-425","-431","-427","-428","-344","-427","-431","-431","-431","-429","-431","-416","-431","-420","-431","-431","-431","-429","-431","-418","-431","-422","-423","-431","-423","-431","-359","-424","-355","-416","-423","-431","-423","-431","-367","-425","-364","-418","-119","-427","-411","-110","8","-425","-405","16","-426","-429","-428","-425","-426","-429","-428","-425","-428","-429","-370","-428","-427","-428","-344","-427","-431","-431","-425","-431","-431","-431","-425","-431","-431","-422","-431","-425","-431","-418","-431","-422","-431","-431","-431","-429","-431","-431","-431","-429","-383","-426","-381","-422","-367","-425","-364","-418","-423","-431","-423","-431","-423","-431","-423","-431","-426","-429","-428","-425","-309","-431","-421","-299","453","-417","-381","457","-426","-429","-428","-425","-431","-431","-425","-431","-430","-430","-410","-430","-423","-425","-251","-422","-431","-431","-425","-431","-431","-431","-431","-429","-431","-427","-431","-429","-431","-405","-430","-411","-431","-431","-431","-429","-423","-431","-423","-431","-407","-429","-406","-427","-311","-419","-304","-404","-423","-431","-423","-431","-426","-429","-428","-425","-426","-429","-428","-425","-426","-429","-428","-425","-426","-429","-428","-425","-431","-431","-425","-431","-431","-431","-425","-431","-431","-431","-425","-431","-431","-431","-425","-431","-431","-431","-431","-429","-431","-431","-431","-429","-431","-431","-431","-429","-431","-431","-431","-429","-423","-431","-423","-431","-423","-431","-423","-431","-423","-431","-423","-431","-423","-431","-423","-431","-70","-58","-76","-67","-40","62","-65","69","-70","-58","-76","-67","-46","47","-66","50","-74","-75","-74","-76","-26","-43","-44","-57","-74","-75","-74","-76","-33","-47","-47","-59","-60","-76","-67","-75","24","-66","61","-64","-60","-76","-67","-75","13","-67","43","-65","-69","-72","-75","-56","-47","-59","-61","456","-69","-72","-75","-56","-49","-60","-63","392","-56","17","-69","11","-46","47","-66","50","-70","-58","-76","-67","-70","-58","-76","-67","-46","-55","-55","-64","-33","-47","-47","-59","-74","-75","-74","-76","-74","-75","-74","-76","-8","-69","6","-68","13","-67","43","-65","-60","-76","-67","-75","-60","-76","-67","-75","-55","-64","-67","264","-49","-60","-63","392","-69","-72","-75","-56","-69","-72","-75","-56","-70","-58","-76","-67","-72","-28","-73","-46","-9","152","-57","185","-70","-58","-76","-67","-74","-75","-74","-76","-65","-67","-66","-71","13","-19","-21","-42","-74","-75","-74","-76","-60","-76","-67","-75","-39","-73","-49","-72","87","-58","170","-55","-60","-76","-67","-75","-69","-72","-75","-56","-63","-69","-73","72","-30","-49","-50","840","-69","-72","-75","-56","-70","-58","-76","-67","-70","-58","-76","-67","-70","-58","-76","-67","-70","-58","-76","-67","-74","-75","-74","-76","-74","-75","-74","-76","-74","-75","-74","-76","-74","-75","-74","-76","-60","-76","-67","-75","-60","-76","-67","-75","-60","-76","-67","-75","-60","-76","-67","-75","-69","-72","-75","-56","-69","-72","-75","-56","-69","-72","-75","-56","-69","-72","-75","-56","-218","-203","-218","-218","-215","179","-211","-212","-218","-203","-218","-218","-215","127","-212","-213","-188","-211","-189","-217","-68","-97","137","-198","-188","-211","-189","-217","-91","-111","89","-201","-217","-215","-218","-217","-100","-161","-187","-194","-217","-215","-218","-217","-115","-168","-191","-198","-218","-217","-212","-212","-206","-195","-143","-139","-218","-217","-212","-212","-208","-198","-153","-148","-216","24","-214","-215","-215","127","-212","-213","-218","-203","-218","-218","-218","-203","-218","-218","-136","-140","-7","-205","-91","-111","89","-201","-188","-211","-189","-217","-188","-211","-189","-217","-145","-182","-199","-204","-115","-168","-191","-198","-217","-215","-218","-217","-217","-215","-218","-217","-211","-204","-174","-166","-208","-198","-153","-148","-218","-217","-212","-212","-218","-217","-212","-212","-218","-203","-218","-218","-217","-130","-216","-217","-212","488","-206","-208","-218","-203","-218","-218","-188","-211","-189","-217","-203","-183","-151","-212","67","-12","425","-184","-188","-211","-189","-217","-217","-215","-218","-217","-189","-202","-210","-213","-11","-121","-164","-176","-217","-215","-218","-217","-218","-217","-212","-212","-215","-213","-204","-193","-198","-178","-82","-84","-218","-217","-212","-212","-218","-203","-218","-218","-218","-203","-218","-218","-218","-203","-218","-218","-218","-203","-218","-218","-188","-211","-189","-217","-188","-211","-189","-217","-188","-211","-189","-217","-188","-211","-189","-217","-217","-215","-218","-217","-217","-215","-218","-217","-217","-215","-218","-217","-217","-215","-218","-217","-218","-217","-212","-212","-218","-217","-212","-212","-218","-217","-212","-212","-218","-217","-212","-212","-271","-270","-269","-271","-262","-254","-218","-271","-271","-270","-269","-271","-263","-257","-225","-271","-268","-271","-258","-271","-245","-265","-266","-240","-268","-271","-258","-271","-249","-265","-265","-244","-271","-269","-270","-271","-248","-208","-252","-266","-271","-269","-270","-271","-250","-215","-254","-267","-265","-271","-271","-271","-237","-266","-268","-265","-265","-271","-271","-271","-240","-267","-269","-266","-265","-261","-237","-271","-263","-257","-225","-271","-271","-270","-269","-271","-271","-270","-269","-271","-256","-267","-263","-252","-249","-265","-265","-244","-268","-271","-258","-271","-268","-271","-258","-271","-256","-231","-259","-268","-250","-215","-254","-267","-271","-269","-270","-271","-271","-269","-270","-271","-247","-268","-269","-267","-240","-267","-269","-266","-265","-271","-271","-271","-265","-271","-271","-271","-271","-270","-269","-271","-269","-268","-256","-271","-254","-241","-180","-271","-271","-270","-269","-271","-268","-271","-258","-271","-267","-270","-260","-264","-223","-260","-270","-217","-268","-271","-258","-271","-271","-269","-270","-271","-265","-254","-267","-270","-230","-162","-237","-263","-271","-269","-270","-271","-265","-271","-271","-271","-258","-270","-270","-269","-216","-262","-266","-261","-265","-271","-271","-271","-271","-270","-269","-271","-271","-270","-269","-271","-271","-270","-269","-271","-271","-270","-269","-271","-268","-271","-258","-271","-268","-271","-258","-271","-268","-271","-258","-271","-268","-271","-258","-271","-271","-269","-270","-271","-271","-269","-270","-271","-271","-269","-270","-271","-271","-269","-270","-271","-265","-271","-271","-271","-265","-271","-271","-271","-265","-271","-271","-271","-265","-271","-271","-271","-105","-107","-107","-106","-50","-83","-81","18","-105","-107","-107","-106","-57","-86","-84","2","-107","-104","-107","-107","-104","-83","-85","-99","-107","-104","-107","-107","-105","-86","-88","-100","-107","-104","-107","-107","-104","-79","-101","-89","-107","-104","-107","-107","-105","-82","-101","-92","-107","-104","-107","-106","-102","-46","-84","-64","-107","-104","-107","-106","-102","-53","-87","-70","-71","-92","-91","-29","-57","-86","-84","2","-105","-107","-107","-106","-105","-107","-107","-106","-105","-91","-94","-102","-105","-86","-88","-100","-107","-104","-107","-107","-107","-104","-107","-107","-105","-89","-103","-96","-105","-82","-101","-92","-107","-104","-107","-107","-107","-104","-107","-107","-104","-68","-93","-81","-102","-53","-87","-70","-107","-104","-107","-106","-107","-104","-107","-106","-105","-107","-107","-106","-91","-101","-100","-75","-9","-65","-61","111","-105","-107","-107","-106","-107","-104","-107","-107","-106","-99","-102","-105","-102","-67","-69","-93","-107","-104","-107","-107","-107","-104","-107","-107","-106","-98","-106","-103","-103","-61","-95","-76","-107","-104","-107","-107","-107","-104","-107","-106","-105","-90","-102","-97","-98","-2","-67","-31","-107","-104","-107","-106","-105","-107","-107","-106","-105","-107","-107","-106","-105","-107","-107","-106","-105","-107","-107","-106","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-107","-107","-104","-107","-106","-107","-104","-107","-106","-107","-104","-107","-106","-107","-104","-107","-106","-75","-79","-80","-64","-51","-47","-77","200","-75","-79","-80","-64","-54","-51","-77","163","-77","-80","-57","-80","-22","-78","157","-77","-77","-80","-57","-80","-29","-79","124","-78","-77","-77","-80","-69","-27","-46","-79","-73","-77","-77","-80","-69","-33","-50","-79","-75","-80","-80","-79","-80","-67","-78","-79","-23","-80","-80","-79","-80","-69","-78","-79","-30","-60","-60","-78","89","-54","-51","-77","163","-75","-79","-80","-64","-75","-79","-80","-64","-43","-79","59","-78","-29","-79","124","-78","-77","-80","-57","-80","-77","-80","-57","-80","-46","-60","-79","-80","-33","-50","-79","-75","-77","-77","-80","-69","-77","-77","-80","-69","-72","-79","-79","-44","-69","-78","-79","-30","-80","-80","-79","-80","-80","-80","-79","-80","-75","-79","-80","-64","-69","-73","-79","-22","-33","-22","-75","422","-75","-79","-80","-64","-77","-80","-57","-80","-64","-80","-38","-79","19","-77","352","-76","-77","-80","-57","-80","-77","-77","-80","-69","-64","-73","-80","-74","10","-18","-77","-59","-77","-77","-80","-69","-80","-80","-79","-80","-77","-80","-79","-66","-58","-77","-78","19","-80","-80","-79","-80","-75","-79","-80","-64","-75","-79","-80","-64","-75","-79","-80","-64","-75","-79","-80","-64","-77","-80","-57","-80","-77","-80","-57","-80","-77","-80","-57","-80","-77","-80","-57","-80","-77","-77","-80","-69","-77","-77","-80","-69","-77","-77","-80","-69","-77","-77","-80","-69","-80","-80","-79","-80","-80","-80","-79","-80","-80","-80","-79","-80","-80","-80","-79","-80","-101","-103","-103","-103","-98","-98","-90","-102","-101","-103","-103","-103","-99","-98","-92","-102","-102","-102","-89","-102","-86","-97","-5","114","-102","-102","-89","-102","-88","-98","-19","87","-103","-103","-101","-75","-95","-99","-69","-7","-103","-103","-101","-75","-96","-100","-73","-23","-88","-76","-103","-103","142","404","-87","20","-88","-76","-103","-103","113","344","-89","5","-99","-100","-95","-102","-99","-98","-92","-102","-101","-103","-103","-103","-101","-103","-103","-103","-92","-100","-47","33","-88","-98","-19","87","-102","-102","-89","-102","-102","-102","-89","-102","-98","-101","-82","-54","-96","-100","-73","-23","-103","-103","-101","-75","-103","-103","-101","-75","56","224","-93","-26","113","344","-89","5","-88","-76","-103","-103","-88","-76","-103","-103","-101","-103","-103","-103","-100","-102","-100","-103","-96","-94","-81","-102","-101","-103","-103","-103","-102","-102","-89","-102","-98","-102","-89","-48","-74","-91","79","276","-102","-102","-89","-102","-103","-103","-101","-75","-101","-102","-96","-100","-89","-96","-42","86","-103","-103","-101","-75","-88","-76","-103","-103","-30","44","-99","-72","315","764","-75","112","-88","-76","-103","-103","-101","-103","-103","-103","-101","-103","-103","-103","-101","-103","-103","-103","-101","-103","-103","-103","-102","-102","-89","-102","-102","-102","-89","-102","-102","-102","-89","-102","-102","-102","-89","-102","-103","-103","-101","-75","-103","-103","-101","-75","-103","-103","-101","-75","-103","-103","-101","-75","-88","-76","-103","-103","-88","-76","-103","-103","-88","-76","-103","-103","-88","-76","-103","-103","-672","-681","-681","-681","-480","-673","-435","-676","-672","-681","-681","-681","-506","-674","-466","-677","-677","-678","-681","-664","-611","-258","-680","-332","-677","-678","-681","-664","-619","-310","-680","-374","-680","-681","-677","-681","-657","-675","-471","-668","-680","-681","-677","-681","-660","-676","-498","-669","-655","-676","-681","-681","-523","-551","-666","-668","-655","-676","-681","-681","-546","-566","-668","-670","-559","-676","-527","-678","-506","-674","-466","-677","-672","-681","-681","-681","-672","-681","-681","-681","-636","-415","-680","-457","-619","-310","-680","-374","-677","-678","-681","-664","-677","-678","-681","-664","-666","-677","-551","-673","-660","-676","-498","-669","-680","-681","-677","-681","-680","-681","-677","-681","-592","-597","-672","-673","-546","-566","-668","-670","-655","-676","-681","-681","-655","-676","-681","-681","-672","-681","-681","-681","-638","-679","-619","-680","-323","-667","-250","-673","-672","-681","-681","-681","-677","-678","-681","-664","-660","-573","-680","-581","-561","57","-680","-83","-677","-678","-681","-664","-680","-681","-677","-681","-676","-679","-631","-678","-638","-671","-310","-658","-680","-681","-677","-681","-655","-676","-681","-681","-661","-644","-677","-678","-385","-457","-654","-658","-655","-676","-681","-681","-672","-681","-681","-681","-672","-681","-681","-681","-672","-681","-681","-681","-672","-681","-681","-681","-677","-678","-681","-664","-677","-678","-681","-664","-677","-678","-681","-664","-677","-678","-681","-664","-680","-681","-677","-681","-680","-681","-677","-681","-680","-681","-677","-681","-680","-681","-677","-681","-655","-676","-681","-681","-655","-676","-681","-681","-655","-676","-681","-681","-655","-676","-681","-681","-610","-617","-596","-608","-134","-607","-254","-590","-610","-617","-596","-608","-194","-608","-302","-595","-606","-616","-617","-617","-430","-596","-614","-616","-606","-616","-617","-617","-452","-599","-614","-616","-590","-617","-615","-616","-568","-615","-585","-590","-590","-617","-615","-616","-577","-616","-589","-594","-617","-605","-617","-616","-603","-531","-613","-583","-617","-605","-617","-616","-605","-541","-613","-587","-313","-610","-398","-604","-194","-608","-302","-595","-610","-617","-596","-608","-610","-617","-596","-608","-496","-604","-615","-616","-452","-599","-614","-616","-606","-616","-617","-617","-606","-616","-617","-617","-596","-616","-598","-601","-577","-616","-589","-594","-590","-617","-615","-616","-590","-617","-615","-616","-608","-559","-615","-595","-605","-541","-613","-587","-617","-605","-617","-616","-617","-605","-617","-616","-610","-617","-596","-608","-491","-614","-542","-617","223","-599","34","-563","-610","-617","-596","-608","-606","-616","-617","-617","-562","-611","-616","-617","-298","-581","-612","-616","-606","-616","-617","-617","-590","-617","-615","-616","-609","-617","-611","-611","-511","-614","-559","-569","-590","-617","-615","-616","-617","-605","-617","-616","-614","-587","-616","-608","-593","-476","-610","-558","-617","-605","-617","-616","-610","-617","-596","-608","-610","-617","-596","-608","-610","-617","-596","-608","-610","-617","-596","-608","-606","-616","-617","-617","-606","-616","-617","-617","-606","-616","-617","-617","-606","-616","-617","-617","-590","-617","-615","-616","-590","-617","-615","-616","-590","-617","-615","-616","-590","-617","-615","-616","-617","-605","-617","-616","-617","-605","-617","-616","-617","-605","-617","-616","-617","-605","-617","-616","-213","-219","-224","-220","15","-207","-210","-181","-213","-219","-224","-220","-16","-210","-211","-186","-224","-224","-224","-225","-204","-205","-189","-222","-224","-224","-224","-225","-207","-208","-193","-222","-205","-222","-219","-224","-193","-189","-177","-211","-205","-222","-219","-224","-195","-193","-182","-212","-216","-220","-222","-224","-94","-209","-170","-100","-216","-220","-222","-224","-112","-212","-177","-116","-79","-216","-215","-196","-16","-210","-211","-186","-213","-219","-224","-220","-213","-219","-224","-220","-212","-213","-203","-223","-207","-208","-193","-222","-224","-224","-224","-225","-224","-224","-224","-225","-198","-201","-193","-216","-195","-193","-182","-212","-205","-222","-219","-224","-205","-222","-219","-224","-147","-217","-192","-147","-112","-212","-177","-116","-216","-220","-222","-224","-216","-220","-222","-224","-213","-219","-224","-220","-174","-225","-220","-211","204","-189","-199","-152","-213","-219","-224","-220","-224","-224","-224","-225","-219","-221","-217","-224","-189","-189","-161","-219","-224","-224","-224","-225","-205","-222","-219","-224","-202","-214","-209","-221","-184","-164","-146","-201","-205","-222","-219","-224","-216","-220","-222","-224","-199","-225","-214","-193","11","-194","-126","-7","-216","-220","-222","-224","-213","-219","-224","-220","-213","-219","-224","-220","-213","-219","-224","-220","-213","-219","-224","-220","-224","-224","-224","-225","-224","-224","-224","-225","-224","-224","-224","-225","-224","-224","-224","-225","-205","-222","-219","-224","-205","-222","-219","-224","-205","-222","-219","-224","-205","-222","-219","-224","-216","-220","-222","-224","-216","-220","-222","-224","-216","-220","-222","-224","-216","-220","-222","-224","-75","-100","-92","-99","-33","-79","-44","-93","-75","-100","-92","-99","-44","-82","-50","-94","-100","-100","-79","-100","-79","-99","371","-69","-100","-100","-79","-100","-81","-99","310","-72","-100","-87","-97","-69","-38","151","-82","343","-100","-87","-97","-69","-46","121","-84","291","-97","-100","-100","-99","-71","-97","-77","-91","-97","-100","-100","-99","-74","-97","-80","-92","-67","-87","-62","-96","-44","-82","-50","-94","-75","-100","-92","-99","-75","-100","-92","-99","-87","-100","187","-80","-81","-99","310","-72","-100","-100","-79","-100","-100","-100","-79","-100","-62","62","-88","188","-46","121","-84","291","-100","-87","-97","-69","-100","-87","-97","-69","-81","-98","-86","-94","-74","-97","-80","-92","-97","-100","-100","-99","-97","-100","-100","-99","-75","-100","-92","-99","-98","-95","-80","-98","36","-63","-8","-89","-75","-100","-92","-99","-100","-100","-79","-100","-95","-100","2","-92","-62","-99","740","-45","-100","-100","-79","-100","-100","-87","-97","-69","-85","-28","-93","34","8","329","-71","652","-100","-87","-97","-69","-97","-100","-100","-99","-90","-99","-94","-97","-52","-94","-60","-86","-97","-100","-100","-99","-75","-100","-92","-99","-75","-100","-92","-99","-75","-100","-92","-99","-75","-100","-92","-99","-100","-100","-79","-100","-100","-100","-79","-100","-100","-100","-79","-100","-100","-100","-79","-100","-100","-87","-97","-69","-100","-87","-97","-69","-100","-87","-97","-69","-100","-87","-97","-69","-97","-100","-100","-99","-97","-100","-100","-99","-97","-100","-100","-99","-97","-100","-100","-99","-63","-58","-59","-50","-55","282","157","120","-63","-58","-59","-50","-56","240","130","96","-53","-62","-41","-60","-15","-16","247","36","-53","-62","-41","-60","-20","-22","206","24","-56","-63","-63","-63","37","-39","-47","-56","-56","-63","-63","-63","24","-42","-49","-56","-62","-60","-63","-62","-60","-8","-61","140","-62","-60","-63","-62","-61","-15","-61","114","-58","155","76","47","-56","240","130","96","-63","-58","-59","-50","-63","-58","-59","-50","-29","-33","123","-2","-20","-22","206","24","-53","-62","-41","-60","-53","-62","-41","-60","-3","-48","-53","-58","24","-42","-49","-56","-56","-63","-63","-63","-56","-63","-63","-63","-62","-28","-61","63","-61","-15","-61","114","-62","-60","-63","-62","-62","-60","-63","-62","-63","-58","-59","-50","-61","27","-5","-27","-49","537","319","267","-63","-58","-59","-50","-53","-62","-41","-60","-43","-50","-2","-40","14","18","496","113","-53","-62","-41","-60","-56","-63","-63","-63","-43","-57","-59","-61","117","-21","-35","-50","-56","-63","-63","-63","-62","-60","-63","-62","-63","-47","-62","-13","-57","31","-59","293","-62","-60","-63","-62","-63","-58","-59","-50","-63","-58","-59","-50","-63","-58","-59","-50","-63","-58","-59","-50","-53","-62","-41","-60","-53","-62","-41","-60","-53","-62","-41","-60","-53","-62","-41","-60","-56","-63","-63","-63","-56","-63","-63","-63","-56","-63","-63","-63","-56","-63","-63","-63","-62","-60","-63","-62","-62","-60","-63","-62","-62","-60","-63","-62","-62","-60","-63","-62","-237","-236","-237","-237","-234","-212","-218","-230","-237","-236","-237","-237","-234","-215","-221","-231","-236","-237","-227","-237","-229","-229","113","-111","-236","-237","-227","-237","-230","-230","71","-127","-234","-237","-237","-237","-185","-234","-224","-234","-234","-237","-237","-237","-192","-234","-226","-234","-234","-207","-237","-226","-222","-151","-230","282","-234","-207","-237","-226","-224","-165","-231","219","-235","-222","-225","-233","-234","-215","-221","-231","-237","-236","-237","-237","-237","-236","-237","-237","-232","-232","-14","-158","-230","-230","71","-127","-236","-237","-227","-237","-236","-237","-227","-237","-206","-235","-229","-235","-192","-234","-226","-234","-234","-237","-237","-237","-234","-237","-237","-237","-229","-194","-233","92","-224","-165","-231","219","-234","-207","-237","-226","-234","-207","-237","-226","-237","-236","-237","-237","-236","-231","-232","-236","-231","-193","-205","-225","-237","-236","-237","-237","-236","-237","-227","-237","-234","-235","-142","-206","-224","-224","368","-17","-236","-237","-227","-237","-234","-237","-237","-237","-226","-236","-234","-236","-144","-232","-214","-231","-234","-237","-237","-237","-234","-207","-237","-226","-236","-236","-235","-99","-208","-64","-225","663","-234","-207","-237","-226","-237","-236","-237","-237","-237","-236","-237","-237","-237","-236","-237","-237","-237","-236","-237","-237","-236","-237","-227","-237","-236","-237","-227","-237","-236","-237","-227","-237","-236","-237","-227","-237","-234","-237","-237","-237","-234","-237","-237","-237","-234","-237","-237","-237","-234","-237","-237","-237","-234","-207","-237","-226","-234","-207","-237","-226","-234","-207","-237","-226","-234","-207","-237","-226","-360","-363","-360","-363","-262","-355","-336","-351","-360","-363","-360","-363","-274","-356","-339","-353","-356","-331","-363","-363","-353","117","-359","-358","-356","-331","-363","-363","-354","61","-359","-358","-363","-360","-362","-362","-358","-312","-348","-349","-363","-360","-362","-362","-358","-319","-350","-351","-363","-362","-362","-348","-352","-345","-344","-174","-363","-362","-362","-348","-354","-348","-346","-195","-299","-358","-345","-356","-274","-356","-339","-353","-360","-363","-360","-363","-360","-363","-360","-363","-355","-51","-360","-360","-354","61","-359","-358","-356","-331","-363","-363","-356","-331","-363","-363","-360","-333","-354","-354","-358","-319","-350","-351","-363","-360","-362","-362","-363","-360","-362","-362","-356","-352","-351","-239","-354","-348","-346","-195","-363","-362","-362","-348","-363","-362","-362","-348","-360","-363","-360","-363","-335","-361","-354","-360","-188","-350","-318","-342","-360","-363","-360","-363","-356","-331","-363","-363","-356","-219","-362","-362","-351","453","-355","-354","-356","-331","-363","-363","-363","-360","-362","-362","-362","-353","-360","-360","-353","-272","-337","-337","-363","-360","-362","-362","-363","-362","-362","-348","-360","-359","-357","-304","-344","-332","-330","-43","-363","-362","-362","-348","-360","-363","-360","-363","-360","-363","-360","-363","-360","-363","-360","-363","-360","-363","-360","-363","-356","-331","-363","-363","-356","-331","-363","-363","-356","-331","-363","-363","-356","-331","-363","-363","-363","-360","-362","-362","-363","-360","-362","-362","-363","-360","-362","-362","-363","-360","-362","-362","-363","-362","-362","-348","-363","-362","-362","-348","-363","-362","-362","-348","-363","-362","-362","-348","-130","-130","-130","-125","-125","-128","-123","-85","-130","-130","-130","-125","-126","-128","-124","-90","-130","-129","-130","-130","-122","-79","-128","-116","-130","-129","-130","-130","-123","-85","-128","-118","-130","-111","-129","-129","-100","381","-117","-100","-130","-111","-129","-129","-104","320","-119","-104","-130","-116","-130","-130","-130","-48","-129","-46","-130","-116","-130","-130","-130","-60","-129","-56","-127","-129","-126","-100","-126","-128","-124","-90","-130","-130","-130","-125","-130","-130","-130","-125","-125","-97","-129","-121","-123","-85","-128","-118","-130","-129","-130","-130","-130","-129","-130","-130","-111","197","-122","-112","-104","320","-119","-104","-130","-111","-129","-129","-130","-111","-129","-129","-130","-84","-129","-77","-130","-60","-129","-56","-130","-116","-130","-130","-130","-116","-130","-130","-130","-130","-130","-125","-129","-130","-128","-115","-121","-126","-117","-55","-130","-130","-130","-125","-130","-129","-130","-130","-128","-116","-130","-127","-117","-41","-126","-106","-130","-129","-130","-130","-130","-111","-129","-129","-122","12","-128","-123","-78","750","-106","-77","-130","-111","-129","-129","-130","-116","-130","-130","-130","-120","-130","-109","-129","24","-129","17","-130","-116","-130","-130","-130","-130","-130","-125","-130","-130","-130","-125","-130","-130","-130","-125","-130","-130","-130","-125","-130","-129","-130","-130","-130","-129","-130","-130","-130","-129","-130","-130","-130","-129","-130","-130","-130","-111","-129","-129","-130","-111","-129","-129","-130","-111","-129","-129","-130","-111","-129","-129","-130","-116","-130","-130","-130","-116","-130","-130","-130","-116","-130","-130","-130","-116","-130","-130","-434","-461","-465","-463","-104","-237","-388","-378","-434","-461","-465","-463","-153","-266","-398","-389","-456","-465","-465","-465","-346","-464","-458","-456","-456","-465","-465","-465","-362","-464","-459","-458","-465","-442","-459","-465","-453","-22","-392","-460","-465","-442","-459","-465","-455","-75","-400","-461","-460","-465","-463","-463","-335","-457","-424","-449","-460","-465","-463","-463","-351","-458","-430","-451","-251","-324","-417","-411","-153","-266","-398","-389","-434","-461","-465","-463","-434","-461","-465","-463","-394","-464","-461","-460","-362","-464","-459","-458","-456","-465","-465","-465","-456","-465","-465","-465","-458","-180","-417","-462","-455","-75","-400","-461","-465","-442","-459","-465","-465","-442","-459","-465","-382","-460","-440","-456","-351","-458","-430","-451","-460","-465","-463","-463","-460","-465","-463","-463","-434","-461","-465","-463","-398","-411","-446","-444","190","-63","-330","-311","-434","-461","-465","-463","-456","-465","-465","-465","-442","-465","-463","-463","-250","-463","-453","-450","-456","-465","-465","-465","-465","-442","-459","-465","-462","-337","-442","-464","-445","293","-342","-456","-465","-442","-459","-465","-460","-465","-463","-463","-429","-463","-456","-463","-241","-451","-392","-436","-460","-465","-463","-463","-434","-461","-465","-463","-434","-461","-465","-463","-434","-461","-465","-463","-434","-461","-465","-463","-456","-465","-465","-465","-456","-465","-465","-465","-456","-465","-465","-465","-456","-465","-465","-465","-465","-442","-459","-465","-465","-442","-459","-465","-465","-442","-459","-465","-465","-442","-459","-465","-460","-465","-463","-463","-460","-465","-463","-463","-460","-465","-463","-463","-460","-465","-463","-463","-280","-285","-257","-285","-191","-236","-233","-263","-280","-285","-257","-285","-204","-242","-236","-266","-281","-279","-286","-281","-267","-241","-272","-131","-281","-279","-286","-281","-270","-246","-273","-151","-283","-286","-285","-285","-262","-277","-264","-266","-283","-286","-285","-285","-265","-278","-267","-269","-284","-282","-286","-286","-225","-228","-163","-279","-284","-282","-286","-286","-233","-235","-178","-280","-229","-254","-242","-272","-204","-242","-236","-266","-280","-285","-257","-285","-280","-285","-257","-285","-276","-256","-277","-191","-270","-246","-273","-151","-281","-279","-286","-281","-281","-279","-286","-281","-270","-281","-272","-274","-265","-278","-267","-269","-283","-286","-285","-285","-283","-286","-285","-285","-249","-251","-209","-282","-233","-235","-178","-280","-284","-282","-286","-286","-284","-282","-286","-286","-280","-285","-257","-285","-267","-272","-251","-281","-115","-199","-215","-245","-280","-285","-257","-285","-281","-279","-286","-281","-285","-270","-282","-251","-249","-213","-261","-11","-281","-279","-286","-281","-283","-286","-285","-285","-278","-284","-280","-282","-246","-271","-248","-250","-283","-286","-285","-285","-284","-282","-286","-286","-272","-274","-255","-284","-179","-181","-71","-273","-284","-282","-286","-286","-280","-285","-257","-285","-280","-285","-257","-285","-280","-285","-257","-285","-280","-285","-257","-285","-281","-279","-286","-281","-281","-279","-286","-281","-281","-279","-286","-281","-281","-279","-286","-281","-283","-286","-285","-285","-283","-286","-285","-285","-283","-286","-285","-285","-283","-286","-285","-285","-284","-282","-286","-286","-284","-282","-286","-286","-284","-282","-286","-286","-284","-282","-286","-286","-129","-140","-140","-133","-63","-125","-137","-38","-129","-140","-140","-133","-74","-127","-137","-52","-137","-140","-140","-131","-79","-137","-137","91","-137","-140","-140","-131","-86","-137","-137","61","-133","-138","-140","-139","-127","-59","356","-102","-133","-138","-140","-139","-130","-70","294","-107","-140","-130","-137","-140","-125","-4","-132","-139","-140","-130","-137","-140","-127","-22","-133","-139","-96","-131","-138","-79","-74","-127","-137","-52","-129","-140","-140","-133","-129","-140","-140","-133","-101","-138","-138","1","-86","-137","-137","61","-137","-140","-140","-131","-137","-140","-140","-131","-135","-90","170","-116","-130","-70","294","-107","-133","-138","-140","-139","-133","-138","-140","-139","-131","-59","-136","-139","-127","-22","-133","-139","-140","-130","-137","-140","-140","-130","-137","-140","-129","-140","-140","-133","-129","-136","-139","-120","3","-115","-135","44","-129","-140","-140","-133","-137","-140","-140","-131","-122","-139","-139","-89","-36","-134","-134","271","-137","-140","-140","-131","-133","-138","-140","-139","-138","-122","-16","-130","-112","3","728","-74","-133","-138","-140","-139","-140","-130","-137","-140","-136","-113","-140","-140","-113","106","-124","-139","-140","-130","-137","-140","-129","-140","-140","-133","-129","-140","-140","-133","-129","-140","-140","-133","-129","-140","-140","-133","-137","-140","-140","-131","-137","-140","-140","-131","-137","-140","-140","-131","-137","-140","-140","-131","-133","-138","-140","-139","-133","-138","-140","-139","-133","-138","-140","-139","-133","-138","-140","-139","-140","-130","-137","-140","-140","-130","-137","-140","-140","-130","-137","-140","-140","-130","-137","-140","-452","-475","-473","-476","-448","-468","-474","-464","-452","-475","-473","-476","-454","-469","-474","-466","-476","-472","-476","-475","-460","-458","-468","-473","-476","-472","-476","-475","-462","-460","-469","-473","-467","-476","-462","-476","7","-471","-426","-472","-467","-476","-462","-476","-55","-472","-434","-472","-464","-449","-476","-476","-260","-385","-454","-468","-464","-449","-476","-476","-288","-393","-457","-469","-467","-471","-474","-469","-454","-469","-474","-466","-452","-475","-473","-476","-452","-475","-473","-476","-466","-464","-471","-474","-462","-460","-469","-473","-476","-472","-476","-475","-476","-472","-476","-475","-178","-473","-450","-473","-55","-472","-434","-472","-467","-476","-462","-476","-467","-476","-462","-476","-345","-409","-462","-471","-288","-393","-457","-469","-464","-449","-476","-476","-464","-449","-476","-476","-452","-475","-473","-476","-465","-473","-473","-473","-409","-463","-475","-455","-452","-475","-473","-476","-476","-472","-476","-475","-472","-469","-474","-476","-448","-448","-462","-469","-476","-472","-476","-475","-467","-476","-462","-476","-362","-475","-474","-475","376","-468","-378","-468","-467","-476","-462","-476","-464","-449","-476","-476","-431","-433","-470","-474","-89","-337","-437","-462","-464","-449","-476","-476","-452","-475","-473","-476","-452","-475","-473","-476","-452","-475","-473","-476","-452","-475","-473","-476","-476","-472","-476","-475","-476","-472","-476","-475","-476","-472","-476","-475","-476","-472","-476","-475","-467","-476","-462","-476","-467","-476","-462","-476","-467","-476","-462","-476","-467","-476","-462","-476","-464","-449","-476","-476","-464","-449","-476","-476","-464","-449","-476","-476","-464","-449","-476","-476","-525","-532","-501","-531","-115","-530","-411","-27","-525","-532","-501","-531","-168","-530","-430","-90","-529","-529","-532","-530","-511","-487","-370","-412","-529","-529","-532","-530","-514","-492","-390","-427","-532","-529","-532","-520","-527","-491","-525","-494","-532","-529","-532","-520","-527","-496","-526","-500","-532","-532","-515","-529","-529","-529","-115","-531","-532","-532","-515","-529","-529","-530","-165","-531","-274","-531","-468","-216","-168","-530","-430","-90","-525","-532","-501","-531","-525","-532","-501","-531","-520","-503","-431","-457","-514","-492","-390","-427","-529","-529","-532","-530","-529","-529","-532","-530","-529","-507","-528","-513","-527","-496","-526","-500","-532","-529","-532","-520","-532","-529","-532","-520","-530","-530","-265","-532","-529","-530","-165","-531","-532","-532","-515","-529","-532","-532","-515","-529","-525","-532","-501","-531","-433","-532","-525","-405","203","-528","-297","351","-525","-532","-501","-531","-529","-529","-532","-530","-529","-519","-492","-501","-493","-456","-249","-324","-529","-529","-532","-530","-532","-529","-532","-520","-531","-524","-530","-531","-522","-458","-519","-456","-532","-529","-532","-520","-532","-532","-515","-529","-531","-531","-415","-530","-527","-528","185","-528","-532","-532","-515","-529","-525","-532","-501","-531","-525","-532","-501","-531","-525","-532","-501","-531","-525","-532","-501","-531","-529","-529","-532","-530","-529","-529","-532","-530","-529","-529","-532","-530","-529","-529","-532","-530","-532","-529","-532","-520","-532","-529","-532","-520","-532","-529","-532","-520","-532","-529","-532","-520","-532","-532","-515","-529","-532","-532","-515","-529","-532","-532","-515","-529","-532","-532","-515","-529","-576","-568","-573","-576","-420","-582","-481","-482","-576","-568","-573","-576","-441","-582","-493","-496","-575","-583","-583","-578","-159","-578","-580","-500","-575","-583","-583","-578","-211","-579","-581","-511","-583","-583","-582","-582","-559","-579","-554","-524","-583","-583","-582","-582","-562","-580","-558","-532","-578","-578","-566","-579","-78","-506","-154","-407","-578","-578","-566","-579","-141","-516","-206","-429","-483","-578","-516","-523","-441","-582","-493","-496","-576","-568","-573","-576","-576","-568","-573","-576","-315","-580","-581","-533","-211","-579","-581","-511","-575","-583","-583","-578","-575","-583","-583","-578","-568","-581","-565","-546","-562","-580","-558","-532","-583","-583","-582","-582","-583","-583","-582","-582","-266","-537","-309","-472","-141","-516","-206","-429","-578","-578","-566","-579","-578","-578","-566","-579","-576","-568","-573","-576","-547","-572","-550","-563","-292","-570","-412","-401","-576","-568","-573","-576","-575","-583","-583","-578","-471","-582","-583","-566","153","-574","-578","-434","-575","-583","-583","-578","-583","-583","-582","-582","-577","-582","-577","-568","-541","-577","-532","-481","-583","-583","-582","-582","-578","-578","-566","-579","-453","-568","-463","-536","297","-445","155","-278","-578","-578","-566","-579","-576","-568","-573","-576","-576","-568","-573","-576","-576","-568","-573","-576","-576","-568","-573","-576","-575","-583","-583","-578","-575","-583","-583","-578","-575","-583","-583","-578","-575","-583","-583","-578","-583","-583","-582","-582","-583","-583","-582","-582","-583","-583","-582","-582","-583","-583","-582","-582","-578","-578","-566","-579","-578","-578","-566","-579","-578","-578","-566","-579","-578","-578","-566","-579","-513","-513","-513","-511","-512","-511","-512","-127","-513","-513","-513","-511","-512","-512","-512","-175","-513","-503","-507","-513","-509","-505","-484","-512","-513","-503","-507","-513","-510","-505","-487","-512","-513","-513","-485","-513","-508","-498","-377","-501","-513","-513","-485","-513","-509","-500","-397","-502","-499","-511","-513","-492","-429","-183","-501","-240","-499","-511","-513","-492","-442","-224","-502","-271","-512","-512","-512","-272","-512","-512","-512","-175","-513","-513","-513","-511","-513","-513","-513","-511","-511","-504","-492","-513","-510","-505","-487","-512","-513","-503","-507","-513","-513","-503","-507","-513","-510","-504","-438","-505","-509","-500","-397","-502","-513","-513","-485","-513","-513","-513","-485","-513","-466","-307","-505","-334","-442","-224","-502","-271","-499","-511","-513","-492","-499","-511","-513","-492","-513","-513","-513","-511","-513","-513","-513","-418","-512","-510","-510","164","-513","-513","-513","-511","-513","-503","-507","-513","-512","-503","-501","-513","-506","-506","-467","-511","-513","-503","-507","-513","-513","-513","-485","-513","-512","-509","-500","-510","-504","-487","-254","-491","-513","-513","-485","-513","-499","-511","-513","-492","-503","-432","-510","-429","-356","66","-491","-51","-499","-511","-513","-492","-513","-513","-513","-511","-513","-513","-513","-511","-513","-513","-513","-511","-513","-513","-513","-511","-513","-503","-507","-513","-513","-503","-507","-513","-513","-503","-507","-513","-513","-503","-507","-513","-513","-513","-485","-513","-513","-513","-485","-513","-513","-513","-485","-513","-513","-513","-485","-513","-499","-511","-513","-492","-499","-511","-513","-492","-499","-511","-513","-492","-499","-511","-513","-492","-220","-223","-223","-221","-192","-217","-210","-128","-220","-223","-223","-221","-196","-218","-211","-140","-223","-222","-217","-217","-201","-217","33","-201","-223","-222","-217","-217","-204","-218","2","-204","-216","-223","-223","-221","-126","-7","-170","-187","-216","-223","-223","-221","-137","-34","-176","-191","-223","-221","-223","-216","-221","-208","-220","-189","-223","-221","-223","-216","-221","-210","-220","-194","-203","-219","-215","-164","-196","-218","-211","-140","-220","-223","-223","-221","-220","-223","-223","-221","-210","-219","-61","-211","-204","-218","2","-204","-223","-222","-217","-217","-223","-222","-217","-217","-160","-88","-189","-201","-137","-34","-176","-191","-216","-223","-223","-221","-216","-223","-223","-221","-222","-213","-221","-204","-221","-210","-220","-194","-223","-221","-223","-216","-223","-221","-223","-216","-220","-223","-223","-221","-213","-222","-220","-201","-171","-212","-199","-55","-220","-223","-223","-221","-223","-222","-217","-217","-218","-222","-154","-222","-185","-212","221","-180","-223","-222","-217","-217","-216","-223","-223","-221","-193","-169","-209","-215","-58","155","-130","-158","-216","-223","-223","-221","-223","-221","-223","-216","-222","-218","-222","-220","-219","-199","-217","-158","-223","-221","-223","-216","-220","-223","-223","-221","-220","-223","-223","-221","-220","-223","-223","-221","-220","-223","-223","-221","-223","-222","-217","-217","-223","-222","-217","-217","-223","-222","-217","-217","-223","-222","-217","-217","-216","-223","-223","-221","-216","-223","-223","-221","-216","-223","-223","-221","-216","-223","-223","-221","-223","-221","-223","-216","-223","-221","-223","-216","-223","-221","-223","-216","-223","-221","-223","-216","-650","-641","-643","-650","-635","-525","-627","-640","-650","-641","-643","-650","-637","-540","-631","-641","-647","-650","-650","-620","-647","-641","-622","-488","-647","-650","-650","-620","-648","-642","-625","-505","-650","-619","-643","-650","-637","-251","-594","-639","-650","-619","-643","-650","-639","-297","-600","-641","-622","-643","-650","-647","-342","-591","-636","-549","-622","-643","-650","-647","-377","-599","-638","-562","-640","-569","-638","-644","-637","-540","-631","-641","-650","-641","-643","-650","-650","-641","-643","-650","-649","-645","-632","-538","-648","-642","-625","-505","-647","-650","-650","-620","-647","-650","-650","-620","-642","-389","-613","-644","-639","-297","-600","-641","-650","-619","-643","-650","-650","-619","-643","-650","-447","-616","-641","-588","-377","-599","-638","-562","-622","-643","-650","-647","-622","-643","-650","-647","-650","-641","-643","-650","-646","-612","-649","-647","-623","-438","-604","-632","-650","-641","-643","-650","-647","-650","-650","-620","-648","-648","-643","-587","-643","-635","-601","-389","-647","-650","-650","-620","-650","-619","-643","-650","-647","-527","-631","-648","-627","25","-558","-631","-650","-619","-643","-650","-622","-643","-650","-647","-552","-641","-647","-627","-132","-542","-625","-471","-622","-643","-650","-647","-650","-641","-643","-650","-650","-641","-643","-650","-650","-641","-643","-650","-650","-641","-643","-650","-647","-650","-650","-620","-647","-650","-650","-620","-647","-650","-650","-620","-647","-650","-650","-620","-650","-619","-643","-650","-650","-619","-643","-650","-650","-619","-643","-650","-650","-619","-643","-650","-622","-643","-650","-647","-622","-643","-650","-647","-622","-643","-650","-647","-622","-643","-650","-647","-123","-123","-123","-120","-119","-121","-119","-89","-123","-123","-123","-120","-120","-121","-120","-93","-123","-123","-123","-123","-120","-119","-107","-118","-123","-123","-123","-123","-121","-119","-109","-118","-123","-122","-122","-109","-109","-104","-101","-107","-123","-122","-122","-109","-111","-107","-103","-107","-116","-123","-123","-122","60","-114","-120","-94","-116","-123","-123","-122","38","-115","-120","-97","-121","-122","-120","-100","-120","-121","-120","-93","-123","-123","-123","-120","-123","-123","-123","-120","-121","-120","-113","-120","-121","-119","-109","-118","-123","-123","-123","-123","-123","-123","-123","-123","-114","-112","-108","-107","-111","-107","-103","-107","-123","-122","-122","-109","-123","-122","-122","-109","-6","-117","-121","-105","38","-115","-120","-97","-116","-123","-123","-122","-116","-123","-123","-122","-123","-123","-123","-120","-122","-123","-122","-112","-116","-119","-117","-65","-123","-123","-123","-120","-123","-123","-123","-123","-122","-122","-119","-122","-119","-115","-95","-114","-123","-123","-123","-123","-123","-122","-122","-109","-119","-119","-116","-108","-98","-89","-85","-105","-123","-122","-122","-109","-116","-123","-123","-122","-72","-121","-122","-116","192","-107","-118","-71","-116","-123","-123","-122","-123","-123","-123","-120","-123","-123","-123","-120","-123","-123","-123","-120","-123","-123","-123","-120","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-123","-122","-122","-109","-123","-122","-122","-109","-123","-122","-122","-109","-123","-122","-122","-109","-116","-123","-123","-122","-116","-123","-123","-122","-116","-123","-123","-122","-116","-123","-123","-122","-503","-503","-499","-502","-491","-498","-462","-471","-503","-503","-499","-502","-492","-499","-468","-475","-503","-503","-503","-501","-490","-491","-497","-455","-503","-503","-503","-501","-491","-493","-498","-461","-477","-503","-503","-503","-77","-448","-499","-490","-477","-503","-503","-503","-127","-454","-499","-492","-503","-502","-503","-499","-501","-479","-495","-425","-503","-502","-503","-499","-502","-482","-496","-434","-495","-500","-479","-482","-492","-499","-468","-475","-503","-503","-499","-502","-503","-503","-499","-502","-495","-496","-499","-472","-491","-493","-498","-461","-503","-503","-503","-501","-503","-503","-503","-501","-227","-468","-501","-495","-127","-454","-499","-492","-477","-503","-503","-503","-477","-503","-503","-503","-502","-488","-498","-452","-502","-482","-496","-434","-503","-502","-503","-499","-503","-502","-503","-499","-503","-503","-499","-502","-500","-502","-495","-494","-481","-494","-429","-447","-503","-503","-499","-502","-503","-503","-503","-501","-500","-500","-502","-490","-480","-482","-492","-420","-503","-503","-503","-501","-477","-503","-503","-503","-377","-489","-502","-499","223","-406","-496","-480","-477","-503","-503","-503","-503","-502","-503","-499","-503","-498","-501","-480","-500","-460","-489","-369","-503","-502","-503","-499","-503","-503","-499","-502","-503","-503","-499","-502","-503","-503","-499","-502","-503","-503","-499","-502","-503","-503","-503","-501","-503","-503","-503","-501","-503","-503","-503","-501","-503","-503","-503","-501","-477","-503","-503","-503","-477","-503","-503","-503","-477","-503","-503","-503","-477","-503","-503","-503","-503","-502","-503","-499","-503","-502","-503","-499","-503","-502","-503","-499","-503","-502","-503","-499","-321","-321","-323","-324","-296","-299","-314","-324","-321","-321","-323","-324","-300","-303","-315","-324","-324","-324","-318","-317","-314","-321","-272","-220","-324","-324","-318","-317","-316","-321","-279","-232","-324","-324","-313","-324","-316","-317","-215","-320","-324","-324","-313","-324","-317","-318","-227","-321","-324","-322","-324","-324","-315","-303","-320","-320","-324","-322","-324","-324","-316","-306","-321","-321","-308","-310","-318","-324","-300","-303","-315","-324","-321","-321","-323","-324","-321","-321","-323","-324","-318","-322","-294","-256","-316","-321","-279","-232","-324","-324","-318","-317","-324","-324","-318","-317","-319","-320","-251","-322","-317","-318","-227","-321","-324","-324","-313","-324","-324","-324","-313","-324","-319","-312","-322","-322","-316","-306","-321","-321","-324","-322","-324","-324","-324","-322","-324","-324","-321","-321","-323","-324","-319","-320","-321","-324","-273","-279","-307","-323","-321","-321","-323","-324","-324","-324","-318","-317","-322","-323","-316","-292","-307","-319","-229","-147","-324","-324","-318","-317","-324","-324","-313","-324","-322","-323","-288","-323","-310","-312","-141","-317","-324","-324","-313","-324","-324","-322","-324","-324","-322","-320","-323","-323","-308","-286","-317","-318","-324","-322","-324","-324","-321","-321","-323","-324","-321","-321","-323","-324","-321","-321","-323","-324","-321","-321","-323","-324","-324","-324","-318","-317","-324","-324","-318","-317","-324","-324","-318","-317","-324","-324","-318","-317","-324","-324","-313","-324","-324","-324","-313","-324","-324","-324","-313","-324","-324","-324","-313","-324","-324","-322","-324","-324","-324","-322","-324","-324","-324","-322","-324","-324","-324","-322","-324","-324","-231","-202","-229","-229","-229","-76","-208","-201","-231","-202","-229","-229","-229","-99","-211","-205","-229","-231","-231","-231","-188","-227","-223","-227","-229","-231","-231","-231","-193","-228","-224","-228","-231","-230","-231","-231","-225","-208","-227","-207","-231","-230","-231","-231","-226","-211","-227","-210","-228","-231","-231","-224","-196","-219","-227","-129","-228","-231","-231","-224","-201","-221","-228","-142","-230","-145","-217","-213","-229","-99","-211","-205","-231","-202","-229","-229","-231","-202","-229","-229","-203","-229","-226","-229","-193","-228","-224","-228","-229","-231","-231","-231","-229","-231","-231","-231","-227","-216","-229","-216","-226","-211","-227","-210","-231","-230","-231","-231","-231","-230","-231","-231","-210","-224","-229","-170","-201","-221","-228","-142","-228","-231","-231","-224","-228","-231","-231","-224","-231","-202","-229","-229","-230","-214","-226","-225","-228","62","-189","-177","-231","-202","-229","-229","-229","-231","-231","-231","-218","-230","-229","-230","-158","-224","-217","-225","-229","-231","-231","-231","-231","-230","-231","-231","-229","-224","-230","-225","-221","-192","-223","-189","-231","-230","-231","-231","-228","-231","-231","-224","-225","-228","-230","-211","-168","-210","-224","-47","-228","-231","-231","-224","-231","-202","-229","-229","-231","-202","-229","-229","-231","-202","-229","-229","-231","-202","-229","-229","-229","-231","-231","-231","-229","-231","-231","-231","-229","-231","-231","-231","-229","-231","-231","-231","-231","-230","-231","-231","-231","-230","-231","-231","-231","-230","-231","-231","-231","-230","-231","-231","-228","-231","-231","-224","-228","-231","-231","-224","-228","-231","-231","-224","-228","-231","-231","-224","-609","-609","-609","-604","-602","-602","-580","-536","-609","-609","-609","-604","-603","-603","-584","-545","-587","-609","-609","-609","-543","-604","-598","-605","-587","-609","-609","-609","-548","-605","-599","-605","-608","-599","-607","-609","-538","-577","-558","-604","-608","-599","-607","-609","-547","-580","-565","-605","-605","-609","-608","-600","-515","-568","-582","-408","-605","-609","-608","-600","-526","-573","-585","-434","-605","-605","-591","-565","-603","-603","-584","-545","-609","-609","-609","-604","-609","-609","-609","-604","-559","-606","-602","-606","-548","-605","-599","-605","-587","-609","-609","-609","-587","-609","-609","-609","-564","-586","-578","-606","-547","-580","-565","-605","-608","-599","-607","-609","-608","-599","-607","-609","-549","-583","-591","-487","-526","-573","-585","-434","-605","-609","-608","-600","-605","-609","-608","-600","-609","-609","-609","-604","-607","-608","-602","-594","-597","-597","-559","-477","-609","-609","-609","-604","-587","-609","-609","-609","-576","-607","-606","-608","-510","-600","-589","-602","-587","-609","-609","-609","-608","-599","-607","-609","-590","-594","-597","-608","-485","-561","-519","-600","-608","-599","-607","-609","-605","-609","-608","-600","-582","-599","-601","-565","-447","-538","-562","-250","-605","-609","-608","-600","-609","-609","-609","-604","-609","-609","-609","-604","-609","-609","-609","-604","-609","-609","-609","-604","-587","-609","-609","-609","-587","-609","-609","-609","-587","-609","-609","-609","-587","-609","-609","-609","-608","-599","-607","-609","-608","-599","-607","-609","-608","-599","-607","-609","-608","-599","-607","-609","-605","-609","-608","-600","-605","-609","-608","-600","-605","-609","-608","-600","-605","-609","-608","-600","-219","-221","-215","-219","-206","-195","-15","27","-219","-221","-215","-219","-207","-198","-41","-4","-221","-219","-221","-214","-217","-186","-200","-132","-221","-219","-221","-214","-217","-190","-203","-144","-221","-220","-220","-213","-214","-220","-168","-179","-221","-220","-220","-213","-215","-220","-174","-183","-221","-215","-221","-221","-194","273","-213","-218","-221","-215","-221","-221","-197","212","-214","-218","-211","-205","-94","-65","-207","-198","-41","-4","-219","-221","-215","-219","-219","-221","-215","-219","-218","-200","-208","-168","-217","-190","-203","-144","-221","-219","-221","-214","-221","-219","-221","-214","-217","-221","-187","-191","-215","-220","-174","-183","-221","-220","-220","-213","-221","-220","-220","-213","-204","90","-216","-219","-197","212","-214","-218","-221","-215","-221","-221","-221","-215","-221","-221","-219","-221","-215","-219","-216","-215","-174","-157","-196","-175","144","212","-219","-221","-215","-219","-221","-219","-221","-214","-220","-214","-216","-204","-214","-158","-184","-60","-221","-219","-221","-214","-221","-220","-220","-213","-219","-221","-207","-204","-209","-219","-129","-153","-221","-220","-220","-213","-221","-215","-221","-221","-214","-93","-219","-220","-174","639","-207","-215","-221","-215","-221","-221","-219","-221","-215","-219","-219","-221","-215","-219","-219","-221","-215","-219","-219","-221","-215","-219","-221","-219","-221","-214","-221","-219","-221","-214","-221","-219","-221","-214","-221","-219","-221","-214","-221","-220","-220","-213","-221","-220","-220","-213","-221","-220","-220","-213","-221","-220","-220","-213","-221","-215","-221","-221","-221","-215","-221","-221","-221","-215","-221","-221","-221","-215","-221","-221","-672","-677","-684","-683","-624","-668","-216","-664","-672","-677","-684","-683","-630","-669","-274","-666","-684","-684","-662","-664","-684","-684","-614","-392","-684","-684","-662","-664","-684","-684","-620","-431","-683","-661","-681","-671","-664","-529","-575","-641","-683","-661","-681","-671","-667","-546","-589","-648","-684","-684","-668","-684","-660","-582","-300","-668","-684","-684","-668","-684","-663","-595","-350","-670","-642","-671","-391","-672","-630","-669","-274","-666","-672","-677","-684","-683","-672","-677","-684","-683","-684","-684","-632","-509","-684","-684","-620","-431","-684","-684","-662","-664","-684","-684","-662","-664","-672","-579","-617","-662","-667","-546","-589","-648","-683","-661","-681","-671","-683","-661","-681","-671","-669","-620","-450","-674","-663","-595","-350","-670","-684","-684","-668","-684","-684","-684","-668","-684","-672","-677","-684","-683","-660","-674","-567","-680","-588","-661","135","-647","-672","-677","-684","-683","-684","-684","-662","-664","-684","-684","-650","-626","-684","-684","-578","-158","-684","-684","-662","-664","-683","-661","-681","-671","-680","-628","-659","-683","-649","-430","-491","-599","-683","-661","-681","-671","-684","-684","-668","-684","-678","-659","-600","-680","-641","-506","0","-656","-684","-684","-668","-684","-672","-677","-684","-683","-672","-677","-684","-683","-672","-677","-684","-683","-672","-677","-684","-683","-684","-684","-662","-664","-684","-684","-662","-664","-684","-684","-662","-664","-684","-684","-662","-664","-683","-661","-681","-671","-683","-661","-681","-671","-683","-661","-681","-671","-683","-661","-681","-671","-684","-684","-668","-684","-684","-684","-668","-684","-684","-684","-668","-684","-684","-684","-668","-684","-578","-606","-592","-591","-174","-593","-344","-355","-578","-606","-592","-591","-231","-595","-375","-384","-602","-605","-606","-604","-564","-592","-509","-578","-602","-605","-606","-604","-568","-593","-521","-582","-606","-605","-606","-603","-597","-588","-598","-576","-606","-605","-606","-603","-599","-590","-599","-580","-606","-581","-605","-593","-587","-321","-602","-545","-606","-581","-605","-593","-589","-353","-603","-551","-346","-598","-437","-443","-231","-595","-375","-384","-578","-606","-592","-591","-578","-606","-592","-591","-578","-597","-546","-588","-568","-593","-521","-582","-602","-605","-606","-604","-602","-605","-606","-604","-601","-595","-601","-588","-599","-590","-599","-580","-606","-605","-606","-603","-606","-605","-606","-603","-594","-418","-603","-563","-589","-353","-603","-551","-606","-581","-605","-593","-606","-581","-605","-593","-578","-606","-592","-591","-519","-603","-530","-532","171","-584","-158","-178","-578","-606","-592","-591","-602","-605","-606","-604","-592","-601","-582","-598","-535","-582","-437","-559","-602","-605","-606","-604","-606","-605","-606","-603","-604","-603","-604","-601","-591","-573","-592","-550","-606","-605","-606","-603","-606","-581","-605","-593","-601","-516","-605","-581","-572","-126","-600","-509","-606","-581","-605","-593","-578","-606","-592","-591","-578","-606","-592","-591","-578","-606","-592","-591","-578","-606","-592","-591","-602","-605","-606","-604","-602","-605","-606","-604","-602","-605","-606","-604","-602","-605","-606","-604","-606","-605","-606","-603","-606","-605","-606","-603","-606","-605","-606","-603","-606","-605","-606","-603","-606","-581","-605","-593","-606","-581","-605","-593","-606","-581","-605","-593","-606","-581","-605","-593","-102","-102","-102","-80","-97","-93","-100","136","-102","-102","-102","-80","-98","-94","-100","109","-96","-99","-99","-94","-56","-77","-42","-34","-96","-99","-99","-94","-62","-80","-49","-42","-99","-101","-102","-99","-71","-96","-95","-25","-99","-101","-102","-99","-74","-97","-96","-35","-102","-93","-92","-102","-99","161","140","-89","-102","-93","-92","-102","-100","129","109","-90","-99","-96","-100","55","-98","-94","-100","109","-102","-102","-102","-80","-102","-102","-102","-80","-75","-85","-63","-57","-62","-80","-49","-42","-96","-99","-99","-94","-96","-99","-99","-94","-81","-99","-98","-55","-74","-97","-96","-35","-99","-101","-102","-99","-99","-101","-102","-99","-100","65","46","-94","-100","129","109","-90","-102","-93","-92","-102","-102","-93","-92","-102","-102","-102","-102","-80","-101","-99","-101","-26","-94","-86","-98","298","-102","-102","-102","-80","-96","-99","-99","-94","-95","-93","-85","-79","-17","-61","1","11","-96","-99","-99","-94","-99","-101","-102","-99","-92","-101","-100","-85","-50","-91","-90","35","-99","-101","-102","-99","-102","-93","-92","-102","-101","-30","-49","-98","-97","351","329","-79","-102","-93","-92","-102","-102","-102","-102","-80","-102","-102","-102","-80","-102","-102","-102","-80","-102","-102","-102","-80","-96","-99","-99","-94","-96","-99","-99","-94","-96","-99","-99","-94","-96","-99","-99","-94","-99","-101","-102","-99","-99","-101","-102","-99","-99","-101","-102","-99","-99","-101","-102","-99","-102","-93","-92","-102","-102","-93","-92","-102","-102","-93","-92","-102","-102","-93","-92","-102","-104","-72","-104","-104","-87","-48","-99","-103","-104","-72","-104","-104","-89","-59","-99","-103","-79","-104","-104","-99","59","-92","-81","-50","-79","-104","-104","-99","35","-93","-84","-56","-103","-103","-98","-103","-76","-79","9","-78","-103","-103","-98","-103","-80","-82","-4","-81","-101","-103","-104","-104","-70","-103","-104","-82","-101","-103","-104","-104","-74","-103","-104","-85","-94","-81","-101","-103","-89","-59","-99","-103","-104","-72","-104","-104","-104","-72","-104","-104","-12","-96","-90","-69","35","-93","-84","-56","-79","-104","-104","-99","-79","-104","-104","-99","-87","-88","-31","-88","-80","-82","-4","-81","-103","-103","-98","-103","-103","-103","-98","-103","-84","-104","-104","-90","-74","-103","-104","-85","-101","-103","-104","-104","-101","-103","-104","-104","-104","-72","-104","-104","-100","-94","-103","-104","-74","18","-94","-102","-104","-72","-104","-104","-79","-104","-104","-99","-82","-101","-98","-87","200","-82","-64","-14","-79","-104","-104","-99","-103","-103","-98","-103","-98","-97","-71","-97","-55","-61","90","-60","-103","-103","-98","-103","-101","-103","-104","-104","-97","-103","-104","-98","-42","-102","-103","-66","-101","-103","-104","-104","-104","-72","-104","-104","-104","-72","-104","-104","-104","-72","-104","-104","-104","-72","-104","-104","-79","-104","-104","-99","-79","-104","-104","-99","-79","-104","-104","-99","-79","-104","-104","-99","-103","-103","-98","-103","-103","-103","-98","-103","-103","-103","-98","-103","-103","-103","-98","-103","-101","-103","-104","-104","-101","-103","-104","-104","-101","-103","-104","-104","-101","-103","-104","-104","-608","-607","-579","-587","-556","-555","-545","-467","-608","-607","-579","-587","-563","-561","-556","-482","-608","-607","-593","-593","-580","-545","-501","-385","-608","-607","-593","-593","-583","-553","-513","-415","-607","-592","-605","-608","-606","-344","-567","-603","-607","-592","-605","-608","-606","-379","-573","-604","-606","-596","-577","-607","-558","-456","-375","-600","-606","-596","-577","-607","-564","-474","-408","-601","-576","-574","-579","-512","-563","-561","-556","-482","-608","-607","-579","-587","-608","-607","-579","-587","-590","-568","-536","-474","-583","-553","-513","-415","-608","-607","-593","-593","-608","-607","-593","-593","-607","-449","-584","-605","-606","-379","-573","-604","-607","-592","-605","-608","-607","-592","-605","-608","-576","-509","-474","-602","-564","-474","-408","-601","-606","-596","-577","-607","-606","-596","-577","-607","-608","-607","-579","-587","-595","-594","-602","-557","-517","-516","-476","-377","-608","-607","-579","-587","-608","-607","-593","-593","-601","-591","-570","-563","-559","-499","-432","-206","-608","-607","-593","-593","-607","-592","-605","-608","-608","-554","-600","-607","-604","-134","-534","-600","-607","-592","-605","-608","-606","-596","-577","-607","-594","-561","-573","-605","-521","-351","-177","-594","-606","-596","-577","-607","-608","-607","-579","-587","-608","-607","-579","-587","-608","-607","-579","-587","-608","-607","-579","-587","-608","-607","-593","-593","-608","-607","-593","-593","-608","-607","-593","-593","-608","-607","-593","-593","-607","-592","-605","-608","-607","-592","-605","-608","-607","-592","-605","-608","-607","-592","-605","-608","-606","-596","-577","-607","-606","-596","-577","-607","-606","-596","-577","-607","-606","-596","-577","-607","-592","-593","-594","-590","-494","-561","-591","-556","-592","-593","-594","-590","-506","-565","-591","-560","-584","-593","-594","-593","-426","-233","-590","-591","-584","-593","-594","-593","-449","-278","-590","-591","-594","-593","-590","-594","-592","-439","-474","-468","-594","-593","-590","-594","-592","-458","-489","-483","-579","-593","-594","-587","-517","-572","-592","-355","-579","-593","-594","-587","-525","-574","-592","-386","-532","-574","-592","-569","-506","-565","-591","-560","-592","-593","-594","-590","-592","-593","-594","-590","-493","-368","-591","-592","-449","-278","-590","-591","-584","-593","-594","-593","-584","-593","-594","-593","-593","-497","-518","-515","-592","-458","-489","-483","-594","-593","-590","-594","-594","-593","-590","-594","-540","-580","-593","-447","-525","-574","-592","-386","-579","-593","-594","-587","-579","-593","-594","-587","-592","-593","-594","-590","-570","-587","-593","-581","-417","-535","-588","-530","-592","-593","-594","-590","-584","-593","-594","-593","-560","-503","-593","-593","-293","37","-587","-589","-584","-593","-594","-593","-594","-593","-590","-594","-593","-556","-561","-562","-591","-322","-387","-373","-594","-593","-590","-594","-579","-593","-594","-587","-563","-587","-593","-540","-470","-556","-591","-171","-579","-593","-594","-587","-592","-593","-594","-590","-592","-593","-594","-590","-592","-593","-594","-590","-592","-593","-594","-590","-584","-593","-594","-593","-584","-593","-594","-593","-584","-593","-594","-593","-584","-593","-594","-593","-594","-593","-590","-594","-594","-593","-590","-594","-594","-593","-590","-594","-594","-593","-590","-594","-579","-593","-594","-587","-579","-593","-594","-587","-579","-593","-594","-587","-579","-593","-594","-587","-376","-376","-374","-374","-369","-369","-329","-184","-376","-376","-374","-374","-370","-370","-335","-208","-376","-376","-376","-375","-367","-374","-358","-343","-376","-376","-376","-375","-368","-374","-360","-347","-375","-355","-370","-375","-353","-243","-311","-374","-375","-355","-370","-375","-356","-257","-319","-375","-376","-369","-374","-376","-372","-225","-368","-364","-376","-369","-374","-376","-372","-243","-369","-365","-372","-372","-348","-257","-370","-370","-335","-208","-376","-376","-374","-374","-376","-376","-374","-374","-371","-375","-365","-355","-368","-374","-360","-347","-376","-376","-376","-375","-376","-376","-376","-375","-361","-285","-337","-375","-356","-257","-319","-375","-375","-355","-370","-375","-375","-355","-370","-375","-373","-279","-372","-368","-372","-243","-369","-365","-376","-369","-374","-376","-376","-369","-374","-376","-376","-376","-374","-374","-375","-374","-366","-329","-364","-364","-293","-38","-376","-376","-374","-374","-376","-376","-376","-375","-374","-376","-372","-367","-360","-372","-344","-319","-376","-376","-376","-375","-375","-355","-370","-375","-370","-327","-364","-376","-337","-159","-257","-372","-375","-355","-370","-375","-376","-369","-374","-376","-375","-333","-375","-373","-368","-117","-360","-354","-376","-369","-374","-376","-376","-376","-374","-374","-376","-376","-374","-374","-376","-376","-374","-374","-376","-376","-374","-374","-376","-376","-376","-375","-376","-376","-376","-375","-376","-376","-376","-375","-376","-376","-376","-375","-375","-355","-370","-375","-375","-355","-370","-375","-375","-355","-370","-375","-375","-355","-370","-375","-376","-369","-374","-376","-376","-369","-374","-376","-376","-369","-374","-376","-376","-369","-374","-376","-558","-557","-561","-530","-524","-456","-561","-320","-558","-557","-561","-530","-529","-469","-561","-354","-561","-544","-560","-561","-533","-114","-533","-555","-561","-544","-560","-561","-536","-172","-537","-555","-561","-558","-560","-539","-553","-538","-543","-491","-561","-558","-560","-539","-554","-541","-545","-502","-552","-539","-559","-559","-432","-451","-341","-503","-552","-539","-559","-559","-447","-468","-369","-510","-537","-494","-561","-422","-529","-469","-561","-354","-558","-557","-561","-530","-558","-557","-561","-530","-543","-288","-544","-557","-536","-172","-537","-555","-561","-544","-560","-561","-561","-544","-560","-561","-556","-546","-549","-525","-554","-541","-545","-502","-561","-558","-560","-539","-561","-558","-560","-539","-477","-501","-423","-524","-447","-468","-369","-510","-552","-539","-559","-559","-552","-539","-559","-559","-558","-557","-561","-530","-550","-532","-561","-524","-499","-381","-560","-116","-558","-557","-561","-530","-561","-544","-560","-561","-554","-462","-555","-560","-511","234","-511","-550","-561","-544","-560","-561","-561","-558","-560","-539","-559","-553","-555","-560","-548","-524","-530","-422","-561","-558","-560","-539","-552","-539","-559","-559","-522","-550","-505","-545","-342","-352","-178","-462","-552","-539","-559","-559","-558","-557","-561","-530","-558","-557","-561","-530","-558","-557","-561","-530","-558","-557","-561","-530","-561","-544","-560","-561","-561","-544","-560","-561","-561","-544","-560","-561","-561","-544","-560","-561","-561","-558","-560","-539","-561","-558","-560","-539","-561","-558","-560","-539","-561","-558","-560","-539","-552","-539","-559","-559","-552","-539","-559","-559","-552","-539","-559","-559","-552","-539","-559","-559","-677","-656","-670","-653","-677","-326","-632","-193","-677","-656","-670","-653","-677","-372","-636","-251","-675","-676","-676","-669","-612","-652","-670","-667","-675","-676","-676","-669","-620","-656","-671","-669","-677","-674","-676","-675","-675","-644","-656","-658","-677","-674","-676","-675","-675","-648","-659","-661","-652","-674","-660","-676","-180","-633","-462","-585","-652","-674","-660","-676","-239","-639","-491","-597","-677","-465","-646","-366","-677","-372","-636","-251","-677","-656","-670","-653","-677","-656","-670","-653","-636","-662","-673","-674","-620","-656","-671","-669","-675","-676","-676","-669","-675","-676","-676","-669","-676","-655","-664","-666","-675","-648","-659","-661","-677","-674","-676","-675","-677","-674","-676","-675","-357","-651","-549","-619","-239","-639","-491","-597","-652","-674","-660","-676","-652","-674","-660","-676","-677","-656","-670","-653","-677","-605","-660","-538","-676","-47","-603","152","-677","-656","-670","-653","-675","-676","-676","-669","-659","-672","-675","-674","-565","-633","-666","-653","-675","-676","-676","-669","-677","-674","-676","-675","-677","-667","-671","-674","-672","-622","-641","-643","-677","-674","-676","-675","-652","-674","-660","-676","-534","-668","-636","-653","174","-598","-288","-517","-652","-674","-660","-676","-677","-656","-670","-653","-677","-656","-670","-653","-677","-656","-670","-653","-677","-656","-670","-653","-675","-676","-676","-669","-675","-676","-676","-669","-675","-676","-676","-669","-675","-676","-676","-669","-677","-674","-676","-675","-677","-674","-676","-675","-677","-674","-676","-675","-677","-674","-676","-675","-652","-674","-660","-676","-652","-674","-660","-676","-652","-674","-660","-676","-652","-674","-660","-676","-488","-520","-507","-489","-296","-480","-137","-273","-488","-520","-507","-489","-320","-485","-186","-300","-520","-511","-520","-507","-509","-305","-496","-323","-520","-511","-520","-507","-511","-333","-499","-346","-512","-519","-510","-520","-318","-471","-258","-519","-512","-519","-510","-520","-342","-477","-290","-520","-520","-520","-506","-506","-479","-498","-404","-476","-520","-520","-506","-506","-484","-501","-421","-479","-368","-495","-285","-354","-320","-485","-186","-300","-488","-520","-507","-489","-488","-520","-507","-489","-513","-389","-505","-392","-511","-333","-499","-346","-520","-511","-520","-507","-520","-511","-520","-507","-391","-489","-353","-520","-342","-477","-290","-520","-512","-519","-510","-520","-512","-519","-510","-520","-494","-507","-453","-487","-484","-501","-421","-479","-520","-520","-506","-506","-520","-520","-506","-506","-488","-520","-507","-489","-440","-510","-434","-435","-152","-450","160","-111","-488","-520","-507","-489","-520","-511","-520","-507","-517","-473","-514","-461","-501","-137","-478","-185","-520","-511","-520","-507","-512","-519","-510","-520","-464","-507","-447","-520","-173","-434","-69","-519","-512","-519","-510","-520","-520","-520","-506","-506","-510","-515","-502","-498","-449","-482","-307","-453","-520","-520","-506","-506","-488","-520","-507","-489","-488","-520","-507","-489","-488","-520","-507","-489","-488","-520","-507","-489","-520","-511","-520","-507","-520","-511","-520","-507","-520","-511","-520","-507","-520","-511","-520","-507","-512","-519","-510","-520","-512","-519","-510","-520","-512","-519","-510","-520","-512","-519","-510","-520","-520","-520","-506","-506","-520","-520","-506","-506","-520","-520","-506","-506","-520","-520","-506","-506","-230","-230","-230","-230","-228","-222","-228","-224","-230","-230","-230","-230","-229","-223","-228","-225","-230","-229","-228","-230","-212","-208","-206","-223","-230","-229","-228","-230","-214","-211","-209","-224","-224","-230","-228","-227","-130","-207","-220","247","-224","-230","-228","-227","-142","-210","-221","187","-215","-224","-226","-226","5","-219","30","-182","-215","-224","-226","-226","-26","-222","-2","-188","-229","-225","-229","-226","-229","-223","-228","-225","-230","-230","-230","-230","-230","-230","-230","-230","-218","-217","-216","-226","-214","-211","-209","-224","-230","-229","-228","-230","-230","-229","-228","-230","-165","-215","-223","67","-142","-210","-221","187","-224","-230","-228","-227","-224","-230","-228","-227","-89","-226","-66","-201","-26","-222","-2","-188","-215","-224","-226","-226","-215","-224","-226","-226","-230","-230","-230","-230","-230","-228","-230","-228","-227","-216","-225","-220","-230","-230","-230","-230","-230","-229","-228","-230","-225","-225","-225","-228","-198","-192","-186","-219","-230","-229","-228","-230","-224","-230","-228","-227","-200","-224","-226","-113","-59","-190","-214","607","-224","-230","-228","-227","-215","-224","-226","-226","-182","-228","-162","-221","193","-207","222","-143","-215","-224","-226","-226","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-230","-229","-228","-230","-230","-229","-228","-230","-230","-229","-228","-230","-230","-229","-228","-230","-224","-230","-228","-227","-224","-230","-228","-227","-224","-230","-228","-227","-224","-230","-228","-227","-215","-224","-226","-226","-215","-224","-226","-226","-215","-224","-226","-226","-215","-224","-226","-226","2","-11","-9","-4","118","-11","31","212","2","-11","-9","-4","103","-11","26","183","-11","-3","-11","-8","-8","135","-3","8","-11","-3","-11","-8","-9","118","-4","6","-11","-11","-10","-11","-5","-8","83","-5","-11","-11","-10","-11","-6","-8","71","-6","-7","-11","-11","-2","51","49","153","110","-7","-11","-11","-2","43","41","132","96","74","-11","16","125","103","-11","26","183","2","-11","-9","-4","2","-11","-9","-4","-9","84","-6","2","-9","118","-4","6","-11","-3","-11","-8","-11","-3","-11","-8","-7","-9","48","-7","-6","-8","71","-6","-11","-11","-10","-11","-11","-11","-10","-11","29","26","91","68","43","41","132","96","-7","-11","-11","-2","-7","-11","-11","-2","2","-11","-9","-4","31","-11","1","39","205","-11","61","384","2","-11","-9","-4","-11","-3","-11","-8","-10","32","-9","-4","-6","239","3","20","-11","-3","-11","-8","-11","-11","-10","-11","-10","-10","13","-9","-1","-6","152","-1","-11","-11","-10","-11","-7","-11","-11","-2","7","4","30","26","94","94","276","194","-7","-11","-11","-2","2","-11","-9","-4","2","-11","-9","-4","2","-11","-9","-4","2","-11","-9","-4","-11","-3","-11","-8","-11","-3","-11","-8","-11","-3","-11","-8","-11","-3","-11","-8","-11","-11","-10","-11","-11","-11","-10","-11","-11","-11","-10","-11","-11","-11","-10","-11","-7","-11","-11","-2","-7","-11","-11","-2","-7","-11","-11","-2","-7","-11","-11","-2","-430","-430","-421","-418","-421","-421","-189","-422","-430","-430","-421","-418","-422","-422","-218","-425","-431","-431","-420","-430","-422","-425","-340","-416","-431","-431","-420","-430","-424","-426","-350","-418","-402","-429","-431","-430","106","51","-418","-380","-402","-429","-431","-430","43","-9","-420","-386","-431","-431","-431","-431","-427","-421","-428","-421","-431","-431","-431","-431","-428","-422","-429","-422","-425","-424","-276","-430","-422","-422","-218","-425","-430","-430","-421","-418","-430","-430","-421","-418","-426","-427","-370","-422","-424","-426","-350","-418","-431","-431","-420","-430","-431","-431","-420","-430","-84","-129","-423","-399","43","-9","-420","-386","-402","-429","-431","-430","-402","-429","-431","-430","-429","-425","-430","-425","-428","-422","-429","-422","-431","-431","-431","-431","-431","-431","-431","-431","-430","-430","-421","-418","-428","-428","-363","-424","-414","-414","-15","-405","-430","-430","-421","-418","-431","-431","-420","-430","-429","-429","-400","-428","-416","-421","-280","-403","-431","-431","-420","-430","-402","-429","-431","-430","-275","-309","-428","-419","487","411","-408","-340","-402","-429","-431","-430","-431","-431","-431","-431","-430","-428","-431","-428","-424","-413","-426","-414","-431","-431","-431","-431","-430","-430","-421","-418","-430","-430","-421","-418","-430","-430","-421","-418","-430","-430","-421","-418","-431","-431","-420","-430","-431","-431","-420","-430","-431","-431","-420","-430","-431","-431","-420","-430","-402","-429","-431","-430","-402","-429","-431","-430","-402","-429","-431","-430","-402","-429","-431","-430","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-431","-287","-275","-275","-287","-163","-193","-73","-282","-287","-275","-275","-287","-179","-203","-98","-283","-276","-288","-288","-283","-214","-280","-266","-197","-276","-288","-288","-283","-224","-281","-269","-208","-288","-282","-266","-282","-284","-277","-270","-225","-288","-282","-266","-282","-285","-277","-275","-233","-287","-281","-280","-288","-265","219","-94","-280","-287","-281","-280","-288","-268","157","-118","-281","-210","-223","-148","-284","-179","-203","-98","-283","-287","-275","-275","-287","-287","-275","-275","-287","-246","-283","-274","-229","-224","-281","-269","-208","-276","-288","-288","-283","-276","-288","-288","-283","-286","-279","-285","-250","-285","-277","-275","-233","-288","-282","-266","-282","-288","-282","-266","-282","-274","32","-164","-283","-268","157","-118","-281","-287","-281","-280","-288","-287","-281","-280","-288","-287","-275","-275","-287","-256","-254","-224","-286","-70","-131","79","-278","-287","-275","-275","-287","-276","-288","-288","-283","-278","-286","-282","-262","-149","-275","-250","-133","-276","-288","-288","-283","-288","-282","-266","-282","-287","-280","-276","-276","-281","-273","-240","-173","-288","-282","-266","-282","-287","-281","-280","-288","-283","-156","-234","-286","-247","594","45","-274","-287","-281","-280","-288","-287","-275","-275","-287","-287","-275","-275","-287","-287","-275","-275","-287","-287","-275","-275","-287","-276","-288","-288","-283","-276","-288","-288","-283","-276","-288","-288","-283","-276","-288","-288","-283","-288","-282","-266","-282","-288","-282","-266","-282","-288","-282","-266","-282","-288","-282","-266","-282","-287","-281","-280","-288","-287","-281","-280","-288","-287","-281","-280","-288","-287","-281","-280","-288","-636","-632","-635","-637","-620","-609","-605","-633","-636","-632","-635","-637","-622","-613","-609","-633","-637","-622","-620","-627","-634","-366","-400","-493","-637","-622","-620","-627","-635","-398","-428","-512","-635","-636","-623","-636","-636","-570","-597","-634","-635","-636","-623","-636","-636","-579","-604","-634","-637","-637","-636","-637","-595","-612","-620","-606","-637","-637","-636","-637","-600","-616","-622","-610","-627","-621","-618","-635","-622","-613","-609","-633","-636","-632","-635","-637","-636","-632","-635","-637","-636","-462","-483","-551","-635","-398","-428","-512","-637","-622","-620","-627","-637","-622","-620","-627","-636","-595","-617","-635","-636","-579","-604","-634","-635","-636","-623","-636","-635","-636","-623","-636","-610","-622","-627","-617","-600","-616","-622","-610","-637","-637","-636","-637","-637","-637","-636","-637","-636","-632","-635","-637","-634","-634","-630","-636","-607","-584","-579","-629","-636","-632","-635","-637","-637","-622","-620","-627","-637","-558","-565","-609","-632","-174","-235","-378","-637","-622","-620","-627","-635","-636","-623","-636","-635","-620","-636","-637","-637","-521","-557","-631","-635","-636","-623","-636","-637","-637","-636","-637","-626","-631","-634","-629","-563","-594","-607","-582","-637","-637","-636","-637","-636","-632","-635","-637","-636","-632","-635","-637","-636","-632","-635","-637","-636","-632","-635","-637","-637","-622","-620","-627","-637","-622","-620","-627","-637","-622","-620","-627","-637","-622","-620","-627","-635","-636","-623","-636","-635","-636","-623","-636","-635","-636","-623","-636","-635","-636","-623","-636","-637","-637","-636","-637","-637","-637","-636","-637","-637","-637","-636","-637","-637","-637","-636","-637","-119","-114","-118","-107","-106","-77","-113","81","-119","-114","-118","-107","-108","-83","-114","58","-105","-113","-117","-117","227","167","351","-97","-105","-113","-117","-117","186","131","293","-100","-119","-119","-119","-94","101","-110","-111","40","-119","-119","-119","-94","73","-111","-112","17","-116","-118","-119","-119","-106","-99","-101","-117","-116","-118","-119","-119","-108","-101","-103","-118","-111","-95","-116","11","-108","-83","-114","58","-119","-114","-118","-107","-119","-114","-118","-107","103","58","176","-105","186","131","293","-100","-105","-113","-117","-117","-105","-113","-117","-117","18","-114","-114","-29","73","-111","-112","17","-119","-119","-119","-94","-119","-119","-119","-94","-112","-106","-107","-118","-108","-101","-103","-118","-116","-118","-119","-119","-116","-118","-119","-119","-119","-114","-118","-107","-115","-112","-119","-60","-96","-42","-108","222","-119","-114","-118","-107","-105","-113","-117","-117","-22","-52","0","-112","476","386","702","-82","-105","-113","-117","-117","-119","-119","-119","-94","-64","-117","-117","-98","266","-103","-106","178","-119","-119","-119","-94","-116","-118","-119","-119","-118","-114","-114","-119","-95","-84","-87","-116","-116","-118","-119","-119","-119","-114","-118","-107","-119","-114","-118","-107","-119","-114","-118","-107","-119","-114","-118","-107","-105","-113","-117","-117","-105","-113","-117","-117","-105","-113","-117","-117","-105","-113","-117","-117","-119","-119","-119","-94","-119","-119","-119","-94","-119","-119","-119","-94","-119","-119","-119","-94","-116","-118","-119","-119","-116","-118","-119","-119","-116","-118","-119","-119","-116","-118","-119","-119","-273","-275","-275","-262","-259","-266","-269","-210","-273","-275","-275","-262","-261","-267","-270","-217","-272","-275","-264","-268","-252","-263","-146","-152","-272","-275","-264","-268","-255","-265","-164","-167","-275","-275","-272","-275","-272","-274","22","-272","-275","-275","-272","-275","-272","-274","-16","-273","-273","-275","-275","-271","-233","-246","-249","-265","-273","-275","-275","-271","-238","-249","-252","-266","-265","-269","-271","-230","-261","-267","-270","-217","-273","-275","-275","-262","-273","-275","-275","-262","-262","-268","-199","-196","-255","-265","-164","-167","-272","-275","-264","-268","-272","-275","-264","-268","-273","-274","-91","-273","-272","-274","-16","-273","-275","-275","-272","-275","-275","-275","-272","-275","-248","-257","-259","-268","-238","-249","-252","-266","-273","-275","-275","-271","-273","-275","-275","-271","-273","-275","-275","-262","-270","-273","-273","-249","-249","-259","-264","-171","-273","-275","-275","-262","-272","-275","-264","-268","-271","-272","-251","-239","-233","-255","-41","-65","-272","-275","-264","-268","-275","-275","-272","-275","-274","-275","-203","-275","-269","-272","247","-270","-275","-275","-272","-275","-273","-275","-275","-271","-263","-268","-268","-270","-203","-224","-230","-261","-273","-275","-275","-271","-273","-275","-275","-262","-273","-275","-275","-262","-273","-275","-275","-262","-273","-275","-275","-262","-272","-275","-264","-268","-272","-275","-264","-268","-272","-275","-264","-268","-272","-275","-264","-268","-275","-275","-272","-275","-275","-275","-272","-275","-275","-275","-272","-275","-275","-275","-272","-275","-273","-275","-275","-271","-273","-275","-275","-271","-273","-275","-275","-271","-273","-275","-275","-271","-318","-312","-317","-313","-289","-266","-306","-205","-318","-312","-317","-313","-292","-272","-308","-220","-310","-318","-289","-317","-74","-314","-247","-307","-310","-318","-289","-317","-103","-314","-259","-308","-303","-294","-311","-318","-191","-278","-291","-315","-303","-294","-311","-318","-205","-286","-295","-315","-318","-296","-315","-318","-287","-164","-301","-306","-318","-296","-315","-318","-291","-186","-304","-308","-300","-284","-311","-249","-292","-272","-308","-220","-318","-312","-317","-313","-318","-312","-317","-313","-162","-315","-284","-310","-103","-314","-259","-308","-310","-318","-289","-317","-310","-318","-289","-317","-233","-302","-304","-316","-205","-286","-295","-315","-303","-294","-311","-318","-303","-294","-311","-318","-299","-230","-309","-311","-291","-186","-304","-308","-318","-296","-315","-318","-318","-296","-315","-318","-318","-312","-317","-313","-311","-301","-316","-293","-267","-232","-296","-116","-318","-312","-317","-313","-310","-318","-289","-317","-251","-317","-314","-314","103","-310","-172","-299","-310","-318","-289","-317","-303","-294","-311","-318","-275","-310","-317","-317","-107","-230","-266","-313","-303","-294","-311","-318","-318","-296","-315","-318","-310","-296","-316","-315","-264","-32","-286","-298","-318","-296","-315","-318","-318","-312","-317","-313","-318","-312","-317","-313","-318","-312","-317","-313","-318","-312","-317","-313","-310","-318","-289","-317","-310","-318","-289","-317","-310","-318","-289","-317","-310","-318","-289","-317","-303","-294","-311","-318","-303","-294","-311","-318","-303","-294","-311","-318","-303","-294","-311","-318","-318","-296","-315","-318","-318","-296","-315","-318","-318","-296","-315","-318","-318","-296","-315","-318","-621","-628","-629","-620","-461","-610","-622","-188","-621","-628","-629","-620","-483","-612","-623","-242","-627","-614","-625","-618","-629","-526","-591","-538","-627","-614","-625","-618","-629","-537","-595","-548","-613","-607","-627","-629","-341","-179","-597","-613","-613","-607","-627","-629","-375","-238","-601","-615","-629","-629","-629","-629","-615","-606","-626","-471","-629","-629","-629","-629","-617","-609","-626","-490","-527","-617","-624","-350","-483","-612","-623","-242","-621","-628","-629","-620","-621","-628","-629","-620","-628","-559","-604","-568","-629","-537","-595","-548","-627","-614","-625","-618","-627","-614","-625","-618","-443","-356","-610","-619","-375","-238","-601","-615","-613","-607","-627","-629","-613","-607","-627","-629","-620","-615","-627","-530","-617","-609","-626","-490","-629","-629","-629","-629","-629","-629","-629","-629","-621","-628","-629","-620","-593","-623","-627","-512","-329","-597","-616","136","-621","-628","-629","-620","-627","-614","-625","-618","-628","-592","-617","-598","-627","-460","-565","-478","-627","-614","-625","-618","-613","-607","-627","-629","-545","-533","-623","-625","-137","175","-571","-601","-613","-607","-627","-629","-629","-629","-629","-629","-625","-624","-628","-589","-604","-589","-623","-352","-629","-629","-629","-629","-621","-628","-629","-620","-621","-628","-629","-620","-621","-628","-629","-620","-621","-628","-629","-620","-627","-614","-625","-618","-627","-614","-625","-618","-627","-614","-625","-618","-627","-614","-625","-618","-613","-607","-627","-629","-613","-607","-627","-629","-613","-607","-627","-629","-613","-607","-627","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-629","-360","-360","-345","-360","-358","-354","-223","-358","-360","-360","-345","-360","-358","-355","-238","-359","-358","-332","-346","-360","-341","-72","-208","-356","-358","-332","-346","-360","-344","-104","-225","-356","-357","-348","-360","-360","-360","-280","-353","-355","-357","-348","-360","-360","-360","-288","-354","-356","-359","-360","-360","-360","-285","-297","-354","-352","-359","-360","-360","-360","-294","-304","-354","-353","-359","-356","-269","-359","-358","-355","-238","-359","-360","-360","-345","-360","-360","-360","-345","-360","-349","-169","-260","-357","-344","-104","-225","-356","-358","-332","-346","-360","-358","-332","-346","-360","-359","-305","-356","-357","-360","-288","-354","-356","-357","-348","-360","-360","-357","-348","-360","-360","-313","-320","-356","-355","-294","-304","-354","-353","-359","-360","-360","-360","-359","-360","-360","-360","-360","-360","-345","-360","-360","-358","-314","-359","-356","-349","-131","-358","-360","-360","-345","-360","-358","-332","-346","-360","-357","-267","-311","-359","-325","123","-104","-353","-358","-332","-346","-360","-357","-348","-360","-360","-358","-331","-358","-359","-357","-229","-348","-352","-357","-348","-360","-360","-359","-360","-360","-360","-340","-344","-358","-358","-229","-249","-349","-347","-359","-360","-360","-360","-360","-360","-345","-360","-360","-360","-345","-360","-360","-360","-345","-360","-360","-360","-345","-360","-358","-332","-346","-360","-358","-332","-346","-360","-358","-332","-346","-360","-358","-332","-346","-360","-357","-348","-360","-360","-357","-348","-360","-360","-357","-348","-360","-360","-357","-348","-360","-360","-359","-360","-360","-360","-359","-360","-360","-360","-359","-360","-360","-360","-359","-360","-360","-360","-430","-425","-429","-428","-372","77","-426","-390","-430","-425","-429","-428","-379","13","-426","-395","-423","-430","-427","-430","-376","-418","-393","-421","-423","-430","-427","-430","-382","-419","-398","-422","-430","-424","-429","-426","-430","-359","-388","-418","-430","-424","-429","-426","-430","-368","-393","-420","-425","-430","-430","-430","-385","-422","-429","-428","-425","-430","-430","-430","-391","-423","-429","-428","-394","-115","-427","-406","-379","13","-426","-395","-430","-425","-429","-428","-430","-425","-429","-428","-394","-422","-408","-425","-382","-419","-398","-422","-423","-430","-427","-430","-423","-430","-427","-430","-430","-387","-403","-424","-430","-368","-393","-420","-430","-424","-429","-426","-430","-424","-429","-426","-404","-425","-430","-429","-391","-423","-429","-428","-425","-430","-430","-430","-425","-430","-430","-430","-430","-425","-429","-428","-415","-307","-428","-422","-328","461","-423","-359","-430","-425","-429","-428","-423","-430","-427","-430","-411","-427","-423","-428","-341","-408","-363","-415","-423","-430","-427","-430","-430","-424","-429","-426","-430","-416","-419","-430","-430","-301","-356","-406","-430","-424","-429","-426","-425","-430","-430","-430","-423","-428","-430","-430","-348","-417","-429","-427","-425","-430","-430","-430","-430","-425","-429","-428","-430","-425","-429","-428","-430","-425","-429","-428","-430","-425","-429","-428","-423","-430","-427","-430","-423","-430","-427","-430","-423","-430","-427","-430","-423","-430","-427","-430","-430","-424","-429","-426","-430","-424","-429","-426","-430","-424","-429","-426","-430","-424","-429","-426","-425","-430","-430","-430","-425","-430","-430","-430","-425","-430","-430","-430","-425","-430","-430","-430","-617","-603","-619","-625","-439","-487","-562","-616","-617","-603","-619","-625","-461","-501","-571","-617","-614","-622","-617","-621","-290","-434","-489","-537","-614","-622","-617","-621","-330","-457","-505","-548","-623","-602","-621","-626","-608","-382","-538","-616","-623","-602","-621","-626","-610","-415","-548","-618","-620","-626","-626","-624","-584","-579","-620","-595","-620","-626","-626","-624","-590","-584","-620","-599","-506","-530","-589","-620","-461","-501","-571","-617","-617","-603","-619","-625","-617","-603","-619","-625","-411","-504","-537","-569","-330","-457","-505","-548","-614","-622","-617","-621","-614","-622","-617","-621","-613","-482","-569","-620","-610","-415","-548","-618","-623","-602","-621","-626","-623","-602","-621","-626","-602","-596","-622","-608","-590","-584","-620","-599","-620","-626","-626","-624","-620","-626","-626","-624","-617","-603","-619","-625","-572","-574","-616","-624","-305","-400","-509","-607","-617","-603","-619","-625","-614","-622","-617","-621","-533","-575","-585","-600","-47","-293","-393","-474","-614","-622","-617","-621","-623","-602","-621","-626","-619","-583","-600","-623","-597","-181","-475","-609","-623","-602","-621","-626","-620","-626","-626","-624","-620","-614","-624","-620","-548","-543","-615","-571","-620","-626","-626","-624","-617","-603","-619","-625","-617","-603","-619","-625","-617","-603","-619","-625","-617","-603","-619","-625","-614","-622","-617","-621","-614","-622","-617","-621","-614","-622","-617","-621","-614","-622","-617","-621","-623","-602","-621","-626","-623","-602","-621","-626","-623","-602","-621","-626","-623","-602","-621","-626","-620","-626","-626","-624","-620","-626","-626","-624","-620","-626","-626","-624","-620","-626","-626","-624","-670","-672","-671","-670","-657","-643","-649","-658","-670","-672","-671","-670","-659","-646","-652","-660","-672","-672","-672","-660","-665","-669","-658","-530","-672","-672","-672","-660","-666","-669","-660","-550","-672","-672","-672","-672","-670","-669","-664","-671","-672","-672","-672","-672","-670","-669","-665","-671","-672","-669","-661","-672","-666","-564","-251","-668","-672","-669","-661","-672","-667","-577","-305","-669","-662","-654","-657","-664","-659","-646","-652","-660","-670","-672","-671","-670","-670","-672","-671","-670","-668","-670","-663","-588","-666","-669","-660","-550","-672","-672","-672","-660","-672","-672","-672","-660","-671","-670","-667","-671","-670","-669","-665","-671","-672","-672","-672","-672","-672","-672","-672","-672","-668","-603","-413","-670","-667","-577","-305","-669","-672","-669","-661","-672","-672","-669","-661","-672","-670","-672","-671","-670","-667","-665","-666","-670","-648","-621","-632","-647","-670","-672","-671","-670","-672","-672","-672","-660","-671","-671","-668","-646","-660","-666","-648","-415","-672","-672","-672","-660","-672","-672","-672","-672","-671","-671","-670","-672","-669","-666","-658","-670","-672","-672","-672","-672","-672","-669","-661","-672","-671","-643","-575","-671","-662","-485","73","-666","-672","-669","-661","-672","-670","-672","-671","-670","-670","-672","-671","-670","-670","-672","-671","-670","-670","-672","-671","-670","-672","-672","-672","-660","-672","-672","-672","-660","-672","-672","-672","-660","-672","-672","-672","-660","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-672","-669","-661","-672","-672","-669","-661","-672","-672","-669","-661","-672","-672","-669","-661","-672","-377","-372","-370","-384","-357","-372","-338","-370","-377","-372","-370","-384","-361","-372","-345","-372","-379","-382","-375","-358","97","-332","-339","-2","-379","-382","-375","-358","37","-339","-345","-47","-381","-363","-377","-382","-338","-149","-163","-378","-381","-363","-377","-382","-344","-181","-192","-378","-384","-379","-381","-361","-367","-354","-364","-195","-384","-379","-381","-361","-369","-358","-367","-222","-370","-372","-360","-375","-361","-372","-345","-372","-377","-372","-370","-384","-377","-372","-370","-384","-82","-352","-359","-136","37","-339","-345","-47","-379","-382","-375","-358","-379","-382","-375","-358","-356","-245","-249","-379","-344","-181","-192","-378","-381","-363","-377","-382","-381","-363","-377","-382","-373","-367","-372","-275","-369","-358","-367","-222","-384","-379","-381","-361","-384","-379","-381","-361","-377","-372","-370","-384","-383","-372","-383","-380","-332","-372","-293","-359","-377","-372","-370","-384","-379","-382","-375","-358","-260","-373","-379","-269","454","-292","-298","265","-379","-382","-375","-358","-381","-363","-377","-382","-375","-341","-334","-381","-301","43","8","-375","-381","-363","-377","-382","-384","-379","-381","-361","-380","-380","-381","-354","-354","-328","-346","-36","-384","-379","-381","-361","-377","-372","-370","-384","-377","-372","-370","-384","-377","-372","-370","-384","-377","-372","-370","-384","-379","-382","-375","-358","-379","-382","-375","-358","-379","-382","-375","-358","-379","-382","-375","-358","-381","-363","-377","-382","-381","-363","-377","-382","-381","-363","-377","-382","-381","-363","-377","-382","-384","-379","-381","-361","-384","-379","-381","-361","-384","-379","-381","-361","-384","-379","-381","-361","-291","-292","-291","-292","-277","-269","-260","-197","-291","-292","-291","-292","-279","-272","-264","-209","-292","-284","-292","-285","-281","-192","-290","-199","-292","-284","-292","-285","-282","-206","-290","-210","-292","-292","-286","-288","-282","-282","-206","-270","-292","-292","-286","-288","-283","-283","-216","-273","-292","-292","-289","-289","-284","-291","-201","-281","-292","-292","-289","-289","-285","-291","-213","-282","-283","-277","-271","-232","-279","-272","-264","-209","-291","-292","-291","-292","-291","-292","-291","-292","-285","-233","-291","-231","-282","-206","-290","-210","-292","-284","-292","-285","-292","-284","-292","-285","-286","-286","-236","-277","-283","-283","-216","-273","-292","-292","-286","-288","-292","-292","-286","-288","-287","-291","-236","-284","-285","-291","-213","-282","-292","-292","-289","-289","-292","-292","-289","-289","-291","-292","-291","-292","-289","-286","-283","-268","-265","-252","-237","-126","-291","-292","-291","-292","-292","-284","-292","-285","-289","-273","-291","-264","-272","-111","-289","-135","-292","-284","-292","-285","-292","-292","-286","-288","-289","-290","-266","-284","-274","-274","-146","-257","-292","-292","-286","-288","-292","-292","-289","-289","-290","-292","-272","-287","-279","-290","-131","-275","-292","-292","-289","-289","-291","-292","-291","-292","-291","-292","-291","-292","-291","-292","-291","-292","-291","-292","-291","-292","-292","-284","-292","-285","-292","-284","-292","-285","-292","-284","-292","-285","-292","-284","-292","-285","-292","-292","-286","-288","-292","-292","-286","-288","-292","-292","-286","-288","-292","-292","-286","-288","-292","-292","-289","-289","-292","-292","-289","-289","-292","-292","-289","-289","-292","-292","-289","-289","-523","-509","-523","-522","-515","-353","-517","-523","-523","-509","-523","-522","-516","-372","-518","-523","-522","-523","-520","-517","-487","-518","-465","-494","-522","-523","-520","-517","-491","-518","-472","-499","-492","-523","-522","-495","-222","-521","-494","-183","-492","-523","-522","-495","-264","-521","-497","-222","-522","-523","-522","-522","-523","-521","-508","-475","-522","-523","-522","-522","-523","-521","-509","-481","-518","-411","-520","-523","-516","-372","-518","-523","-523","-509","-523","-522","-523","-509","-523","-522","-500","-520","-486","-507","-491","-518","-472","-499","-522","-523","-520","-517","-522","-523","-520","-517","-347","-522","-504","-300","-264","-521","-497","-222","-492","-523","-522","-495","-492","-523","-522","-495","-523","-522","-513","-493","-523","-521","-509","-481","-522","-523","-522","-522","-522","-523","-522","-522","-523","-509","-523","-522","-521","-470","-522","-522","-509","-236","-513","-522","-523","-509","-523","-522","-522","-523","-520","-517","-513","-522","-506","-521","-461","-514","-424","-468","-522","-523","-520","-517","-492","-523","-522","-495","-471","-523","-515","-417","27","-519","-473","51","-492","-523","-522","-495","-522","-523","-522","-522","-522","-523","-518","-511","-522","-520","-497","-438","-522","-523","-522","-522","-523","-509","-523","-522","-523","-509","-523","-522","-523","-509","-523","-522","-523","-509","-523","-522","-522","-523","-520","-517","-522","-523","-520","-517","-522","-523","-520","-517","-522","-523","-520","-517","-492","-523","-522","-495","-492","-523","-522","-495","-492","-523","-522","-495","-492","-523","-522","-495","-522","-523","-522","-522","-522","-523","-522","-522","-522","-523","-522","-522","-522","-523","-522","-522","-114","-94","-98","-101","-112","230","18","225","-114","-94","-98","-101","-112","185","0","181","-100","-110","-108","-109","-2","-75","-93","-91","-100","-110","-108","-109","-18","-80","-96","-95","-107","-114","-109","-114","-22","-109","-89","-112","-107","-114","-109","-114","-35","-110","-92","-112","-96","-111","-113","-100","116","77","-114","-100","-96","-111","-113","-100","89","53","-114","-104","-113","94","-37","93","-112","185","0","181","-114","-94","-98","-101","-114","-94","-98","-101","-49","-88","-103","-102","-18","-80","-96","-95","-100","-110","-108","-109","-100","-110","-108","-109","-59","-111","-100","-113","-35","-110","-92","-112","-107","-114","-109","-114","-107","-114","-109","-114","36","4","-113","-111","89","53","-114","-104","-96","-111","-113","-100","-96","-111","-113","-100","-114","-94","-98","-101","-114","-43","-93","-39","-111","503","129","489","-114","-94","-98","-101","-100","-110","-108","-109","-96","-102","-113","-112","93","-49","-72","-70","-100","-110","-108","-109","-107","-114","-109","-114","-96","-113","-111","-114","52","-105","-66","-111","-107","-114","-109","-114","-96","-111","-113","-100","-43","-68","-113","-107","275","223","-114","-79","-96","-111","-113","-100","-114","-94","-98","-101","-114","-94","-98","-101","-114","-94","-98","-101","-114","-94","-98","-101","-100","-110","-108","-109","-100","-110","-108","-109","-100","-110","-108","-109","-100","-110","-108","-109","-107","-114","-109","-114","-107","-114","-109","-114","-107","-114","-109","-114","-107","-114","-109","-114","-96","-111","-113","-100","-96","-111","-113","-100","-96","-111","-113","-100","-96","-111","-113","-100","-562","-563","-556","-558","-523","-558","-488","-452","-562","-563","-556","-558","-528","-559","-498","-466","-549","-564","-564","-559","-169","-563","-547","-473","-549","-564","-564","-559","-216","-563","-549","-485","-564","-564","-561","-557","-562","-557","-521","-441","-564","-564","-561","-557","-562","-558","-526","-455","-544","-562","-563","-552","-80","-509","-533","-476","-544","-562","-563","-552","-138","-516","-537","-488","-538","-560","-519","-492","-528","-559","-498","-466","-562","-563","-556","-558","-562","-563","-556","-558","-311","-563","-554","-509","-216","-563","-549","-485","-549","-564","-564","-559","-549","-564","-564","-559","-563","-559","-536","-484","-562","-558","-526","-455","-564","-564","-561","-557","-564","-564","-561","-557","-254","-530","-545","-513","-138","-516","-537","-488","-544","-562","-563","-552","-544","-562","-563","-552","-562","-563","-556","-558","-552","-562","-551","-532","-494","-554","-425","-373","-562","-563","-556","-558","-549","-564","-564","-559","-454","-563","-560","-545","116","-562","-535","-401","-549","-564","-564","-559","-564","-564","-561","-557","-564","-562","-551","-528","-560","-552","-491","-354","-564","-564","-561","-557","-544","-562","-563","-552","-428","-552","-557","-551","268","-466","-509","-401","-544","-562","-563","-552","-562","-563","-556","-558","-562","-563","-556","-558","-562","-563","-556","-558","-562","-563","-556","-558","-549","-564","-564","-559","-549","-564","-564","-559","-549","-564","-564","-559","-549","-564","-564","-559","-564","-564","-561","-557","-564","-564","-561","-557","-564","-564","-561","-557","-564","-564","-561","-557","-544","-562","-563","-552","-544","-562","-563","-552","-544","-562","-563","-552","-544","-562","-563","-552","-198","-199","-197","-198","-198","-193","-167","-199","-198","-199","-197","-198","-198","-194","-171","-199","-199","-199","-199","-176","-161","-196","-195","-42","-199","-199","-199","-176","-166","-197","-195","-65","-199","-199","-198","-184","-195","-197","-150","22","-199","-199","-198","-184","-195","-197","-156","-7","-194","-194","-199","-198","-122","-147","-193","-191","-194","-194","-199","-198","-131","-154","-194","-192","-198","-195","-179","-198","-198","-194","-171","-199","-198","-199","-197","-198","-198","-199","-197","-198","-175","-197","-196","-110","-166","-197","-195","-65","-199","-199","-199","-176","-199","-199","-199","-176","-196","-198","-169","-66","-195","-197","-156","-7","-199","-199","-198","-184","-199","-199","-198","-184","-149","-168","-195","-195","-131","-154","-194","-192","-194","-194","-199","-198","-194","-194","-199","-198","-198","-199","-197","-198","-198","-197","-190","-198","-198","-190","-145","-198","-198","-199","-197","-198","-199","-199","-199","-176","-189","-198","-198","-177","-132","-194","-192","93","-199","-199","-199","-176","-199","-199","-198","-184","-198","-198","-187","-155","-192","-196","-113","199","-199","-199","-198","-184","-194","-194","-199","-198","-176","-189","-197","-198","-68","-104","-189","-185","-194","-194","-199","-198","-198","-199","-197","-198","-198","-199","-197","-198","-198","-199","-197","-198","-198","-199","-197","-198","-199","-199","-199","-176","-199","-199","-199","-176","-199","-199","-199","-176","-199","-199","-199","-176","-199","-199","-198","-184","-199","-199","-198","-184","-199","-199","-198","-184","-199","-199","-198","-184","-194","-194","-199","-198","-194","-194","-199","-198","-194","-194","-199","-198","-194","-194","-199","-198","-326","-326","-309","-326","-323","-321","25","-324","-326","-326","-309","-326","-324","-322","-21","-325","-322","-326","-326","-326","-287","-310","-318","-301","-322","-326","-326","-326","-292","-312","-319","-304","-303","-315","-326","-326","-297","-257","-300","-320","-303","-315","-326","-326","-303","-267","-303","-320","-326","-308","-326","-325","-312","-68","-323","-232","-326","-308","-326","-325","-313","-103","-323","-244","-324","-323","-113","-325","-324","-322","-21","-325","-326","-326","-309","-326","-326","-326","-309","-326","-300","-316","-321","-310","-292","-312","-319","-304","-322","-326","-326","-326","-322","-326","-326","-326","-316","-287","-310","-322","-303","-267","-303","-320","-303","-315","-326","-326","-303","-315","-326","-326","-317","-172","-324","-268","-313","-103","-323","-244","-326","-308","-326","-325","-326","-308","-326","-325","-326","-326","-309","-326","-326","-325","-251","-325","-321","-317","301","-323","-326","-326","-309","-326","-322","-326","-326","-326","-313","-322","-324","-319","-261","-297","-312","-282","-322","-326","-326","-326","-303","-315","-326","-326","-316","-317","-320","-324","-258","-197","-280","-315","-303","-315","-326","-326","-326","-308","-326","-325","-323","-275","-325","-304","-301","139","-321","-161","-326","-308","-326","-325","-326","-326","-309","-326","-326","-326","-309","-326","-326","-326","-309","-326","-326","-326","-309","-326","-322","-326","-326","-326","-322","-326","-326","-326","-322","-326","-326","-326","-322","-326","-326","-326","-303","-315","-326","-326","-303","-315","-326","-326","-303","-315","-326","-326","-303","-315","-326","-326","-326","-308","-326","-325","-326","-308","-326","-325","-326","-308","-326","-325","-326","-308","-326","-325","-487","-463","-484","-487","-475","-79","-418","-472","-487","-463","-484","-487","-476","-133","-427","-474","-479","-486","-486","-475","-471","-480","-486","-259","-479","-486","-486","-475","-472","-480","-487","-289","-484","-485","-487","-487","-389","-476","-482","-480","-484","-485","-487","-487","-401","-477","-483","-481","-485","-487","-485","-487","-423","-431","-438","-486","-485","-487","-485","-487","-431","-438","-445","-486","-479","-241","-445","-478","-476","-133","-427","-474","-487","-463","-484","-487","-487","-463","-484","-487","-474","-482","-487","-349","-472","-480","-487","-289","-479","-486","-486","-475","-479","-486","-486","-475","-425","-479","-484","-482","-401","-477","-483","-481","-484","-485","-487","-487","-484","-485","-487","-487","-446","-452","-457","-487","-431","-438","-445","-486","-485","-487","-485","-487","-485","-487","-485","-487","-487","-463","-484","-487","-484","-403","-472","-483","-466","245","-364","-460","-487","-463","-484","-487","-479","-486","-486","-475","-477","-484","-486","-439","-465","-475","-485","-79","-479","-486","-486","-475","-484","-485","-487","-487","-460","-482","-486","-485","-318","-469","-478","-474","-484","-485","-487","-487","-485","-487","-485","-487","-469","-473","-477","-487","-376","-389","-400","-485","-485","-487","-485","-487","-487","-463","-484","-487","-487","-463","-484","-487","-487","-463","-484","-487","-487","-463","-484","-487","-479","-486","-486","-475","-479","-486","-486","-475","-479","-486","-486","-475","-479","-486","-486","-475","-484","-485","-487","-487","-484","-485","-487","-487","-484","-485","-487","-487","-484","-485","-487","-487","-485","-487","-485","-487","-485","-487","-485","-487","-485","-487","-485","-487","-485","-487","-485","-487","-430","-425","-436","-436","-94","-355","-436","-432","-430","-425","-436","-436","-137","-367","-436","-432","-436","-435","-436","-436","-434","-429","-431","-430","-436","-435","-436","-436","-434","-430","-432","-431","-434","-435","-435","-436","-357","-411","-410","-432","-434","-435","-435","-436","-366","-414","-414","-432","-436","-435","-410","-417","-427","-317","-198","-313","-436","-435","-410","-417","-428","-332","-231","-326","-224","-390","-436","-433","-137","-367","-436","-432","-430","-425","-436","-436","-430","-425","-436","-436","-435","-431","-433","-432","-434","-430","-432","-431","-436","-435","-436","-436","-436","-435","-436","-436","-386","-420","-420","-433","-366","-414","-414","-432","-434","-435","-435","-436","-434","-435","-435","-436","-430","-361","-297","-352","-428","-332","-231","-326","-436","-435","-410","-417","-436","-435","-410","-417","-430","-425","-436","-436","-355","-424","-436","-435","167","-286","-435","-429","-430","-425","-436","-436","-436","-435","-436","-436","-435","-433","-435","-434","-433","-425","-427","-426","-436","-435","-436","-436","-434","-435","-435","-436","-415","-429","-430","-435","-299","-393","-391","-428","-434","-435","-435","-436","-436","-435","-410","-417","-434","-405","-396","-391","-421","-228","0","-235","-436","-435","-410","-417","-430","-425","-436","-436","-430","-425","-436","-436","-430","-425","-436","-436","-430","-425","-436","-436","-436","-435","-436","-436","-436","-435","-436","-436","-436","-435","-436","-436","-436","-435","-436","-436","-434","-435","-435","-436","-434","-435","-435","-436","-434","-435","-435","-436","-434","-435","-435","-436","-436","-435","-410","-417","-436","-435","-410","-417","-436","-435","-410","-417","-436","-435","-410","-417","-605","-600","-602","-605","-581","-540","-509","-603","-605","-600","-602","-605","-584","-547","-521","-603","-602","-604","-605","-599","-520","-575","-605","-223","-602","-604","-605","-599","-530","-579","-605","-271","-605","-597","-594","-604","-602","-551","-434","-538","-605","-597","-594","-604","-602","-557","-457","-547","-605","-602","-605","-604","-603","-568","-483","-580","-605","-602","-605","-604","-603","-572","-498","-583","-590","-562","-544","-604","-584","-547","-521","-603","-605","-600","-602","-605","-605","-600","-602","-605","-551","-586","-605","-368","-530","-579","-605","-271","-602","-604","-605","-599","-602","-604","-605","-599","-603","-568","-502","-564","-602","-557","-457","-547","-605","-597","-594","-604","-605","-597","-594","-604","-604","-580","-529","-590","-603","-572","-498","-583","-605","-602","-605","-604","-605","-602","-605","-604","-605","-600","-602","-605","-599","-585","-579","-604","-563","-495","-439","-602","-605","-600","-602","-605","-602","-604","-605","-599","-581","-597","-605","-514","-458","-554","-605","68","-602","-604","-605","-599","-605","-597","-594","-604","-604","-586","-570","-589","-599","-517","-297","-487","-605","-597","-594","-604","-605","-602","-605","-604","-604","-593","-574","-600","-602","-542","-391","-561","-605","-602","-605","-604","-605","-600","-602","-605","-605","-600","-602","-605","-605","-600","-602","-605","-605","-600","-602","-605","-602","-604","-605","-599","-602","-604","-605","-599","-602","-604","-605","-599","-602","-604","-605","-599","-605","-597","-594","-604","-605","-597","-594","-604","-605","-597","-594","-604","-605","-597","-594","-604","-605","-602","-605","-604","-605","-602","-605","-604","-605","-602","-605","-604","-605","-602","-605","-604","-451","-441","-421","-447","-452","-311","59","-320","-451","-441","-421","-447","-452","-330","-1","-336","-451","-442","-452","-452","-432","-374","-450","-448","-451","-442","-452","-452","-434","-385","-450","-448","-452","-447","-452","-452","-430","-341","-450","-447","-452","-447","-452","-452","-433","-355","-450","-448","-447","-452","-452","-449","-225","-436","-446","-422","-447","-452","-452","-449","-253","-438","-447","-426","-452","-368","-121","-367","-452","-330","-1","-336","-451","-441","-421","-447","-451","-441","-421","-447","-439","-407","-451","-449","-434","-385","-450","-448","-451","-442","-452","-452","-451","-442","-452","-452","-439","-384","-451","-449","-433","-355","-450","-448","-452","-447","-452","-452","-452","-447","-452","-452","-308","-442","-448","-432","-253","-438","-447","-426","-447","-452","-452","-449","-447","-452","-452","-449","-451","-441","-421","-447","-452","-425","-301","-415","-451","-197","419","-224","-451","-441","-421","-447","-451","-442","-452","-452","-446","-440","-452","-451","-418","-308","-448","-445","-451","-442","-452","-452","-452","-447","-452","-452","-447","-428","-451","-451","-414","-254","-448","-443","-452","-447","-452","-452","-447","-452","-452","-449","-392","-448","-450","-442","-59","-424","-442","-402","-447","-452","-452","-449","-451","-441","-421","-447","-451","-441","-421","-447","-451","-441","-421","-447","-451","-441","-421","-447","-451","-442","-452","-452","-451","-442","-452","-452","-451","-442","-452","-452","-451","-442","-452","-452","-452","-447","-452","-452","-452","-447","-452","-452","-452","-447","-452","-452","-452","-447","-452","-452","-447","-452","-452","-449","-447","-452","-452","-449","-447","-452","-452","-449","-447","-452","-452","-449","-331","-335","-332","-335","-309","-321","-312","-328","-331","-335","-332","-335","-313","-323","-314","-328","-335","-335","-334","-306","-322","-323","-302","48","-335","-335","-334","-306","-324","-325","-307","-4","-331","-313","-334","-335","-215","-165","-326","-325","-331","-313","-334","-335","-229","-189","-327","-326","-322","-335","-327","-333","-240","-282","-93","-258","-322","-335","-327","-333","-250","-288","-124","-268","-320","-327","-319","-330","-313","-323","-314","-328","-331","-335","-332","-335","-331","-335","-332","-335","-327","-328","-315","-107","-324","-325","-307","-4","-335","-335","-334","-306","-335","-335","-334","-306","-258","-237","-329","-329","-229","-189","-327","-326","-331","-313","-334","-335","-331","-313","-334","-335","-271","-302","-187","-288","-250","-288","-124","-268","-322","-335","-327","-333","-322","-335","-327","-333","-331","-335","-332","-335","-331","-332","-327","-333","-286","-311","-297","-322","-331","-335","-332","-335","-335","-335","-334","-306","-332","-332","-328","-261","-313","-314","-277","357","-335","-335","-334","-306","-331","-313","-334","-335","-302","-309","-332","-332","-128","-21","-321","-318","-331","-313","-334","-335","-322","-335","-327","-333","-301","-322","-280","-317","-178","-242","95","-199","-322","-335","-327","-333","-331","-335","-332","-335","-331","-335","-332","-335","-331","-335","-332","-335","-331","-335","-332","-335","-335","-335","-334","-306","-335","-335","-334","-306","-335","-335","-334","-306","-335","-335","-334","-306","-331","-313","-334","-335","-331","-313","-334","-335","-331","-313","-334","-335","-331","-313","-334","-335","-322","-335","-327","-333","-322","-335","-327","-333","-322","-335","-327","-333","-322","-335","-327","-333","-569","-565","-568","-558","-555","-559","-543","-480","-569","-565","-568","-558","-557","-560","-546","-493","-569","-554","-557","-568","-512","-310","-329","-473","-569","-554","-557","-568","-519","-340","-360","-485","-569","-547","-557","-569","-566","-203","-319","-531","-569","-547","-557","-569","-566","-246","-349","-536","-567","-569","-569","-569","-567","-564","-548","-554","-567","-569","-569","-569","-568","-564","-551","-556","-561","-561","-553","-518","-557","-560","-546","-493","-569","-565","-568","-558","-569","-565","-568","-558","-533","-401","-423","-509","-519","-340","-360","-485","-569","-554","-557","-568","-569","-554","-557","-568","-567","-332","-409","-545","-566","-246","-349","-536","-569","-547","-557","-569","-569","-547","-557","-569","-569","-566","-556","-560","-568","-564","-551","-556","-567","-569","-569","-569","-567","-569","-569","-569","-569","-565","-568","-558","-566","-564","-564","-555","-545","-555","-523","-405","-569","-565","-568","-558","-569","-554","-557","-568","-555","-493","-518","-546","-469","-127","-140","-400","-569","-554","-557","-568","-569","-547","-557","-569","-568","-461","-498","-559","-564","55","-141","-502","-569","-547","-557","-569","-567","-569","-569","-569","-568","-568","-564","-565","-564","-560","-533","-543","-567","-569","-569","-569","-569","-565","-568","-558","-569","-565","-568","-558","-569","-565","-568","-558","-569","-565","-568","-558","-569","-554","-557","-568","-569","-554","-557","-568","-569","-554","-557","-568","-569","-554","-557","-568","-569","-547","-557","-569","-569","-547","-557","-569","-569","-547","-557","-569","-569","-547","-557","-569","-567","-569","-569","-569","-567","-569","-569","-569","-567","-569","-569","-569","-567","-569","-569","-569","-579","-579","-574","-579","-551","-505","-518","-579","-579","-579","-574","-579","-554","-514","-526","-579","-576","-578","-576","-579","-543","-561","-534","-578","-576","-578","-576","-579","-548","-563","-540","-578","-579","-563","-579","-579","-562","-275","-564","-574","-579","-563","-579","-579","-564","-315","-566","-574","-569","-554","-559","-559","-337","-138","-319","-211","-569","-554","-559","-559","-366","-190","-349","-254","-561","-532","-543","-579","-554","-514","-526","-579","-579","-579","-574","-579","-579","-579","-574","-579","-558","-568","-552","-578","-548","-563","-540","-578","-576","-578","-576","-579","-576","-578","-576","-579","-568","-395","-570","-576","-564","-315","-566","-574","-579","-563","-579","-579","-579","-563","-579","-579","-424","-294","-409","-341","-366","-190","-349","-254","-569","-554","-559","-559","-569","-554","-559","-559","-579","-579","-574","-579","-572","-560","-567","-579","-530","-449","-468","-578","-579","-579","-574","-579","-576","-578","-576","-579","-572","-575","-570","-579","-514","-547","-499","-577","-576","-578","-576","-579","-579","-563","-579","-579","-575","-515","-575","-577","-549","-35","-553","-570","-579","-563","-579","-579","-569","-554","-559","-559","-511","-450","-499","-472","-163","174","-139","50","-569","-554","-559","-559","-579","-579","-574","-579","-579","-579","-574","-579","-579","-579","-574","-579","-579","-579","-574","-579","-576","-578","-576","-579","-576","-578","-576","-579","-576","-578","-576","-579","-576","-578","-576","-579","-579","-563","-579","-579","-579","-563","-579","-579","-579","-563","-579","-579","-579","-563","-579","-579","-569","-554","-559","-559","-569","-554","-559","-559","-569","-554","-559","-559","-569","-554","-559","-559","-81","-78","-81","-80","-65","43","-81","-43","-81","-78","-81","-80","-67","28","-81","-48","-81","-76","-80","-56","-69","34","-61","412","-81","-76","-80","-56","-71","20","-64","353","-81","-80","-61","-80","-79","-32","123","-69","-81","-80","-61","-80","-79","-38","95","-70","-68","-79","-74","-81","92","-11","19","-75","-68","-79","-74","-81","72","-20","7","-76","-71","-4","-81","-57","-67","28","-81","-48","-81","-78","-81","-80","-81","-78","-81","-80","-74","-7","-68","236","-71","20","-64","353","-81","-76","-80","-56","-81","-76","-80","-56","-79","-50","39","-73","-79","-38","95","-70","-81","-80","-61","-80","-81","-80","-61","-80","32","-37","-16","-77","72","-20","7","-76","-68","-79","-74","-81","-68","-79","-74","-81","-81","-78","-81","-80","-77","-52","-81","-71","-54","139","-80","-15","-81","-78","-81","-80","-81","-76","-80","-56","-78","-49","-75","61","-60","116","-47","763","-81","-76","-80","-56","-81","-80","-61","-80","-80","-68","-45","-77","-77","4","291","-60","-81","-80","-61","-80","-68","-79","-74","-81","-28","-62","-51","-79","212","40","88","-70","-68","-79","-74","-81","-81","-78","-81","-80","-81","-78","-81","-80","-81","-78","-81","-80","-81","-78","-81","-80","-81","-76","-80","-56","-81","-76","-80","-56","-81","-76","-80","-56","-81","-76","-80","-56","-81","-80","-61","-80","-81","-80","-61","-80","-81","-80","-61","-80","-81","-80","-61","-80","-68","-79","-74","-81","-68","-79","-74","-81","-68","-79","-74","-81","-68","-79","-74","-81","-395","-395","-395","-392","-388","-390","-383","-339","-395","-395","-395","-392","-389","-390","-384","-346","-386","-390","-395","-379","-184","88","-387","-159","-386","-390","-395","-379","-209","27","-388","-191","-394","-395","-390","-395","-378","-389","-265","-389","-394","-395","-390","-395","-380","-390","-281","-389","-394","-395","-395","-382","-371","-394","-381","-312","-394","-395","-395","-382","-374","-394","-383","-324","-390","-392","-387","-361","-389","-390","-384","-346","-395","-395","-395","-392","-395","-395","-395","-392","-259","-95","-390","-254","-209","27","-388","-191","-386","-390","-395","-379","-386","-390","-395","-379","-384","-391","-312","-391","-380","-390","-281","-389","-394","-395","-390","-395","-394","-395","-390","-395","-380","-394","-386","-348","-374","-394","-383","-324","-394","-395","-395","-382","-394","-395","-395","-382","-395","-395","-395","-392","-393","-394","-392","-383","-382","-386","-373","-294","-395","-395","-395","-392","-386","-390","-395","-379","-335","-278","-393","-348","-32","454","-380","30","-386","-390","-395","-379","-394","-395","-390","-395","-390","-393","-359","-393","-366","-385","-171","-384","-394","-395","-390","-395","-394","-395","-395","-382","-389","-395","-392","-384","-354","-393","-370","-240","-394","-395","-395","-382","-395","-395","-395","-392","-395","-395","-395","-392","-395","-395","-395","-392","-395","-395","-395","-392","-386","-390","-395","-379","-386","-390","-395","-379","-386","-390","-395","-379","-386","-390","-395","-379","-394","-395","-390","-395","-394","-395","-390","-395","-394","-395","-390","-395","-394","-395","-390","-395","-394","-395","-395","-382","-394","-395","-395","-382","-394","-395","-395","-382","-394","-395","-395","-382","-597","-589","-597","-597","-590","-560","-469","-596","-597","-589","-597","-597","-591","-564","-485","-596","-596","-587","-597","-573","-590","-439","-595","-369","-596","-587","-597","-573","-591","-458","-595","-401","-584","-597","-597","-597","-568","-586","-591","-590","-584","-597","-597","-597","-570","-587","-591","-591","-588","-597","-580","-597","-406","-596","-158","-559","-588","-597","-580","-597","-429","-596","-215","-564","-592","-571","-517","-596","-591","-564","-485","-596","-597","-589","-597","-597","-597","-589","-597","-597","-593","-495","-596","-464","-591","-458","-595","-401","-596","-587","-597","-573","-596","-587","-597","-573","-574","-590","-593","-592","-570","-587","-591","-591","-584","-597","-597","-597","-584","-597","-597","-597","-474","-596","-329","-573","-429","-596","-215","-564","-588","-597","-580","-597","-588","-597","-580","-597","-597","-589","-597","-597","-595","-582","-565","-597","-584","-539","-373","-594","-597","-589","-597","-597","-596","-587","-597","-573","-596","-550","-596","-558","-583","-328","-594","-180","-596","-587","-597","-573","-584","-597","-597","-597","-580","-595","-595","-595","-556","-577","-586","-584","-584","-597","-597","-597","-588","-597","-580","-597","-542","-597","-500","-588","-269","-596","184","-530","-588","-597","-580","-597","-597","-589","-597","-597","-597","-589","-597","-597","-597","-589","-597","-597","-597","-589","-597","-597","-596","-587","-597","-573","-596","-587","-597","-573","-596","-587","-597","-573","-596","-587","-597","-573","-584","-597","-597","-597","-584","-597","-597","-597","-584","-597","-597","-597","-584","-597","-597","-597","-588","-597","-580","-597","-588","-597","-580","-597","-588","-597","-580","-597","-588","-597","-580","-597","-186","-178","-193","-192","-131","318","-185","-175","-186","-178","-193","-192","-139","256","-186","-177","-193","-192","-193","-193","-189","-192","-192","-150","-193","-192","-193","-193","-190","-192","-192","-155","-192","-190","-189","-190","-65","-163","-130","-175","-192","-190","-189","-190","-81","-166","-137","-178","-191","-185","-192","-193","-172","-93","-193","-192","-191","-185","-192","-193","-174","-106","-193","-192","-156","132","-188","-182","-139","256","-186","-177","-186","-178","-193","-192","-186","-178","-193","-192","-191","-192","-192","-166","-190","-192","-192","-155","-193","-192","-193","-193","-193","-192","-193","-193","-112","-173","-152","-183","-81","-166","-137","-178","-192","-190","-189","-190","-192","-190","-189","-190","-179","-133","-193","-192","-174","-106","-193","-192","-191","-185","-192","-193","-191","-185","-192","-193","-186","-178","-193","-192","-182","-54","-191","-189","-79","690","-180","-161","-186","-178","-193","-192","-193","-192","-193","-193","-192","-192","-192","-182","-186","-192","-191","-117","-193","-192","-193","-193","-192","-190","-189","-190","-160","-183","-174","-191","30","-143","-86","-159","-192","-190","-189","-190","-191","-185","-192","-193","-187","-174","-192","-193","-157","-12","-192","-191","-191","-185","-192","-193","-186","-178","-193","-192","-186","-178","-193","-192","-186","-178","-193","-192","-186","-178","-193","-192","-193","-192","-193","-193","-193","-192","-193","-193","-193","-192","-193","-193","-193","-192","-193","-193","-192","-190","-189","-190","-192","-190","-189","-190","-192","-190","-189","-190","-192","-190","-189","-190","-191","-185","-192","-193","-191","-185","-192","-193","-191","-185","-192","-193","-191","-185","-192","-193","-422","-424","-421","-424","-423","-415","-363","-416","-422","-424","-421","-424","-423","-417","-370","-417","-417","-423","-412","-422","-410","-409","-344","-398","-417","-423","-412","-422","-412","-411","-353","-401","-424","-424","-424","-424","-421","-413","-421","-424","-424","-424","-424","-424","-421","-414","-421","-424","-424","-424","-424","-412","-421","-417","-397","-322","-424","-424","-424","-412","-422","-418","-400","-336","-423","-419","-385","-419","-423","-417","-370","-417","-422","-424","-421","-424","-422","-424","-421","-424","-417","-415","-370","-408","-412","-411","-353","-401","-417","-423","-412","-422","-417","-423","-412","-422","-422","-417","-422","-424","-421","-414","-421","-424","-424","-424","-424","-424","-424","-424","-424","-424","-422","-420","-407","-365","-422","-418","-400","-336","-424","-424","-424","-412","-424","-424","-424","-412","-422","-424","-421","-424","-423","-422","-407","-422","-424","-409","-320","-411","-422","-424","-421","-424","-417","-423","-412","-422","-423","-421","-395","-419","-394","-398","-293","-377","-417","-423","-412","-422","-424","-424","-424","-424","-423","-421","-423","-424","-419","-404","-418","-424","-424","-424","-424","-424","-424","-424","-424","-412","-423","-422","-417","-408","-420","-412","-376","-237","-424","-424","-424","-412","-422","-424","-421","-424","-422","-424","-421","-424","-422","-424","-421","-424","-422","-424","-421","-424","-417","-423","-412","-422","-417","-423","-412","-422","-417","-423","-412","-422","-417","-423","-412","-422","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-424","-412","-424","-424","-424","-412","-424","-424","-424","-412","-424","-424","-424","-412","-602","-602","-596","-600","-599","-595","-348","-566","-602","-602","-596","-600","-600","-596","-381","-570","-590","-602","-587","-602","-392","-602","-555","-366","-590","-602","-587","-602","-419","-602","-559","-395","-601","-576","-599","-585","-579","-424","-592","-335","-601","-576","-599","-585","-582","-449","-593","-370","-597","-599","-596","-592","-565","-415","-490","-426","-597","-599","-596","-592","-569","-439","-505","-449","-600","-598","-446","-580","-600","-596","-381","-570","-602","-602","-596","-600","-602","-602","-596","-600","-475","-602","-567","-454","-419","-602","-559","-395","-590","-602","-587","-602","-590","-602","-587","-602","-588","-500","-597","-441","-582","-449","-593","-370","-601","-576","-599","-585","-601","-576","-599","-585","-577","-487","-535","-495","-569","-439","-505","-449","-597","-599","-596","-592","-597","-599","-596","-592","-602","-602","-596","-600","-601","-600","-543","-594","-597","-590","-153","-537","-602","-602","-596","-600","-590","-602","-587","-602","-558","-602","-579","-543","-225","-602","-531","-189","-590","-602","-587","-602","-601","-576","-599","-585","-597","-577","-602","-548","-562","-271","-582","-122","-601","-576","-599","-585","-597","-599","-596","-592","-589","-558","-579","-565","-541","-273","-402","-286","-597","-599","-596","-592","-602","-602","-596","-600","-602","-602","-596","-600","-602","-602","-596","-600","-602","-602","-596","-600","-590","-602","-587","-602","-590","-602","-587","-602","-590","-602","-587","-602","-590","-602","-587","-602","-601","-576","-599","-585","-601","-576","-599","-585","-601","-576","-599","-585","-601","-576","-599","-585","-597","-599","-596","-592","-597","-599","-596","-592","-597","-599","-596","-592","-597","-599","-596","-592","-5","-6","-4","-5","24","-1","0","18","-5","-6","-4","-5","20","-1","-1","15","-5","15","-4","-6","-4","173","24","0","-5","15","-4","-6","-4","148","20","-1","-6","-5","4","-6","-3","19","14","-4","-6","-5","4","-6","-3","16","10","-5","-3","2","-3","10","14","50","151","442","-3","2","-3","10","11","42","131","388","13","-3","-2","10","20","-1","-1","15","-5","-6","-4","-5","-5","-6","-4","-5","-5","98","12","-2","-4","148","20","-1","-5","15","-4","-6","-5","15","-4","-6","-4","10","3","-5","-3","16","10","-5","-6","-5","4","-6","-6","-5","4","-6","6","26","91","280","11","42","131","388","-3","2","-3","10","-3","2","-3","10","-5","-6","-4","-5","1","-5","-3","1","47","3","3","36","-5","-6","-4","-5","-5","15","-4","-6","-6","23","0","-4","-1","323","48","4","-5","15","-4","-6","-6","-5","4","-6","-5","1","-3","-6","0","36","36","-3","-6","-5","4","-6","-3","2","-3","10","-3","2","31","118","31","98","271","766","-3","2","-3","10","-5","-6","-4","-5","-5","-6","-4","-5","-5","-6","-4","-5","-5","-6","-4","-5","-5","15","-4","-6","-5","15","-4","-6","-5","15","-4","-6","-5","15","-4","-6","-6","-5","4","-6","-6","-5","4","-6","-6","-5","4","-6","-6","-5","4","-6","-3","2","-3","10","-3","2","-3","10","-3","2","-3","10","-3","2","-3","10","-97","-90","-82","-97","-70","136","-86","-8","-97","-90","-82","-97","-73","107","-86","-19","-83","-97","-97","-96","-87","-89","-73","-90","-83","-97","-97","-96","-90","-90","-76","-91","-97","-97","-97","-97","-96","-91","-96","-91","-97","-97","-97","-97","-96","-92","-96","-92","-97","-97","-97","-92","-94","-96","-84","25","-97","-97","-97","-92","-94","-96","-86","9","-80","51","-85","-42","-73","107","-86","-19","-97","-90","-82","-97","-97","-90","-82","-97","-96","-92","-82","-92","-90","-90","-76","-91","-83","-97","-97","-96","-83","-97","-97","-96","-96","-93","-97","-94","-96","-92","-96","-92","-97","-97","-97","-97","-97","-97","-97","-97","-95","-96","-89","-23","-94","-96","-86","9","-97","-97","-97","-92","-97","-97","-97","-92","-97","-90","-82","-97","-90","-34","-83","-75","-50","305","-89","58","-97","-90","-82","-97","-83","-97","-97","-96","-89","-95","-91","-95","-69","-83","-55","-86","-83","-97","-97","-96","-97","-97","-97","-97","-97","-95","-97","-96","-96","-87","-95","-87","-97","-97","-97","-97","-97","-97","-97","-92","-96","-97","-94","-71","-91","-94","-74","120","-97","-97","-97","-92","-97","-90","-82","-97","-97","-90","-82","-97","-97","-90","-82","-97","-97","-90","-82","-97","-83","-97","-97","-96","-83","-97","-97","-96","-83","-97","-97","-96","-83","-97","-97","-96","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-97","-92","-97","-97","-97","-92","-97","-97","-97","-92","-97","-97","-97","-92","-590","-590","-590","-589","-585","-582","-572","-566","-590","-590","-590","-589","-586","-583","-574","-569","-580","-590","-590","-590","-466","-170","-589","-586","-580","-590","-590","-590","-481","-223","-589","-587","-577","-586","-578","-581","-555","-198","-246","-587","-577","-586","-578","-581","-561","-246","-290","-589","-586","-586","-588","-590","-476","-444","-536","-586","-586","-586","-588","-590","-490","-461","-543","-587","-587","-585","-579","-575","-586","-583","-574","-569","-590","-590","-590","-589","-590","-590","-590","-589","-509","-328","-589","-588","-481","-223","-589","-587","-580","-590","-590","-590","-580","-590","-590","-590","-573","-343","-379","-588","-561","-246","-290","-589","-577","-586","-578","-581","-577","-586","-578","-581","-520","-497","-557","-588","-490","-461","-543","-587","-586","-586","-588","-590","-586","-586","-588","-590","-590","-590","-590","-589","-589","-588","-586","-585","-582","-576","-558","-547","-590","-590","-590","-589","-580","-590","-590","-590","-552","-485","-590","-589","-381","145","-587","-583","-580","-590","-590","-590","-577","-586","-578","-581","-589","-489","-513","-584","-519","93","21","-578","-577","-586","-578","-581","-586","-586","-588","-590","-564","-550","-578","-589","-387","-337","-494","-584","-586","-586","-588","-590","-590","-590","-590","-589","-590","-590","-590","-589","-590","-590","-590","-589","-590","-590","-590","-589","-580","-590","-590","-590","-580","-590","-590","-590","-580","-590","-590","-590","-580","-590","-590","-590","-577","-586","-578","-581","-577","-586","-578","-581","-577","-586","-578","-581","-577","-586","-578","-581","-586","-586","-588","-590","-586","-586","-588","-590","-586","-586","-588","-590","-586","-586","-588","-590","-470","-467","-463","-470","-458","-459","-452","-463","-470","-467","-463","-470","-460","-461","-453","-464","-469","-467","-470","-470","-450","-424","-455","-441","-469","-467","-470","-470","-452","-430","-457","-444","-470","-467","-470","-469","-446","-458","-466","-427","-470","-467","-470","-469","-449","-459","-467","-433","-470","-457","-470","-470","-465","-311","-459","-465","-470","-457","-470","-470","-466","-332","-461","-466","-463","-465","-456","-466","-460","-461","-453","-464","-470","-467","-463","-470","-470","-467","-463","-470","-457","-442","-461","-452","-452","-430","-457","-444","-469","-467","-470","-470","-469","-467","-470","-470","-455","-461","-468","-443","-449","-459","-467","-433","-470","-467","-470","-469","-470","-467","-470","-469","-467","-375","-463","-467","-466","-332","-461","-466","-470","-457","-470","-470","-470","-457","-470","-470","-470","-467","-463","-470","-467","-470","-460","-468","-449","-449","-444","-459","-470","-467","-463","-470","-469","-467","-470","-470","-464","-460","-466","-462","-436","-387","-444","-419","-469","-467","-470","-470","-470","-467","-470","-469","-464","-465","-469","-459","-427","-451","-463","-396","-470","-467","-470","-469","-470","-457","-470","-470","-469","-440","-467","-469","-462","-182","-451","-461","-470","-457","-470","-470","-470","-467","-463","-470","-470","-467","-463","-470","-470","-467","-463","-470","-470","-467","-463","-470","-469","-467","-470","-470","-469","-467","-470","-470","-469","-467","-470","-470","-469","-467","-470","-470","-470","-467","-470","-469","-470","-467","-470","-469","-470","-467","-470","-469","-470","-467","-470","-469","-470","-457","-470","-470","-470","-457","-470","-470","-470","-457","-470","-470","-470","-457","-470","-470"],"shape":["96","16","16"]}]},"inputs":[{"data":["23","31","32","1","32","0","19","-2","18","-29","20","31","-31","-10","-31","32","32","32","-31","-16","-31","-24","-31","32","32","32","27","-31","0","-31","-15","32","-31","32","-31","4","-31","-31","-31","32","-31","32","-31","-27","-6","14","-31","23","32","32","-23","-31","32","-7","0","2","14","32","25","-31","19","32","-30","32","32","20","32","-11","32","-31","-31","32","5","-31","-31","-31","10","10","-31","-11","32","32","10","32","-25","32","-31","32","29","0","-31","32","-31","0","-26","32","0","-31","-31","0","-31","17","19","31","-14","-17","-4","32","-8","32","-7","22","-31","0","-12","15","-18","32","-31","32","32","32","32","32","32","32","-31","32","-16","-31","32","1","-31","-31","0","-31","-31","0","32","21","32","-31","-21","32","-3","4","-31","0","-31","-31","-13","0","-31","-31","32","21","32","32","32","32","0","32","-5","-31","19","-7","32","32","0","-14","25","32","-25","-31","-12","21","32","-30","32","-14","32","0","-22","-31","-16","0","6","8","-31","-31","-31","-6","-31","-31","32","6","-6","6","-31","32","0","-31","-25","32","-31","-31","-31","-13","32","7","-6","-17","32","-31","-31","0","-15","8","32","-4","32","-31","-31","-31","-31","32","-7","-1","32","17","-2","30","-27","10","0","-31","0","-18","-8","-9","26","-31","-31","-31","-31","32","-31","-31","32","-20","25","-31","5","-31","14","-19","-27","32","32","32","3","32","-31","-9","-31","0","-31","-31","-27","10","0","23","-31","29","29","-2","-31","32","32","27","-18","-16","-6","10","32","-31","1","22","-6","4","0","32","16","32","12","32","32","-31","-31","-31","32","8","32","-31","32","31","32","-31","0","32","-31","-25","32","7","32","32","7","-23","-31","32","32","12","-31","-31","32","32","32","32","-31","-5","11","-31","-15","0","7","32","-8","-3","0","32","9","-30","32","32","-31","-31","5","10","32","32","5","17","-31","22","-31","-31","32","-31","8","-18","18","-29","32","0","32","-31","-31","-31","32","32","32","9","32","17","-8","0","-25","-21","32","0","20","32","-6","-31","-16","32","31","-31","-25","11","16","29","32","20","0","-31","-31","6","32","32","-31","18","-31","-31","-4","6","32","-2","-31","-31","-11","32","-31","-30","-20","-31","32","32","32","-25","-31","15","-4","-31","0","0","-19","22","-29","-31","-31","5","32","32","4","0","7","-4","13","32","16","-31","-31","-31","0","11","2","13","-31","3","-31","-31","-31","32","-2","-31","32","-18","23","-17","32","32","32","21","32","32","32","32","32","-31","-2","-12","-8","12","32","32","-31","-21","1","32","32","-31","0","-31","-31","-9","10","3","32","23","-31","-31","3","-31","0","-11","-31","32","-31","-31","32","8","-13","32","-31","0","32","-31","12","32","32","-31","-31","-31","27","11","32","6","-31","32","-31","10","4","12","0","32","32","32","-31","17","-31","0","32","32","-31","-31","-31","-23","-31","32","-31","32","31","-31","-18","15","7","20","0","32","17","32","27","32","-31","32","-3","0","32","32","-12","32","32","-4","0","18","32","-31","-23","32","0","-31","-31","22","-31","32","-2","32","-31","32","20","0","32","32","32","17","-31","32","20","30","27","-31","0","-31","16","-16","-24","3","32","32","0","-31","22","-5","0","0","18","32","-31","0","-4","-31","-31","32","-1","-31","0","0","-31","30","30","32","-31","20","-2","32","-26","0","16","-31","-31","19","10","-31","-31","32","-31","32","10","-31","32","32","4","32","-31","-11","0","-31","-31","20","-23","32","0","-31","-31","15","32","-24","-31","32","-16","32","32","-31","-31","-31","-2","-31","17","0","32","-31","32","-31","-22","0","0","26","-28","-31","-9","13","32","-31","-31","9","6","32","-22","5","-26","32","19","3","32","-31","21","0","32","0","-15","-31","-20","11","-31","32","32","-29","32","-11","-21","-16","-31","0","-31","-31","25","32","-5","-18","-31","-31","15","-31","32","16","-26","-14","32","28","-12","-3","-31","32","-31","8","0","0","-31","-9","-24","-31","6","6","17","32","-31","26","-31","8","19","-10","-31","32","-31","18","32","32","10","32","-31","-22","32","32","32","5","-22","32","32","-31","-15","32","25","-31","32","-12","8","32","0","32","12","32","32","-31","-28","32","-5","-1","32","-31","0","-2","-12","-31","32","-31","0","-31","0","-31","0","-16","0","-14","32","0","32","16","-13","-17","32","0","28","0","0","32","-27","-20","0","0","32","-31","32","-31","-31","-5","32","32","-31","32","-27","22","-18","32","32","0","14","32","21","-26","32","16","32","0","-13","0","32","0","-31","-31","32","-1","-31","-31","32","32","32","32","2","28","2","28","32","-31","-8","-25","0","-31","32","0","-31","-25","32","-19","32","-26","20","32","-31","32","15","8","-31","-16","-31","-3","-31","32","-27","-20","32","32","-31","18","-6","32","-31","32","6","-31","21","0","-11","0","29","32","-31","16","-15","-23","-4","-31","32","32","-9","24","32","-5","-31","32","-31","-6","0","32","16","5","14","-31","-14","31","25","-18","-31","-25","14","-31","0","-31","-31","-24","-31","-31","-31","24","-31","-31","-11","32","-31","0","24","32","2","32","32","32","-27","32","0","32","31","10","-31","-31","9","-31","32","11","-31","22","7","0","6","-5","32","32","-31","32","0","32","-31","-11","24","10","-20","32","17","32","-31","-31","32","-4","32","-24","25","0","32","32","0","-31","32","0","-6","32","32","28","32","0","26","-18","-9","32","-6","-31","0","-31","23","-31","-31","32","-21","12","32","-31","-15","-31","18","5","32","-31","19","-31","-2","31","21","-31","-31","32","32","32","7","-31","-8","32","-31","32","32","32","10","32","32","32","-31","32","32","0","-31","13","32","31","-9","32","-31","0","17","-31","32","32","-21","-31","32","24","0","32","-12","-31","17","32","-11","-31","25","0","0","32","-31","-4","-31","-31","-27","32","-31","-31","31","26","32","10","32","-21","32","-31","32","0","0","-31","9","-14","-8","32","-17","-26","7","0","32","-15","15","-26","32","9","32","10","-19","4","-31","-8","11","32","-31","-31","31","24","-31","32","32","32","13","-5","3","-31","-31","-10","-31","0","32","32","15","27","-31","-31","0","-31","-31","0","-31","-31","-16","-20","-31","32","32","32","-13","-22","-22","0","-18","32","32","32","32","32","32","32","-31","12","-31","32","0","0","-21","-31","30","-31","0","24","32","21","-31","-31","32","-31","0","14","-31","32","32","16","32","32","32","32","32","-31","-31","-16","-24","-24","-31","32","-31","0","24","-7","32","-31","-12","-31","31","16","0","-31","32","-9","-11","-31","17","6","-31","32","-9","31","30","5","16","-17","-31","27","-24","32","18","-23","-20","32","-31","-31","20","32","4","-20","-31","-31","30","17","27","32","0","-31","32","32","-31","32","-31","-31","32","32","25","4","-31","-31","32","-31","32","-7","-26","-31","19","31","-17","32","0","32","-17","32","0","-31","-11","-31","-31","2","-31","-31","-5","32","-31","-31","32","-31","17","-31","20","-4","32","29","0","-31","-31","0","-23","32","32","0","-9","-31","6","-1","28","32","-31","32","32","32","-31","-26","25","-31","19","-31","12","-13","24","31","9","-31","-6","-31","32","-31","32","-31","-31","-31","32","-10","32","32","0","-31","32","32","19","-6","32","32","-25","-31","-31","32","-31","0","0","0","12","-31","-31","32","-31","-3","-31","-21","32","20","0","-31","32","19","32","32","-31","29","-31","-21","-31","22","-23","-31","32","-15","27","32","-31","32","-24","-31","-26","-31","32","-31","-31","15","24","-19","32","-29","-31","32","-24","-12","32","32","24","-19","-31","32","-31","20","32","0","-31","-4","32","-31","-15","-31","32","0","-31","12","0","-31","-14","-2","-31","-13","-31","2","-31","32","32","32","6","31","-6","32","-27","-20","0","32","0","0","32","-31","-6","32","-31","4","32","-14","32","-31","-31","-31","0","-9","-31","-31","-31","-11","24","32","17","-31","0","-9","30","-4","32","-22","32","-31","-17","-31","32","-31","-3","32","-9","18","3","22","32","-7","32","26","-18","32","24","32","32","-19","0","0","24","32","-31","-1","31","0","-2","-31","-13","32","0","-31","-31","32","32","-2","0","-31","32","-11","32","15","-13","-31","-6","29","-22","-31","-31","-4","32","32","-31","20","-31","9"],"shape":["96","4","4"]}],"scalars":[]}],"graph":"57484731010100000d0000000c0000000100010000000000000000040000000000000000040000000400000000000000000000000000000000000000000000000c0000006000000080020000e1ffffffffffffff20000000000000006000000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000006000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000000b01010000000000010000001000000080ffffffffffffff7f00000000000000010101000100000002000000f6000000020000000100000001000000010000000100000000000000000000000100000001000000000100020004000003030400000005000000b064efea12833a2b7e933ff3c19093677e2fdf782efd542166da3310f779259a524856f7612b81d394feb9105f2048eda5100f97bb57e5c974e98d607a02fc0f2ceb9dc78ec4169af3e9d2f629ba0af50d1f0c97fdeb19e7c32d7c5b4af2dda105903c27aca9f292850f6dfad16c0ad722a91db1aeea98e9c18f5acda7ae320cea05d45502f9dafff7e654bcac01d9612114370a37005620499c57cba133874f89614cc56ffd55feaf3ad2d29ca4798907803e5a5d2343aca5cbeb285b52cce00c0101000200000003000000000000000b01010003000000040000001000000080ffffffffffffff7f000000000000000101010004000000050000005a00000002000000030000000300000001000000010000000100000001000000010000000100000000010002000400000b0a0a020000266fffff5f9c1f6d84c5d0246ad1a34e94562b709cbcdcdc9541b4f74a214d2d9a67c1090c8679180c0101000500000006000000000000000b01010006000000070000001000000080ffffffffffffff7f000000000000000101010007000000080000002c36000000060000010000000100000001000000010000000000000000000000010000000200000000010002000400000702030305070702050207020404010306070104020705020702030103020701040106020706030301020307020402050603070402060403020203070407020207010406030106040705030606030307020706070404050202050305050507020304010703010106020302060405060202040606020107030607060506010207030201010207020203050703070603010107010502040602070204030604010706050501050304020507050603060503020506040707010303030506060506030405030105060404050205050305030506050601060306020102020605050202020105070601040305020701040602060602010303050202050106030107060506040107010407020607030103070704070605010303030201040602040502070404010704030405030301030601050601040401070703060705040402060105030106020305040502050204030305010701070601030105030405040605030306040305040602050504040703070506040505010704040606040705060404040302070103060107040407020607050403070607040502010605040102010603020602050201060105070206010306060106010101040607010704050602060301020403050504060104020502030403010302040507010403020401040705050701020202040103030505060501060107040506050701020407060604010601020504050301070707030505060403020707070305020606040105050702070301020303020707060601030603060404030301040203050104060505040303050205070304070601030301040602030701050405060205050107010502010506010701010403020207040702050701020201010201070703050705020102010107070701070203070706010502010601020706030505020203020304070407030602020503060301040103060103060306060704050706070503050202060705060704040506070401030706070507030404040705070203060702060603060707010405040706070704070504030603070704020107060703020406030404020405020206030502070504020501070702030105070701010501030204030105010602020304030406040704050105020704070103040402040507030702020505010703010605030404030503050705040301010504010204010407040201030304060202010705070203030205070207070302060705010501030404010306040307010501040707040501020102040601020104030202070205040104010301040101050205020204010504050202070606060505030702050401020302040207040207020604070603070202020105040202060702050101060402050606020202050207050306030103030102050303040706020102040302050404050506030501010101040205070104050504030604010406020207060107040405030502050202070105010103060401040502040601040104020101040606050702070702070401020503020706030407070401050303060406070304010307060602010305010201020401030603040604040405050707060207070707070301060202020601040201040102040503040105050503060207030506030407050202060207050306040301070201030605040701010102030303030703030102050203040202010705030607020301040302050604040407070106070402030306050706010703050705010204070601070305010306020404010303070704030406010206070605070503050505050301010502030703050701070202010603030505010103050207070501060602060704020504070606040103010506020402030603050204010203070102020407050505020307040504070401040702010101060307030602050106010105010103070507060402010601020703070506060207030307050107010206070502060104030107040706060403030304050305060405040703050102070607060707050207070102020502020501040102020202050504040501010706050207040202010502020302070505060706070507050307060505020106060101010203020407060403070504060305030703070205073c000000130000002d0000003200000020000000100000002c0000002d000000220000003b00000034000000040000000200000027000000290000002b0000001e0000001c0000003c000000220000000500000011000000030000000a0000003c0000002f0000003f0000003e000000020000002e0000002d0000003a0000000100000025000000090000002300000026000000120000001100000007000000270000003e000000050000003b000000270000002e000000090000001e00000038000000110000001a000000250000003d0000001800000014000000030000002c0000002f000000080000000c00000020000000330000001900000034000000390000001400000030000000130000002e0000000c0000001f0000001d000000040000002e0000001f0000000a00000022000000230000001a000000020000003d0000003100000019000000070000001a0000001f000000040000001b000000220000000c000000190000002400000020000000060000000800000035000000110000003e0000000e0000002e0000001f000000210000000f0000001c0000002f00000033000000200000002c0000001f000000230000000a000000330000001a0000001d0000003e00000001000000190000002900000008000000090000003a00000032000000010000001f0000001f0000001300000035000000200000001b000000160000000b00000009000000290000003600000001000000390000000200000034000000260000003d0000001f0000002f000000130000001400000015000000150000002e000000090000003200000024000000060000001c000000150000001c000000210000002d0000002a000000080000000f0000001c0000001c0000003d000000330000000300000021000000340000001b0000000d00000033000000050000002a0000000a000000180000002d000000270000003d0000000d000000370000000b0000001e0000003d0000003100000039000000350000001e0000001a0000001c0000001e0000001500000021000000340000002f0000003c0000002a000000200000001500000038000000190000002d000000020000003d0000003400000018000000320000001c0000003e00000037000000030000000e0000001b0000001600000020000000150000003f00000013000000360000002c00000038000000390000001800000011000000280000002100000021000000170000003d0000001000000006000000130000003b0000002800000034000000310000002b00000035000000300000000100000021000000400000003500000008000000250000003e000000240000002f000000190000001f000000260000003a00000026000000050000003400000008000000360000003a000000310000000f000000080000003d000000230000003c000000170000001e000000040000002200000020000000150000001b0000003b0000003d0000003e000000060000001c0000002100000019000000180000001d00000022000000010000002300000008000000030000003600000034000000180000003d0000001b00000013000000050000000b0000002500000008000000250000002500000038000000290000002400000032000000110000003d0000003300000027000000320000000f0000000b000000250000003a0000000d0000000c000000370000003000000031000000200000000200000006000000200000002100000031000000100000001400000037000000250000002100000025000000160000003d0000002c00000018000000400000000f000000260000001e0000003e0000002500000036000000290000002b0000001f0000000a000000380000003d0000003b0000003a000000290000000d000000320000000b0000001f000000090000003700000035000000360000003a00000017000000120000001a000000360000001300000035000000050000000200000025000000120000001700000036000000140000000a000000150000002c0000000f0000000f000000020000002800000034000000020000003a000000340000003200000015000000150000000d00000031000000020000001f00000029000000060000003400000020000000180000001d0000002f0000003f0000003d000000320000000c0000002d000000100000003e0000002300000002000000120000002c000000220000002b000000180000003a0000003a00000002000000210000001900000021000000390000003e000000360000001e00000004000000260000002a0000000200000005000000120000000700000002000000220000002a0000000d0000001100000019000000350000002f0000000b000000220000000e0000003f0000002a000000130000001700000010000000010000002d000000360000003d0000002b0000003a0000001a000000300000000c0000000c000000180000001a0000001c000000280000002a0000003a0000001c0000003f00000028000000320000001900000031000000270000002f0000003f00000008000000320000000300000023000000130000001b000000350000002a0000000f0000000100000035000000350000003e0000003e0000002c000000150000002a000000270000000b00000012000000340000002a0000001b0000002c000000190000003b0000000a0000000c0000003100000037000000060000003f000000030000003b000000100000000d000000070000002c0000003f00000015000000020000003100000035000000030000000a0000003b0000003c0000001c000000170000000e00000005000000380000001e00000038000000400000003a00000024000000200000001e00000022000000300000002b000000170000000d0000003f0000001200000028000000110000002900000005000000070000001a0000000e0000000c000000270000003800000031000000290000003800000025000000030000003e00000012000000040000001100000027000000370000002b00000033000000070000002e000000330000003a0000002b0000003f0000002a00000028000000350000000e0000003b0000001200000015000000390000000f0000000b000000390000001e0000002400000035000000260000002000000002000000160000002c00000019000000260000003d0000003c000000150000000b000000120000003f00000016000000010000001400000011000000290000001b0000001b000000300000002c000000370000001000000014000000100000001d0000003700000013000000160000001c000000060000003000000036000000080000002f0000000e000000150000003e00000003000000300000001b0000000200000008000000150000003000000008000000310000001400000002000000230000000c0000001c0000001e000000140000001f0000001000000002000000100000002a000000100000001400000033000000040000000a00000016000000220000000800000019000000380000000a00000004000000210000002a00000035000000090000002000000030000000380000000d0000003b00000004000000040000002b0000000c0000000300000038000000120000000a000000210000001a000000190000003d0000000300000007000000210000003f00000020000000020000003b00000026000000240000001d0000000d0000001d00000034000000050000003c000000020000003f000000390000003f000000390000003c0000002f000000190000002e0000000b0000000b00000036000000100000003e00000015000000330000000e0000000c0000003e0000003b0000001d0000000f0000000f000000210000003700000033000000400000001600000016000000360000001e0000002000000034000000070000001d0000000b000000090000002c00000022000000260000003a00000037000000100000003500000011000000360000001a0000003e00000026000000060000002f0000001c00000017000000140000003000000036000000350000003a00000021000000400000002e000000190000003400000034000000060000001b00000015000000010000003900000007000000120000003a0000002f0000000500000001000000140000002d0000001000000029000000360000000d000000280000002000000018000000250000000d00000017000000250000002b00000007000000180000000a0000000100000012000000070000001c0000002b000000280000001f00000023000000120000000d0000000b00000037000000320000003e000000010000003c0000000b0000000d0000002c00000029000000260000002e00000019000000350000000b000000030000002100000009000000380000001f0000003a0000003e000000260000001c00000001000000280000002e0000001f0000003e00000039000000100000003300000026000000370000002f0000000c000000110000002c000000310000003e00000036000000200000003f00000033000000170000001a0000003c0000002400000029000000050000000500000040000000040000000200000033000000180000000c00000029000000130000001a0000003700000033000000190000003e0000002c0000000d0000000b0000000c0000003a0000002a000000030000001c0000001e0000003d00000018000000200000003a0000002400000022000000310000003f0000000e000000100000001b00000036000000120000002b000000030000001c0000002c000000010000000400000021000000070000003e0000003b000000390000001e0000000b0000003d0000001600000009000000020000003700000017000000030000002d0000002a000000300000001b000000030000000e00000013000000280000003300000021000000050000003e0000001900000023000000160000002d0000000e0000003b000000360000002c000000260000002d0000000800000028000000340000002a0000001f000000300000002c0000000f0000000400000021000000050000000d00000024000000240000003300000038000000230000000a00000040000000050000001a0000003e0000000f0000002400000011000000350000002100000012000000140000000f000000030000000f0000003b0000003b00000035000000050000003800000005000000010000002c00000012000000090000001a000000030000002e000000060000003d0000003700000011000000400000003400000006000000210000001f00000032000000230000002d0000003c0000003700000014000000090000000900000010000000020000000100000012000000290000001800000028000000350000003c0000002b0000002e0000003b0000003b000000050000001e00000018000000020000000e00000007000000120000000500000037000000370000002300000030000000170000000a0000002b00000032000000360000002c000000300000000e0000000f00000020000000160000000c0000002a00000029000000070000003d0000003e000000220000002a00000025000000080000003a000000250000000100000001000000350000000b0000003a0000002c0000003c000000190000001d0000000c0000000500000027000000030000000a00000031000000330000003500000022000000100000000f0000001100000004000000040000001a00000034000000290000002e0000001c0000002f00000007000000070000000b0000002b00000003000000020000002000000017000000180000003a0000001500000023000000260000003a0000003d0000001e000000300000003d000000350000000d0000002c0000003f00000014000000210000001d0000003900000012000000290000001f000000400000002d000000210000002d0000002c000000270000003d0000001e000000140000000300000009000000360000003e0000000f00000027000000390000003a0000000100000018000000330000002d000000210000000c0000000100000008000000280000000b0000000b0000002b000000140000003a0000003c0000003a00000018000000010000003000000017000000080000002c000000150000002c0000001f000000260000002f0000003e00000037000000190000001200000012000000140000003a000000300000002e00000011000000330000000f0000003f0000002500000023000000050000002900000040000000090000003300000038000000330000003900000039000000320000002f000000370000001b00000017000000260000001e0000003100000038000000150000000a000000290000002400000034000000360000002b0000001e00000029000000140000002b0000003a0000002f0000002b000000030000003a000000020000002e00000022000000250000003a0000000f0000002a000000370000004000000028000000060000000e0000000c0000001e0000003b000000230000002c0000000d000000170000003c000000360000003f0000003400000006000000390000000b0000001f0000002d000000110000001e00000028000000200000001b0000003900000021000000310000002d0000003d000000030000002900000005000000240000000d0000002a0000003b000000120000001500000020000000180000001f0000001a000000100000002d0000000c000000100000000e0000003e00000029000000290000000e000000310000003b00000032000000200000001f00000004000000330000002b0000002f000000020000002d000000130000003d0000002b00000028000000250000002a0000000b0000002a0000002200000013000000220000000500000031000000090000002e0000002f0000000a0000002f0000000f000000250000001b0000000e0000001d000000310000001c00000024000000210000001c0000001d000000180000001c0000001600000040000000270000002b000000030000002c000000080000000c0000002e000000260000000800000003000000380000003e0000001b000000150000002d0000002300000015000000190000000d00000035000000270000000e000000160000001b0000001c0000001c00000032000000340000000c0000003a000000210000002d00000003000000390000001f000000040000003000000025000000170000003e0000002e000000360000002a000000010000000b0000000a0000000a0000002000000017000000150000001b000000200000003c000000110000001c0000003f0000001a000000390000003c0000001e0000003b000000260000002d0000002b000000300000003600000005000000210000001500000032000000230000003a0000002e000000090000001f000000300000000a000000040000002c0000003000000001000000280000002b0000000c000000170000001c000000030000002a00000004000000320000002c000000330000000d0000000c00000021000000070000001a000000280000003200000029000000290000003a00000018000000240000000a00000034000000150000002a000000320000003a00000002000000280000002b0000001a00000004000000380000002f00000005000000340000002b0000003d000000270000000b000000240000002100000004000000150000002c00000038000000210000002f0000000a00000034000000160000004000000001000000370000003d0000001400000022000000310000003400000001000000230000000a000000260000000e000000220000000d000000380000001f000000010000001600000027000000400000000f000000080000000d0000001b000000230000003800000040000000400000003b0000002a0000002000000016000000360000002200000038000000350000001800000009000000070000003d0000003c0000000a0000001f0000001c0000001a000000320000002b0000002d0000000d00000008000000300000001c0000003f000000030000002a000000340000003a00000022000000140000000f0000001b0000002800000020000000080000002500000016000000330000002b000000050000002f000000100000003c0000002a0000000800000034000000210000000d00000021000000080000001c0000003d000000060000003b000000240000000e000000330000001a000000010000003f000000020000000a000000080000001a0000002e0000002e0000001e0000000c00000035000000280000000100000020000000200000001b00000009000000180000002700000021000000130000002f000000130000002e000000370000003d000000160000003d0000003100000024000000060000000d0000001d0000003c000000080000002f0000003500000011000000170000003f00effffbff9cffa2ff38007300edff01005d001e000100b6ff11004800abff89ff3b00c6ff96ffd6ffa2ff02003c003d00d0ff7c00c4ff2c00caffc0ff83ff85ffbcffcdffadffa3ff150030001f00250038009dff770013004b005600bcff3300a5ffadffceff85ffc2ffe0ffb9ff9affe3ffcdff8fff35007c007f007300acff5900abff8000eeff5c00bcffacffbbffdaff710016001e0080008fff9bff4f00d1ff590001005400b5ffafffb4ff0700a0ffb1fff2ffb4ff6b00f5fff0ffe8ff5100a2ff7f005700beff1e00430052007500ecff51005500ccff5c006500eeffbbff8dff01000000f9ffceff3800f3ff60009eff80ff89ffd1ff710026009bffbcff2c001300dfffaeffd0ff98ffb2ffb3ff38006100b7ffd3ff1300ffff6500e8ffbdff4300a7ff5c0050003e00f6ffebfff1ff7a0084ff3d008cff11006e00f6ffafff010088ff5d000700bdffd5ffb0ff500081ff310096ff93ff6d002600d6ff5c002300d8ff33002b001e008aff9dff7d006800b3ffbcfff7ff7d0038008eff27000f003a00d1ff1e0089ff35003e003d00240035003700d1ff75002b00a7ff680082ffc8ff88ffd6ffbdff0200cdff5c00ffffe9ffc3ff5d00cbff1d006900b7ff3b000b0015007b002b00730088ff06001800a0ffebff7500f8ff60003a00ddff8fff8cff9eff3a005700e5ffebff5500fbffe8ff3900abff1e007100c3ff13005e006d004500a3ff90fff7ff250052000200dfff9dff3e003c00c9ff68006000b7ff83ffe5ff270090ff4d00680090ff7a00470099ffa2ffabff7900f3ff7e0090ff0300e7ff9bff97ff28002b00c1ff180087ff5f009cfff4ff37006b0087ffaeff680096fff5ffc7ff00004e0094ff76009fff94ffb2ffb8ff88ff91ff9eff6d00c7ff2400d6ffc9fffaff7700bbff3b0085ff0e00b2ff240019007e00ebff720038004b003800390016002200640033003a00bdff64005700ebffbcffc6ff2f007700faff89ff08008dffc8ff3b00ffff3100daff4a00fbfff7ff2400f4ff2d001a000900fcff0c0032003600340038006d002a008aff7a005e0023007b006100b1ff54002c00d0ffc1ff7f00540057001d001d00e0ffb5ff0f00dcffc8ff3100b3ff6c00e0ff5800b6ffd8ffebffa0ffccff81ff43005f001300e7ff1100d9ffb9ffc4ff63002c00720087ff7d00aaff0f00a4fff7ff10009dff2500d1ffadfff8ff08003c0086fff2ff5c00f3ffe3fffbff18002a005900ecff6600a1ffb6ffd8ff700023007500deff0e00e9ffb8ff71003c00aaff8dff57003700b8ff4c00390047005e00e3ffa0ffaafff6fff2ff94ff6d00e4fff5ff70003900140095ff97ff5e0021001700c2ff9affd2ff8aff1d00760027003c00340002005800a0ff2600d0ffbfff6c000000320083ff8fffc1ff62006a004900c8ff94ff24001000efff5e00afffaeffbaff0000dbff6c004900adffbbff7600360053007f0025001900deff26004f0097ffdeffc1ffebffe2fffcffedff86ffa3ff84ff56003c00ccff94ff11006f00a5ff27002f005c006600acff4e00b1ff7000b5ffa3ff8effd0ffbcffb8ff1c00c9ff1a00d9ff510072008dff1b00e0ff5100e9ff8dff3100deff0d00d9ff90ff0e00d9ffe7ff8dff1700ddff25007400f4ff3b00cdffbdffd5ff1b007900d2ff7200c0ffe0fffaff4b00e6ff1500edff81ff2b00eeffbeff350033007e00efffbaff1d00390092ff96ffeaff2600e9ff0300fbffc6ffe4ff0100cfffe7ff26002000b3ff3700730011001c00c3fff7ffd6ff54001e009fffa8ff6000b3ffa8ffccff0f007e009cff3c005100b2ff3d002a002c002a006200b7ffcaff160091ff1600d1ff0d006e00c1ff250080006200390092ff99ffcfff9affa3ffcfff94ffd3ffaaff72006200a0ffb4ff4c00eeff89ff05006c009bff7c001800ceff62005f00adffa1ffaaffafff57004900c3ffb1ffedffddff10003300edff00005900c6ffb1ff35003e00fcff3c007d000900a4ff44007b009cffd8fffeffb6ff29001c002800580068000b00e1ffd4ff77006d001100a1ff87ff98ffa9ff1f005f002d0091ff2a001b002c006500bcff47001200cdff320019006d00efffb9ff2a00d9ffe9ff7500aaff2e009affa8ffceff1800e5ffefffceffd1ffd7ffb6ff78003700cbff0d00eeffbfff3200d7ffbbff63003500b6ff20001e00ddfff7ff33009cff9cff1d0045000300c0ff8fffa5ff0300feff57004c006600b8fff5ff160020005400e2ff7800c8ffcbff36006b004000dafff0ffbfffb8fff4ffe1ff2100730077007800b0ff80ff610085ffffff97ff1c00bdffbeff7b0093ffeeffc4ff21007b0069007100fcffd8ff530004009bffb7ffa7ff300095ffb9ff97fff3ffd2ff86ff7d0077007c00f0ff6800b3ff7700f9ff5000b4ffa0ff4900f7ffc1ff2c004b0028005600edff1600f6ffa7ffedff84ffe6fff5ffbbff35008fff83ff94ff0d002500aeff23005f002100f1ffc1ff6400f4ffa0ff1c00d8ff2700b4ff50006f00abffabffb5ffbaff17003b00030096ff43006f00150037003500b2ffbaff3b00ebffb1ff8bff8bff7c00cbffe9fff8ff1500fbff180017000c005900a9ff6b00f7ffcfff85ffa1ff3e006f003e0071007700caff1e004400670047003300c8ffccff5f00a4ffabff1f00190080ff00005500d1ff6c0076009eff4600130050005b008effadff7e009aff040095ff9fffa1ff40004100e4ffc2ffb0ffefff1c000d00dcff0f002f00cdffabff37005b00cdff9bffb6ff60003a008dff1b00baff85ff94ff5500e8ffc1ff470093ffe0ff310003006d006400e7ff2e00dbff96ffe3ff67003500d3ff7f00310031002e00e3fffaff30000300d0ff320003002c007000470045000300b1ff31005b001000cafff5ffc3ff2f00c3ffd6ffa9ff3f00dbfff0ff120020005700110051001500270007007b00100028001b00e2ffa1ff1900280011003600710027003b000a007b005d00c7ff85ff85ffd6fffdfff4ffd0ff4f00f7ff89ffacffc6ff9eff3f008cff7a00b3ff3500a7ff2e00c0ffb9ff0f00320096ff7b00b9ffe5ffa7ffc8ff6900fdff43007e00d7ffe0ff7d0077003d009cffaaff5d00dcff93ff9bff4e003100b9ff06001c00d0ffe4fff4ff3a002600ddff3a0095ffd8ff19002a002500450028005500fcffacff98ff83ff0900c2ff580085fff7ffe2ffceffd4ffeeff39009bffd3ffc9ff93ffc4ff730069003900faff1b00f7ffc4ff6c00ecff1a00adff3b0084ffbdff4a0088ff7c005e00b7ff6600f5ff1400f8ff3400f3ff8aff1c006800feff7500d0ffbaff82ff38000700eeff1f000f00eeffb8ff85ff02004e007400f0ffc0ff120012008eff4f001000cdffa8ff3c003d00cfff96ff450027004900daff7f007e00c7ffd1ff04002a001a00afff28003b00ffff5b00beffa9ff35007d003100e7ffcdff0c0093ffdfff92ff64007e00feffbdffabffd8fffcff4c0017003200caff8fff680097ff530046003300cfffa8ffa1ff61006600ccff0a0088ffcdff1d0029007d000100d7ff5f00670081ff2b000400faff3c00e8ffbaff1c008eff9fffffff3f004e00ffff80001700a9ff1600f0ff5000c7ff87ff7b00d7ffcaff32006a00cfffdaffadff9dff6700b9ff3f0008000e0093ff6800220092ffeeff9fffa3ff57009cffe6ff7e007d0094fff2ffefff5a00a0ff6c001e003500a9ffb4ff5a00dbffabff1a003200d2ff2800d7ff250084ffa0ff3a00e2fff1ffb3ff2a004700faff7100b8ff8bff1c0088ff2100f5ff1b00adff5c0033003100d1ffa8ff8cff4600efffbeffd4ff8dff9eff98ffe7ffe1ff7a001400fdffcaff5a003f002d000a0092ff4600270081fffcffadffe9ffc8ffa5ffecffb2ff540086ff0100feff58007b004b006c00d8ff2b0088ffdcff9bff69005300c9ffa7ff51003f007600caff1e009effffff6300d6ff5d00410064009fff37002200460047009affb7ff2100c4ff9cffd8ff7f007d004a00a5ffc2ff5f00c9ffa9ff1300e0ff0800afff260099ffd0ff3f00e3ff490061001000bfffb6ff75009eff31000e002000efff48000400e9ff7400e0ff2b00c8ff1c00e4ffe5ffd2ffa6ffceff7f0080fff1ff5100340042007400c0ffcbffc6ff7700adffbbff2b004d004800e5ff6000b9ffb4fff3fff4ff4b002100beff93ff3f006b00c1ff7600bcff3a006600d9ffdcff0b002100b5ffb5ffa6ff5500c1ff9dff4600e7ff0b009aff97ff5f0028006e005a00d0ff510097ff35006c0097ff0c001a00d2ff6900a5ff96ff19007b004600e3ff2c00dbfffcff5500abffd0ffd1ff95fff1fffaff3c0068009cff110095ff94ff14007a008dff86ffdbff3600cbff1800c0ff090028007500bfffa9ff09000100cdff030010000c003b00b2ff1000afff62002100420090ffe7ffe4ffecffcfff370066002e009cffe7ffc0ff6f008dffc2ff6600e0ff7c003300760082ff26006d001a00d5ff6100c2ff3300a4ffbaff2a00d9ffdbff7d001500bdffbbff4d00bfff41006a000c00b5ff1800acffb6ff68001200a3ffe0fffeff3600ebffccffc2ff2b00f7ff720002001e00670037006300e5ff250098ffbcffb0fffbffd3ffb2ff7f00c1ff82ff3900ccff650045003200eaff03005f000f00ffff5700d1ff1e009eff5200a5ff81ff3100f9ffc7ff3000300045006b004f0062002100dbff9cfff7fff3ff0600bfffa9ff5e0098ff110034002800e9ff0e001e009dff90ff10007b0079001700110089ff95fffaffc9ffbaff9cffa8ff2b00b5ff1f006100e0ff46000800beffa9ff0700adff9aff7700bbffd6ff1900760011007400a7fff0ff5a004200c2ff92ff0900a8ffeaff1000b2fff5ff74001d007e0019001f00220054002200e3ffddff85ff49006f004a0071000f00cfff70009fffbdff4a00d3ff2100beffb7ff56000800efff5800bcff1c00fcffb9ff0300faffbdff0900c8ff24007100f6ff8bff9cffcaff44003f006500f8ff0c00a6ffbcff73008dffb3ff8cffdbffc6ff1f006900f7ff8bffdeff27005b0045009dffe9ff7c003c00bcffdfffeeff6d009aff6f006100faff2600a3ffeaff1300f4ff73003b007d00f5ffe6ffdfff03008bfff7ffc8ff2e0011000f0063005100deffd7ffe7ff76004200a2ff85ffc6ff84ff5b008dff3000aeffb0ff3e009dff79003600caff2b002a0090ff8000a1ffb9ff5c00ecff61005a00610016003f0097fffeffb6ffafff0a00aaffdcffbfff84ff0f00b3ff1b002100c3ffcdffe9ffc8ffd3fff3ffb8ff2300a6ffc6ffe6ff3e009dffb5ff2f00d2ffa5ff7b0010001a0088ff130083ff7800efff1c008000620098ff38003a001c00010081ff5000d7ff8dff3600d7ff070045006c00c0ffe5ff20004d005f00800019009dff5d001300adff9cff1d000b00e2ffadff5200baff1c00350024007a001200ddff74003f00f5ffa8ffb8ffe8ffa6ff3e0028002b00beff71007f009aff780084ff99ff190097ff5e00feff170029001200180086ffb3ff3f003e00f7ff2900efff65000c0015004200d5ff37007e004b00a9ff0200560091ffdfff95ff050098fff6ff2900bbffa5ffe8ff62007d0077005d00adffe0ff6200eeffd2ffdfff8000bbff480049003d00e7ff91ff80009dff3700aeffb3ffb3fffeffbfff42004700e5ff86fff0ffcdffacff91ff32006500b8ff9cff7e00780065003a00d1ffc3ffe3ff75002f0085ff53004100b7ffd9ff75008aff2800470092ff1300240019007b001a00d2ff3300e1ff7d004e00a2ffb6ffcafffcff01000e0046004c006d00f4ff6c000d00d3ffcdff2c005b004600baffb4ff3a0067003500eaff0e004600b5ff8dff350087ff500046003b0029009bfffbff060004008afff3ff17005900caff3b00c5ffefff76007700bdff5100e7ffbbff28001a001c009ffff0ff2800deff6f00150018003d003900d4ff0500d8ff3500d1ff5800a8ff9cff2300b9ffc1ff10006c00bcfffbffe8ff1600c0ff450096ff2800bcff44004d008aff2700bbff370080ffe0ff6e000e00a3ffd9ff3c002f004f006500290080ff650083ff3d00e6ffeeff82ffd6ff84ff410057004500b2fff0ffcefffdff6400220006007100610026005c004a0091ff82ffafffa2ffacff87ff780074009bff80ff85ff0d0086ffd6ff6d002f00b8ff9aff6100b0ff7800bcff4d000500f5ffb3ff110053002300fcffb5ffceffa9ff8aff84ff03008cfff2ffbcff590096ff1d004f00b9ff5f00d2ff9bff5100caff5e006200200034002a002e001e00ecffbdfffdff53004900b5fffdffd0ff15005e00acff2e0085ffbfffd6ff1a00b0ffc6ffb8ff5a0091ffc3ff96ff710087ffccffa3ff6e008dffb3ff1200e2ff490034007e007f00c2fff0ff5d00a6ffaeff6900deff94ff04001c006700efff5d000000a6ffe2ff5d0090ff3f007700660094ff1700e5ff99ff59006c009eff3800c0fff4ff8effb5ff08001f004400caffddff3800d1ff7f00cbff5600c0ff3b00a5ff13007b00eaffa1ff8000a5ff2d00caff7700e3fff2ff56007100d8ffccffadffb3ff50007e002400020087ff130006007400d1ff9eff0400a7ff420036004e00e3ff5c00b9fffcffe0ff23003900d6ff83ff6d000f00ddffefffadff6800210089ff0e00b1ff4e005b00ffff4c000e000f003a008bff9effb6ff2200d4ffa5ffbeffdbffbeffa8ff6500c1ff89ff2300e0ffe5ff8effe4ffe5ff9dff2b005a006100e2ff0200feff6f003500d8ff9fffcffffeffc2fff2ffd5ff270017000a003000d6ff91ff350054005f0093ffefff1700bdffd0ffa0ffccff1400e3ff94ff93ff1400c4ff740029007400d3ff8effc0ffe0ff0400ceff0600000091ff2a0039003c007900fdffacffb4ffeaff2c0084ff45006e00d3ffceffe1ff6c00e6ff37009dffdeff8aff5a004800b6ffc7ff49002e0091ffdeff00003200f6ffd7ff4c00a4ff95ffebff7500230032004300cdff7e0050009bffccfff3ff6300d8ff9cffcbff43009bffb0ff7500a6ffbbff7200d2ff6e00a1ffd6ff3000d1ff94ffddffb8ff91ff86ffa4ff04000c000c00f6fffcffb2ffc4ff96ff5f00290009004b00b0ffe4ff790057007c003100380026009affbdff09001700a9ff6c00d2ff2d000300bfffc7ff0100f5ffbfff1700fdffb2ff3600150060004d0069006000d4ff97ffa8ff11007800220078007600c0ffbeff91ff1a006600610076001e00b7ff5d000400e8ffb7ff52003a007300090002008dff9fff7900ccff3e001700e2ffa5ff6c00efff7f000c00f2ff22001a007a005e0099ffa0fffcffe3ffdaff0a00780049007f008aff4b001200d4ff7a0028002e00c1fff2ff57007e00e3ff9aff11003300d9ff35006f009eff8000dcffabff46003500c4fff1ffe3ffc8ff200027004a008dff7000610078009effcaffbcffaeff99ffa9ff74001500d0ff4d001f0009004d0033002900020096ffccff83ffc8ffb1ff5e0090ffe8ff0600eeff93ffb6ffceffa2ff7200ebff3d00730082ff8dff9ffff7ffd8ff19005600f3ff7700e9ffedffe8fff8ffd6ff5700c8ffaeff1c003b00aeff7000f1ff2500a4ffbeff7a000f006200b3ff92ffb5ff2a00a1ff14001800d8ffddff2200b0ff56001e00f4ffaeff14007400430068002b003c006600570085ff7b005a0081ff09000800a9ff25000a009effdeff3700b7ff4c0087ff75003100100021000c006600c8ff0e002e006a002800a4ff1100a5ff5d002d009fff0200e4ffd5ff5600a5ff9cff030089ff60006500a7ff86ff0800bcfff1ffc1ff160008006900a5ffd2ff7d009eff9bffc8ff5d002d000600d4ff750086ffd0ffa3ff90ffb0ff1d005d00800072001900eaffddff7f00250087ffe3ff98ffc1ffcbff0800daff5e00dbff9cffe2ff1e00e2ff5b00b4fffcffa6ff8eff2800b3ff2b00bbff19007c0051008cffc4ffdaffd0ff430042000400affff7ff7200a9fffbff7f00edff1b0041003b001c00d6ff5f004e00b5ff94ff1c00faff7c00f4ffb5fffeff7100ddffc7ff7400c2ff7c00d1ffebffb7ffc1ff85ff1100e7fff2ff1a00d7ff0b005800dbff360097ff0200b1ffdaff89ff95ff45006c00bfffc7ff3e002e00f3ff92ff0b00bfff4300edff550091ff710000006600100096ff7600c8ffa2fff5ffcdffe4ffe5ff4a00b9ff8aff1000cfffa1ffc1ffc5ff7d00a3ff5b0085ff9eff1600aeff080063002f00ccfff3ff3500ceffbffff8ff5900a5ff4700e6ff48005d007c00f1ffc5ff23000200d2ffd1ffe0ff3b00b0ffd8ff6c0015006d00d8ff71008bfffeffdeffa7ffedfff4ffcaff82ff56006100d9ff1600e9fffaff5900a6ffa6fff5ff780063001000f3ffdeff1b004d00caff1e0081ffa7ffbaff37004000fcff49001e009aff3d003900350097ffa9fff4ff0700e1ffa9fff4ff1e0061000000a7ffdbfffaff67008aff170047007c008fffa2ff3e0071009fff4900e5ff34000b002d009dff9fff4a002e009effc2ff8bffb9ff1d004c009fff10000900e5ff3c004b002a0049004e00b8ffaaff4c002b00a1ffb5ff4500090101000800000009000000040000000400000013010100090000000a000000000000000b0101000a0000000b0000001000000000000000000000007f0f000000000000020101000b0000000c0000008901000000010001000400000083ffffff6afeffff3affffffcbffffffbeffffffd3feffffc5fdffff3fffffff38feffff2bffffff25feffffc5fdffffb9feffffe5ffffff74ffffff79ffffffd5feffffb9fdffff8efeffff51feffffb4ffffff26fffffff1feffff95ffffffb0ffffff99ffffff57fdffff97fdffff1fffffff9cffffffc1ffffff13ffffff95feffff7effffff2ffeffffe2feffff74ffffff24feffffecfdffffb9fdfffffffdffff21ffffff76fdffff85ffffff09feffffbcfeffff19ffffff9ffdffff23ffffff54fdffffa2fdffff9affffff98ffffffa0fdffffaefdffff88feffffcffdffff5bfdfffff8fdffff1afffffff5ffffff51feffffe0feffff83fdffff89ffffffedfeffffc2feffff8bfdffff98feffff52feffff8efdffff60fdffff80feffffdcfefffff5fdffff8effffffccfdffff39ffffffbafeffff19feffff4cfeffffa3fdffff3cfeffffb1feffffc7fdffffbdfdffffafffffff75feffffabfdffff3fffffff58feffffa6fdfffffaffffff9fffffffb2fdffff2afeffff","id":"lower_jpegai/jpegai/hs_uv/2","load":"ok","profiles":["acc32","acc64"]} {"decodes":[{"expect":{"refuse":"field_range"},"inputs":[{"data":["33","28","-28","32","-8","17","5","-12","32","-15","-31","32","0","26","32","-31","3","8","-2","0","15","32","-4","-31","15","20","-20","32","9","32","-12","32","-1","32","-31","0","2","0","14","0","-26","32","-24","-7","23","30","32","22","23","9","32","-31","0","-31","-31","-31","-5","18","32","6","-13","-31","-31","-31","32","-16","-31","8","-16","32","-31","5","-28","-24","32","-3","-3","5","32","17","31","0","0","0","32","32","5","-31","10","-31","-31","-31","-31","0","-24","-31","-12","32","32","9","-31","7","-31","-30","28","30","32","30","-31","-31","32","-30","32","32","-4","-31","32","0","-23","-10","-31","32","-31","-31","32","32","-31","1","-19","32","-31","-14","-24","0","32","0","-31","-31","0","32","32","0","32","-13","25","32","32","27","0","32","-31","32","32","0","-31","-31","-31","-31","32","32","-31","-31","9","32","32","-31","0","-6","-23","0","17","7","-31","0","-12","32","12","12","32","-31","-31","32","-31","-31","-31","-19","-5","-18","-31","-31","25","0","-28","10","32","-23","32","7","32","32","7","32","0","-31","32","-17","21","-31","18","4","-31","-31","17","-12","-30","9","0","-31","-6","32","-31","32","-31","-31","-31","-31","-31","-23","13","-31","0","0","32","-31","-31","5","0","32","-31","-31","-31","-31","32","27","17","-31","0","0","32","-31","32","-31","-26","-31","0","24","-31","0","32","24","-31","32","-31","32","14","-31","-29","-18","-31","32","13","32","-31","-1","-31","-31","32","32","-31","32","32","8","7","-24","32","-16","22","32","32","-23","-31","32","6","-31","-31","-19","-31","-31","-10","-31","-6","-28","-31","32","-13","-31","28","31","32","22","-31","-31","-31","-31","-18","19","17","-31","-31","32","-31","32","-4","-31","11","32","-31","32","-31","32","0","-10","-31","-31","-31","-31","-31","-20","-21","-31","32","19","32","-31","0","-31","32","32","0","32","-31","16","28","18","32","-31","32","-31","-31","-31","32","-31","24","6","3","0","0","21","-31","0","-12","-7","-30","0","0","-31","-20","6","32","-17","-23","-14","-10","22","32","0","32","-31","32","-24","0","0","0","-31","-12","32","0","32","25","32","-31","-31","27","-6","6","0","-10","-24","32","25","32","32","-7","0","-31","32","32","-31","0","10","32","0","6","-30","-31","-15","32","-31","1","-31","32","19","32","32","-31","30","-31","0","32","-24","-31","-31","-31","-8","27","11","-31","-14","0","-3","32","8","-24","32","32","32","-1","22","-31","0","-31","-23","15","-31","32","-31","-31","32","-31","0","32","0","-31","3","-31","32","-31","-31","-31","-31","-12","-1","-8","32","30","-31","31","32","3","-31","7","32","32","-31","0","24","18","32","32","-31","-31","3","32","32","23","32","32","-31","25","-9","-22","32","-31","-31","-31","0","22","32","32","11","-31","-19","4","32","32","13","11","21","32","32","-31","32","-31","-10","12","-31","-31","-8","32","0","32","27","-11","-9","32","-31","32","32","-31","-31","32","-31","-8","0","-14","-31","-31","22","11","-31","16","6","12","32","0","-31","6","32","32","0","32","32","-31","-25","32","-26","-31","-31","-31","-10","18","-31","32","1","22","-31","-31","-31","32","-19","-15","-12","0","-31","-3","0","3","31","-8","-31","-15","32","0","-31","5","-9","-31","-31","-31","-31","-31","32","-24","-13","13","32","32","-29","-15","-31","-11","0","18","32","23","32","9","-6","1","-31","-1","25","32","3","-14","32","32","0","-2","-31","9","32","16","-31","-31","32","-31","24","-17","32","19","-31","32","-31","6","-27","-16","26","-11","32","0","-31","-24","24","-31","-31","32","0","-31","32","0","-31","18","0","32","-31","10","-8","32","-24","-31","0","-31","20","-31","-12","0","-17","32","-3","32","-21","32","-31","32","25","-31","6","-31","-1","-25","-11","29","32","-1","-31","11","-23","28","8","-22","0","0","32","32","32","32","32","2","32","0","-10","-31","32","27","32","0","32","32","29","-3","-15","-31","32","-31","-26","-18","21","32","9","11","-18","-11","13","-9","32","32","-31","-2","-3","-31","-17","-31","15","-31","32","32","-1","0","-31","-29","0","0","12","32","0","10","0","-3","32","32","-31","23","-31","32","21","-12","-7","32","-11","0","-18","13","32","4","32","32","-31","17","32","-21","32","-22","32","-31","0","32","0","0","0","-13","32","-31","32","0","-28","32","0","-31","0","32","0","32","-31","5","32","0","-31","32","-15","-31","32","32","-30","22","3","-31","32","-31","-23","5","32","19","24","-31","32","0","32","-31","18","32","-31","-31","4","-31","-31","10","-17","-31","-20","5","32","-31","17","19","9","6","-31","4","22","19","-31","0","-31","32","-6","11","-31","32","0","32","-31","32","7","-6","32","0","32","-24","-31","32","-31","-31","-31","-26","32","15","-31","32","-31","0","22","-31","32","32","-7","-31","17","0","-31","-24","1","32","28","-14","-31","16","-31","32","32","29","26","32","30","-31","32","-31","10","32","-31","32","2","32","-31","-4","-21","32","17","-31","23","0","0","-31","32","-31","-31","-31","-31","32","-31","0","-31","1","32","-8","-5","32","-31","32","-31","32","-31","10","-31","0","20","30","32","24","32","0","-31","-17","10","0","-29","12","-31","-31","-13","-19","2","-4","32","-31","0","0","-7","32","-22","-20","32","-31","0","-31","17","-31","-31","32","32","32","-31","0","32","32","-31","-31","16","-10","-31","0","-31","-25","32","-10","-11","-26","-31","-1","32","32","-31","0","32","-31","-31","-31","0","-21","-18","2","32","32","32","-1","7","32","20","0","32","-31","0","9","-24","0","32","-19","-10","32","-31","-19","15","11","22","-31","32","11","32","32","32","-9","28","-31","-31","-31","-31","-31","-18","20","-27","-31","-31","32","-31","32","32","-31","24","-31","21","22","-20","-31","-20","32","29","-31","32","0","5","32","25","-31","-31","-31","-9","32","5","4","-31","25","-31","-31","9","-9","-31","-31","32","-31","-31","-31","-31","31","14","32","-31","-21","-4","32","32","-20","-31","-31","32","32","0","-7","15","9","32","0","24","-15","18","32","-26","32","-12","32","-31","22","0","32","32","-31","-31","18","-31","32","32","0","0","32","32","25","32","32","-7","-27","12","-31","32","0","0","32","-31","32","0","0","-31","-31","8","32","-25","29","12","-8","0","-2","-10","4","-31","0","-31","-15","-31","-17","-31","-31","-31","32","-31","-31","32","32","6","0","1","-31","32","1","-5","-31","32","-3","32","32","15","0","14","2","-8","4","4","0","32","5","0","-31","-31","-31","-9","32","32","16","-31","-31","2","-31","20","32","32","0","-24","-8","2","32","-12","8","32","24","0","32","-16","-31","32","1","25","-12","-31","-31","11","-28","32","-13","32","-31","-31","32","-31","-9","-31","32","-21","32","-31","32","-31","-5","-30","22","-31","32","0","-21","32","32","-31","32","32","-27","1","19","-14","21","32","32","-1","0","24","32","-7","-9","4","-31","32","-31","32","-31","-31","25","-31","32","-31","32","32","0","32","32","0","-10","10","-4","10","-31","32","-31","0","0","-22","32","-22","-12","26","32","32","-31","29","-31","-12","-17","32","32","-28","-4","-1","6","-31","-18","4","-31","32","6","-31","-11","0","-31","-31","32","-31","-5","-31","-20","-31","0","0","-13","-31","-10","0","32","9","-31","-31","-17","21","-31","32","4","4","32","0","-31","32","32","-31","0","-31","32","0","0","-17","32","-11","32","25","14","0","15","-31","32","-6","32","-31","32","-31","32","-13","-28","-31","-22","-31","-31","32","13","25","7","-23","-19","29","32","-12","-31","2","-1","0","15","9","32","32","-31","-31","11","32","32","-31","32","-18","0","-31","1","-31","32","15","-31","-31","32","-5","32","1","0","3","-31","-31","-24","8","-18","-16","-21","-13","-31","28","32","-15","32","-13","14","30","0","9","29","18","32","32","-31","-31","0","-31","-29","32","-15","32","-31","-31","-31","-17","32","14","0","7","27","-31","32","6","-1","0","32","-2","9","32","32","-31","32","12","32","0","-31","-31","-26","0","-17","19","-14","32","32","32","-31","-22","32","3","-31","-31","-31","32","-9","8","32","4","32","14","-31","32","32","-31","32","32","32","4","-11","4","-25","-31","32","0","0","32","-31","-25","-31","32","-31","11","32","32","20","-31"],"shape":["96","4","4"]}],"scalars":[]}],"graph":"57484731010100000d0000000c0000000100010000000000000000040000000000000000040000000400000000000000000000000000000000000000000000000c0000006000000080020000e1ffffffffffffff20000000000000006000000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000200000080000000000000000000000000000000000000000006000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000006000000080000000000000000000000000000000000000000b01010000000000010000001000000080ffffffffffffff7f00000000000000010101000100000002000000f6000000020000000100000001000000010000000100000000000000000000000100000001000000000100020004000003030400000005000000b064efea12833a2b7e933ff3c19093677e2fdf782efd542166da3310f779259a524856f7612b81d394feb9105f2048eda5100f97bb57e5c974e98d607a02fc0f2ceb9dc78ec4169af3e9d2f629ba0af50d1f0c97fdeb19e7c32d7c5b4af2dda105903c27aca9f292850f6dfad16c0ad722a91db1aeea98e9c18f5acda7ae320cea05d45502f9dafff7e654bcac01d9612114370a37005620499c57cba133874f89614cc56ffd55feaf3ad2d29ca4798907803e5a5d2343aca5cbeb285b52cce00c0101000200000003000000000000000b01010003000000040000001000000080ffffffffffffff7f000000000000000101010004000000050000005a00000002000000030000000300000001000000010000000100000001000000010000000100000000010002000400000b0a0a020000266fffff5f9c1f6d84c5d0246ad1a34e94562b709cbcdcdc9541b4f74a214d2d9a67c1090c8679180c0101000500000006000000000000000b01010006000000070000001000000080ffffffffffffff7f000000000000000101010007000000080000002c36000000060000010000000100000001000000010000000000000000000000010000000200000000010002000400000702030305070702050207020404010306070104020705020702030103020701040106020706030301020307020402050603070402060403020203070407020207010406030106040705030606030307020706070404050202050305050507020304010703010106020302060405060202040606020107030607060506010207030201010207020203050703070603010107010502040602070204030604010706050501050304020507050603060503020506040707010303030506060506030405030105060404050205050305030506050601060306020102020605050202020105070601040305020701040602060602010303050202050106030107060506040107010407020607030103070704070605010303030201040602040502070404010704030405030301030601050601040401070703060705040402060105030106020305040502050204030305010701070601030105030405040605030306040305040602050504040703070506040505010704040606040705060404040302070103060107040407020607050403070607040502010605040102010603020602050201060105070206010306060106010101040607010704050602060301020403050504060104020502030403010302040507010403020401040705050701020202040103030505060501060107040506050701020407060604010601020504050301070707030505060403020707070305020606040105050702070301020303020707060601030603060404030301040203050104060505040303050205070304070601030301040602030701050405060205050107010502010506010701010403020207040702050701020201010201070703050705020102010107070701070203070706010502010601020706030505020203020304070407030602020503060301040103060103060306060704050706070503050202060705060704040506070401030706070507030404040705070203060702060603060707010405040706070704070504030603070704020107060703020406030404020405020206030502070504020501070702030105070701010501030204030105010602020304030406040704050105020704070103040402040507030702020505010703010605030404030503050705040301010504010204010407040201030304060202010705070203030205070207070302060705010501030404010306040307010501040707040501020102040601020104030202070205040104010301040101050205020204010504050202070606060505030702050401020302040207040207020604070603070202020105040202060702050101060402050606020202050207050306030103030102050303040706020102040302050404050506030501010101040205070104050504030604010406020207060107040405030502050202070105010103060401040502040601040104020101040606050702070702070401020503020706030407070401050303060406070304010307060602010305010201020401030603040604040405050707060207070707070301060202020601040201040102040503040105050503060207030506030407050202060207050306040301070201030605040701010102030303030703030102050203040202010705030607020301040302050604040407070106070402030306050706010703050705010204070601070305010306020404010303070704030406010206070605070503050505050301010502030703050701070202010603030505010103050207070501060602060704020504070606040103010506020402030603050204010203070102020407050505020307040504070401040702010101060307030602050106010105010103070507060402010601020703070506060207030307050107010206070502060104030107040706060403030304050305060405040703050102070607060707050207070102020502020501040102020202050504040501010706050207040202010502020302070505060706070507050307060505020106060101010203020407060403070504060305030703070205073c000000130000002d0000003200000020000000100000002c0000002d000000220000003b00000034000000040000000200000027000000290000002b0000001e0000001c0000003c000000220000000500000011000000030000000a0000003c0000002f0000003f0000003e000000020000002e0000002d0000003a0000000100000025000000090000002300000026000000120000001100000007000000270000003e000000050000003b000000270000002e000000090000001e00000038000000110000001a000000250000003d0000001800000014000000030000002c0000002f000000080000000c00000020000000330000001900000034000000390000001400000030000000130000002e0000000c0000001f0000001d000000040000002e0000001f0000000a00000022000000230000001a000000020000003d0000003100000019000000070000001a0000001f000000040000001b000000220000000c000000190000002400000020000000060000000800000035000000110000003e0000000e0000002e0000001f000000210000000f0000001c0000002f00000033000000200000002c0000001f000000230000000a000000330000001a0000001d0000003e00000001000000190000002900000008000000090000003a00000032000000010000001f0000001f0000001300000035000000200000001b000000160000000b00000009000000290000003600000001000000390000000200000034000000260000003d0000001f0000002f000000130000001400000015000000150000002e000000090000003200000024000000060000001c000000150000001c000000210000002d0000002a000000080000000f0000001c0000001c0000003d000000330000000300000021000000340000001b0000000d00000033000000050000002a0000000a000000180000002d000000270000003d0000000d000000370000000b0000001e0000003d0000003100000039000000350000001e0000001a0000001c0000001e0000001500000021000000340000002f0000003c0000002a000000200000001500000038000000190000002d000000020000003d0000003400000018000000320000001c0000003e00000037000000030000000e0000001b0000001600000020000000150000003f00000013000000360000002c00000038000000390000001800000011000000280000002100000021000000170000003d0000001000000006000000130000003b0000002800000034000000310000002b00000035000000300000000100000021000000400000003500000008000000250000003e000000240000002f000000190000001f000000260000003a00000026000000050000003400000008000000360000003a000000310000000f000000080000003d000000230000003c000000170000001e000000040000002200000020000000150000001b0000003b0000003d0000003e000000060000001c0000002100000019000000180000001d00000022000000010000002300000008000000030000003600000034000000180000003d0000001b00000013000000050000000b0000002500000008000000250000002500000038000000290000002400000032000000110000003d0000003300000027000000320000000f0000000b000000250000003a0000000d0000000c000000370000003000000031000000200000000200000006000000200000002100000031000000100000001400000037000000250000002100000025000000160000003d0000002c00000018000000400000000f000000260000001e0000003e0000002500000036000000290000002b0000001f0000000a000000380000003d0000003b0000003a000000290000000d000000320000000b0000001f000000090000003700000035000000360000003a00000017000000120000001a000000360000001300000035000000050000000200000025000000120000001700000036000000140000000a000000150000002c0000000f0000000f000000020000002800000034000000020000003a000000340000003200000015000000150000000d00000031000000020000001f00000029000000060000003400000020000000180000001d0000002f0000003f0000003d000000320000000c0000002d000000100000003e0000002300000002000000120000002c000000220000002b000000180000003a0000003a00000002000000210000001900000021000000390000003e000000360000001e00000004000000260000002a0000000200000005000000120000000700000002000000220000002a0000000d0000001100000019000000350000002f0000000b000000220000000e0000003f0000002a000000130000001700000010000000010000002d000000360000003d0000002b0000003a0000001a000000300000000c0000000c000000180000001a0000001c000000280000002a0000003a0000001c0000003f00000028000000320000001900000031000000270000002f0000003f00000008000000320000000300000023000000130000001b000000350000002a0000000f0000000100000035000000350000003e0000003e0000002c000000150000002a000000270000000b00000012000000340000002a0000001b0000002c000000190000003b0000000a0000000c0000003100000037000000060000003f000000030000003b000000100000000d000000070000002c0000003f00000015000000020000003100000035000000030000000a0000003b0000003c0000001c000000170000000e00000005000000380000001e00000038000000400000003a00000024000000200000001e00000022000000300000002b000000170000000d0000003f0000001200000028000000110000002900000005000000070000001a0000000e0000000c000000270000003800000031000000290000003800000025000000030000003e00000012000000040000001100000027000000370000002b00000033000000070000002e000000330000003a0000002b0000003f0000002a00000028000000350000000e0000003b0000001200000015000000390000000f0000000b000000390000001e0000002400000035000000260000002000000002000000160000002c00000019000000260000003d0000003c000000150000000b000000120000003f00000016000000010000001400000011000000290000001b0000001b000000300000002c000000370000001000000014000000100000001d0000003700000013000000160000001c000000060000003000000036000000080000002f0000000e000000150000003e00000003000000300000001b0000000200000008000000150000003000000008000000310000001400000002000000230000000c0000001c0000001e000000140000001f0000001000000002000000100000002a000000100000001400000033000000040000000a00000016000000220000000800000019000000380000000a00000004000000210000002a00000035000000090000002000000030000000380000000d0000003b00000004000000040000002b0000000c0000000300000038000000120000000a000000210000001a000000190000003d0000000300000007000000210000003f00000020000000020000003b00000026000000240000001d0000000d0000001d00000034000000050000003c000000020000003f000000390000003f000000390000003c0000002f000000190000002e0000000b0000000b00000036000000100000003e00000015000000330000000e0000000c0000003e0000003b0000001d0000000f0000000f000000210000003700000033000000400000001600000016000000360000001e0000002000000034000000070000001d0000000b000000090000002c00000022000000260000003a00000037000000100000003500000011000000360000001a0000003e00000026000000060000002f0000001c00000017000000140000003000000036000000350000003a00000021000000400000002e000000190000003400000034000000060000001b00000015000000010000003900000007000000120000003a0000002f0000000500000001000000140000002d0000001000000029000000360000000d000000280000002000000018000000250000000d00000017000000250000002b00000007000000180000000a0000000100000012000000070000001c0000002b000000280000001f00000023000000120000000d0000000b00000037000000320000003e000000010000003c0000000b0000000d0000002c00000029000000260000002e00000019000000350000000b000000030000002100000009000000380000001f0000003a0000003e000000260000001c00000001000000280000002e0000001f0000003e00000039000000100000003300000026000000370000002f0000000c000000110000002c000000310000003e00000036000000200000003f00000033000000170000001a0000003c0000002400000029000000050000000500000040000000040000000200000033000000180000000c00000029000000130000001a0000003700000033000000190000003e0000002c0000000d0000000b0000000c0000003a0000002a000000030000001c0000001e0000003d00000018000000200000003a0000002400000022000000310000003f0000000e000000100000001b00000036000000120000002b000000030000001c0000002c000000010000000400000021000000070000003e0000003b000000390000001e0000000b0000003d0000001600000009000000020000003700000017000000030000002d0000002a000000300000001b000000030000000e00000013000000280000003300000021000000050000003e0000001900000023000000160000002d0000000e0000003b000000360000002c000000260000002d0000000800000028000000340000002a0000001f000000300000002c0000000f0000000400000021000000050000000d00000024000000240000003300000038000000230000000a00000040000000050000001a0000003e0000000f0000002400000011000000350000002100000012000000140000000f000000030000000f0000003b0000003b00000035000000050000003800000005000000010000002c00000012000000090000001a000000030000002e000000060000003d0000003700000011000000400000003400000006000000210000001f00000032000000230000002d0000003c0000003700000014000000090000000900000010000000020000000100000012000000290000001800000028000000350000003c0000002b0000002e0000003b0000003b000000050000001e00000018000000020000000e00000007000000120000000500000037000000370000002300000030000000170000000a0000002b00000032000000360000002c000000300000000e0000000f00000020000000160000000c0000002a00000029000000070000003d0000003e000000220000002a00000025000000080000003a000000250000000100000001000000350000000b0000003a0000002c0000003c000000190000001d0000000c0000000500000027000000030000000a00000031000000330000003500000022000000100000000f0000001100000004000000040000001a00000034000000290000002e0000001c0000002f00000007000000070000000b0000002b00000003000000020000002000000017000000180000003a0000001500000023000000260000003a0000003d0000001e000000300000003d000000350000000d0000002c0000003f00000014000000210000001d0000003900000012000000290000001f000000400000002d000000210000002d0000002c000000270000003d0000001e000000140000000300000009000000360000003e0000000f00000027000000390000003a0000000100000018000000330000002d000000210000000c0000000100000008000000280000000b0000000b0000002b000000140000003a0000003c0000003a00000018000000010000003000000017000000080000002c000000150000002c0000001f000000260000002f0000003e00000037000000190000001200000012000000140000003a000000300000002e00000011000000330000000f0000003f0000002500000023000000050000002900000040000000090000003300000038000000330000003900000039000000320000002f000000370000001b00000017000000260000001e0000003100000038000000150000000a000000290000002400000034000000360000002b0000001e00000029000000140000002b0000003a0000002f0000002b000000030000003a000000020000002e00000022000000250000003a0000000f0000002a000000370000004000000028000000060000000e0000000c0000001e0000003b000000230000002c0000000d000000170000003c000000360000003f0000003400000006000000390000000b0000001f0000002d000000110000001e00000028000000200000001b0000003900000021000000310000002d0000003d000000030000002900000005000000240000000d0000002a0000003b000000120000001500000020000000180000001f0000001a000000100000002d0000000c000000100000000e0000003e00000029000000290000000e000000310000003b00000032000000200000001f00000004000000330000002b0000002f000000020000002d000000130000003d0000002b00000028000000250000002a0000000b0000002a0000002200000013000000220000000500000031000000090000002e0000002f0000000a0000002f0000000f000000250000001b0000000e0000001d000000310000001c00000024000000210000001c0000001d000000180000001c0000001600000040000000270000002b000000030000002c000000080000000c0000002e000000260000000800000003000000380000003e0000001b000000150000002d0000002300000015000000190000000d00000035000000270000000e000000160000001b0000001c0000001c00000032000000340000000c0000003a000000210000002d00000003000000390000001f000000040000003000000025000000170000003e0000002e000000360000002a000000010000000b0000000a0000000a0000002000000017000000150000001b000000200000003c000000110000001c0000003f0000001a000000390000003c0000001e0000003b000000260000002d0000002b000000300000003600000005000000210000001500000032000000230000003a0000002e000000090000001f000000300000000a000000040000002c0000003000000001000000280000002b0000000c000000170000001c000000030000002a00000004000000320000002c000000330000000d0000000c00000021000000070000001a000000280000003200000029000000290000003a00000018000000240000000a00000034000000150000002a000000320000003a00000002000000280000002b0000001a00000004000000380000002f00000005000000340000002b0000003d000000270000000b000000240000002100000004000000150000002c00000038000000210000002f0000000a00000034000000160000004000000001000000370000003d0000001400000022000000310000003400000001000000230000000a000000260000000e000000220000000d000000380000001f000000010000001600000027000000400000000f000000080000000d0000001b000000230000003800000040000000400000003b0000002a0000002000000016000000360000002200000038000000350000001800000009000000070000003d0000003c0000000a0000001f0000001c0000001a000000320000002b0000002d0000000d00000008000000300000001c0000003f000000030000002a000000340000003a00000022000000140000000f0000001b0000002800000020000000080000002500000016000000330000002b000000050000002f000000100000003c0000002a0000000800000034000000210000000d00000021000000080000001c0000003d000000060000003b000000240000000e000000330000001a000000010000003f000000020000000a000000080000001a0000002e0000002e0000001e0000000c00000035000000280000000100000020000000200000001b00000009000000180000002700000021000000130000002f000000130000002e000000370000003d000000160000003d0000003100000024000000060000000d0000001d0000003c000000080000002f0000003500000011000000170000003f00effffbff9cffa2ff38007300edff01005d001e000100b6ff11004800abff89ff3b00c6ff96ffd6ffa2ff02003c003d00d0ff7c00c4ff2c00caffc0ff83ff85ffbcffcdffadffa3ff150030001f00250038009dff770013004b005600bcff3300a5ffadffceff85ffc2ffe0ffb9ff9affe3ffcdff8fff35007c007f007300acff5900abff8000eeff5c00bcffacffbbffdaff710016001e0080008fff9bff4f00d1ff590001005400b5ffafffb4ff0700a0ffb1fff2ffb4ff6b00f5fff0ffe8ff5100a2ff7f005700beff1e00430052007500ecff51005500ccff5c006500eeffbbff8dff01000000f9ffceff3800f3ff60009eff80ff89ffd1ff710026009bffbcff2c001300dfffaeffd0ff98ffb2ffb3ff38006100b7ffd3ff1300ffff6500e8ffbdff4300a7ff5c0050003e00f6ffebfff1ff7a0084ff3d008cff11006e00f6ffafff010088ff5d000700bdffd5ffb0ff500081ff310096ff93ff6d002600d6ff5c002300d8ff33002b001e008aff9dff7d006800b3ffbcfff7ff7d0038008eff27000f003a00d1ff1e0089ff35003e003d00240035003700d1ff75002b00a7ff680082ffc8ff88ffd6ffbdff0200cdff5c00ffffe9ffc3ff5d00cbff1d006900b7ff3b000b0015007b002b00730088ff06001800a0ffebff7500f8ff60003a00ddff8fff8cff9eff3a005700e5ffebff5500fbffe8ff3900abff1e007100c3ff13005e006d004500a3ff90fff7ff250052000200dfff9dff3e003c00c9ff68006000b7ff83ffe5ff270090ff4d00680090ff7a00470099ffa2ffabff7900f3ff7e0090ff0300e7ff9bff97ff28002b00c1ff180087ff5f009cfff4ff37006b0087ffaeff680096fff5ffc7ff00004e0094ff76009fff94ffb2ffb8ff88ff91ff9eff6d00c7ff2400d6ffc9fffaff7700bbff3b0085ff0e00b2ff240019007e00ebff720038004b003800390016002200640033003a00bdff64005700ebffbcffc6ff2f007700faff89ff08008dffc8ff3b00ffff3100daff4a00fbfff7ff2400f4ff2d001a000900fcff0c0032003600340038006d002a008aff7a005e0023007b006100b1ff54002c00d0ffc1ff7f00540057001d001d00e0ffb5ff0f00dcffc8ff3100b3ff6c00e0ff5800b6ffd8ffebffa0ffccff81ff43005f001300e7ff1100d9ffb9ffc4ff63002c00720087ff7d00aaff0f00a4fff7ff10009dff2500d1ffadfff8ff08003c0086fff2ff5c00f3ffe3fffbff18002a005900ecff6600a1ffb6ffd8ff700023007500deff0e00e9ffb8ff71003c00aaff8dff57003700b8ff4c00390047005e00e3ffa0ffaafff6fff2ff94ff6d00e4fff5ff70003900140095ff97ff5e0021001700c2ff9affd2ff8aff1d00760027003c00340002005800a0ff2600d0ffbfff6c000000320083ff8fffc1ff62006a004900c8ff94ff24001000efff5e00afffaeffbaff0000dbff6c004900adffbbff7600360053007f0025001900deff26004f0097ffdeffc1ffebffe2fffcffedff86ffa3ff84ff56003c00ccff94ff11006f00a5ff27002f005c006600acff4e00b1ff7000b5ffa3ff8effd0ffbcffb8ff1c00c9ff1a00d9ff510072008dff1b00e0ff5100e9ff8dff3100deff0d00d9ff90ff0e00d9ffe7ff8dff1700ddff25007400f4ff3b00cdffbdffd5ff1b007900d2ff7200c0ffe0fffaff4b00e6ff1500edff81ff2b00eeffbeff350033007e00efffbaff1d00390092ff96ffeaff2600e9ff0300fbffc6ffe4ff0100cfffe7ff26002000b3ff3700730011001c00c3fff7ffd6ff54001e009fffa8ff6000b3ffa8ffccff0f007e009cff3c005100b2ff3d002a002c002a006200b7ffcaff160091ff1600d1ff0d006e00c1ff250080006200390092ff99ffcfff9affa3ffcfff94ffd3ffaaff72006200a0ffb4ff4c00eeff89ff05006c009bff7c001800ceff62005f00adffa1ffaaffafff57004900c3ffb1ffedffddff10003300edff00005900c6ffb1ff35003e00fcff3c007d000900a4ff44007b009cffd8fffeffb6ff29001c002800580068000b00e1ffd4ff77006d001100a1ff87ff98ffa9ff1f005f002d0091ff2a001b002c006500bcff47001200cdff320019006d00efffb9ff2a00d9ffe9ff7500aaff2e009affa8ffceff1800e5ffefffceffd1ffd7ffb6ff78003700cbff0d00eeffbfff3200d7ffbbff63003500b6ff20001e00ddfff7ff33009cff9cff1d0045000300c0ff8fffa5ff0300feff57004c006600b8fff5ff160020005400e2ff7800c8ffcbff36006b004000dafff0ffbfffb8fff4ffe1ff2100730077007800b0ff80ff610085ffffff97ff1c00bdffbeff7b0093ffeeffc4ff21007b0069007100fcffd8ff530004009bffb7ffa7ff300095ffb9ff97fff3ffd2ff86ff7d0077007c00f0ff6800b3ff7700f9ff5000b4ffa0ff4900f7ffc1ff2c004b0028005600edff1600f6ffa7ffedff84ffe6fff5ffbbff35008fff83ff94ff0d002500aeff23005f002100f1ffc1ff6400f4ffa0ff1c00d8ff2700b4ff50006f00abffabffb5ffbaff17003b00030096ff43006f00150037003500b2ffbaff3b00ebffb1ff8bff8bff7c00cbffe9fff8ff1500fbff180017000c005900a9ff6b00f7ffcfff85ffa1ff3e006f003e0071007700caff1e004400670047003300c8ffccff5f00a4ffabff1f00190080ff00005500d1ff6c0076009eff4600130050005b008effadff7e009aff040095ff9fffa1ff40004100e4ffc2ffb0ffefff1c000d00dcff0f002f00cdffabff37005b00cdff9bffb6ff60003a008dff1b00baff85ff94ff5500e8ffc1ff470093ffe0ff310003006d006400e7ff2e00dbff96ffe3ff67003500d3ff7f00310031002e00e3fffaff30000300d0ff320003002c007000470045000300b1ff31005b001000cafff5ffc3ff2f00c3ffd6ffa9ff3f00dbfff0ff120020005700110051001500270007007b00100028001b00e2ffa1ff1900280011003600710027003b000a007b005d00c7ff85ff85ffd6fffdfff4ffd0ff4f00f7ff89ffacffc6ff9eff3f008cff7a00b3ff3500a7ff2e00c0ffb9ff0f00320096ff7b00b9ffe5ffa7ffc8ff6900fdff43007e00d7ffe0ff7d0077003d009cffaaff5d00dcff93ff9bff4e003100b9ff06001c00d0ffe4fff4ff3a002600ddff3a0095ffd8ff19002a002500450028005500fcffacff98ff83ff0900c2ff580085fff7ffe2ffceffd4ffeeff39009bffd3ffc9ff93ffc4ff730069003900faff1b00f7ffc4ff6c00ecff1a00adff3b0084ffbdff4a0088ff7c005e00b7ff6600f5ff1400f8ff3400f3ff8aff1c006800feff7500d0ffbaff82ff38000700eeff1f000f00eeffb8ff85ff02004e007400f0ffc0ff120012008eff4f001000cdffa8ff3c003d00cfff96ff450027004900daff7f007e00c7ffd1ff04002a001a00afff28003b00ffff5b00beffa9ff35007d003100e7ffcdff0c0093ffdfff92ff64007e00feffbdffabffd8fffcff4c0017003200caff8fff680097ff530046003300cfffa8ffa1ff61006600ccff0a0088ffcdff1d0029007d000100d7ff5f00670081ff2b000400faff3c00e8ffbaff1c008eff9fffffff3f004e00ffff80001700a9ff1600f0ff5000c7ff87ff7b00d7ffcaff32006a00cfffdaffadff9dff6700b9ff3f0008000e0093ff6800220092ffeeff9fffa3ff57009cffe6ff7e007d0094fff2ffefff5a00a0ff6c001e003500a9ffb4ff5a00dbffabff1a003200d2ff2800d7ff250084ffa0ff3a00e2fff1ffb3ff2a004700faff7100b8ff8bff1c0088ff2100f5ff1b00adff5c0033003100d1ffa8ff8cff4600efffbeffd4ff8dff9eff98ffe7ffe1ff7a001400fdffcaff5a003f002d000a0092ff4600270081fffcffadffe9ffc8ffa5ffecffb2ff540086ff0100feff58007b004b006c00d8ff2b0088ffdcff9bff69005300c9ffa7ff51003f007600caff1e009effffff6300d6ff5d00410064009fff37002200460047009affb7ff2100c4ff9cffd8ff7f007d004a00a5ffc2ff5f00c9ffa9ff1300e0ff0800afff260099ffd0ff3f00e3ff490061001000bfffb6ff75009eff31000e002000efff48000400e9ff7400e0ff2b00c8ff1c00e4ffe5ffd2ffa6ffceff7f0080fff1ff5100340042007400c0ffcbffc6ff7700adffbbff2b004d004800e5ff6000b9ffb4fff3fff4ff4b002100beff93ff3f006b00c1ff7600bcff3a006600d9ffdcff0b002100b5ffb5ffa6ff5500c1ff9dff4600e7ff0b009aff97ff5f0028006e005a00d0ff510097ff35006c0097ff0c001a00d2ff6900a5ff96ff19007b004600e3ff2c00dbfffcff5500abffd0ffd1ff95fff1fffaff3c0068009cff110095ff94ff14007a008dff86ffdbff3600cbff1800c0ff090028007500bfffa9ff09000100cdff030010000c003b00b2ff1000afff62002100420090ffe7ffe4ffecffcfff370066002e009cffe7ffc0ff6f008dffc2ff6600e0ff7c003300760082ff26006d001a00d5ff6100c2ff3300a4ffbaff2a00d9ffdbff7d001500bdffbbff4d00bfff41006a000c00b5ff1800acffb6ff68001200a3ffe0fffeff3600ebffccffc2ff2b00f7ff720002001e00670037006300e5ff250098ffbcffb0fffbffd3ffb2ff7f00c1ff82ff3900ccff650045003200eaff03005f000f00ffff5700d1ff1e009eff5200a5ff81ff3100f9ffc7ff3000300045006b004f0062002100dbff9cfff7fff3ff0600bfffa9ff5e0098ff110034002800e9ff0e001e009dff90ff10007b0079001700110089ff95fffaffc9ffbaff9cffa8ff2b00b5ff1f006100e0ff46000800beffa9ff0700adff9aff7700bbffd6ff1900760011007400a7fff0ff5a004200c2ff92ff0900a8ffeaff1000b2fff5ff74001d007e0019001f00220054002200e3ffddff85ff49006f004a0071000f00cfff70009fffbdff4a00d3ff2100beffb7ff56000800efff5800bcff1c00fcffb9ff0300faffbdff0900c8ff24007100f6ff8bff9cffcaff44003f006500f8ff0c00a6ffbcff73008dffb3ff8cffdbffc6ff1f006900f7ff8bffdeff27005b0045009dffe9ff7c003c00bcffdfffeeff6d009aff6f006100faff2600a3ffeaff1300f4ff73003b007d00f5ffe6ffdfff03008bfff7ffc8ff2e0011000f0063005100deffd7ffe7ff76004200a2ff85ffc6ff84ff5b008dff3000aeffb0ff3e009dff79003600caff2b002a0090ff8000a1ffb9ff5c00ecff61005a00610016003f0097fffeffb6ffafff0a00aaffdcffbfff84ff0f00b3ff1b002100c3ffcdffe9ffc8ffd3fff3ffb8ff2300a6ffc6ffe6ff3e009dffb5ff2f00d2ffa5ff7b0010001a0088ff130083ff7800efff1c008000620098ff38003a001c00010081ff5000d7ff8dff3600d7ff070045006c00c0ffe5ff20004d005f00800019009dff5d001300adff9cff1d000b00e2ffadff5200baff1c00350024007a001200ddff74003f00f5ffa8ffb8ffe8ffa6ff3e0028002b00beff71007f009aff780084ff99ff190097ff5e00feff170029001200180086ffb3ff3f003e00f7ff2900efff65000c0015004200d5ff37007e004b00a9ff0200560091ffdfff95ff050098fff6ff2900bbffa5ffe8ff62007d0077005d00adffe0ff6200eeffd2ffdfff8000bbff480049003d00e7ff91ff80009dff3700aeffb3ffb3fffeffbfff42004700e5ff86fff0ffcdffacff91ff32006500b8ff9cff7e00780065003a00d1ffc3ffe3ff75002f0085ff53004100b7ffd9ff75008aff2800470092ff1300240019007b001a00d2ff3300e1ff7d004e00a2ffb6ffcafffcff01000e0046004c006d00f4ff6c000d00d3ffcdff2c005b004600baffb4ff3a0067003500eaff0e004600b5ff8dff350087ff500046003b0029009bfffbff060004008afff3ff17005900caff3b00c5ffefff76007700bdff5100e7ffbbff28001a001c009ffff0ff2800deff6f00150018003d003900d4ff0500d8ff3500d1ff5800a8ff9cff2300b9ffc1ff10006c00bcfffbffe8ff1600c0ff450096ff2800bcff44004d008aff2700bbff370080ffe0ff6e000e00a3ffd9ff3c002f004f006500290080ff650083ff3d00e6ffeeff82ffd6ff84ff410057004500b2fff0ffcefffdff6400220006007100610026005c004a0091ff82ffafffa2ffacff87ff780074009bff80ff85ff0d0086ffd6ff6d002f00b8ff9aff6100b0ff7800bcff4d000500f5ffb3ff110053002300fcffb5ffceffa9ff8aff84ff03008cfff2ffbcff590096ff1d004f00b9ff5f00d2ff9bff5100caff5e006200200034002a002e001e00ecffbdfffdff53004900b5fffdffd0ff15005e00acff2e0085ffbfffd6ff1a00b0ffc6ffb8ff5a0091ffc3ff96ff710087ffccffa3ff6e008dffb3ff1200e2ff490034007e007f00c2fff0ff5d00a6ffaeff6900deff94ff04001c006700efff5d000000a6ffe2ff5d0090ff3f007700660094ff1700e5ff99ff59006c009eff3800c0fff4ff8effb5ff08001f004400caffddff3800d1ff7f00cbff5600c0ff3b00a5ff13007b00eaffa1ff8000a5ff2d00caff7700e3fff2ff56007100d8ffccffadffb3ff50007e002400020087ff130006007400d1ff9eff0400a7ff420036004e00e3ff5c00b9fffcffe0ff23003900d6ff83ff6d000f00ddffefffadff6800210089ff0e00b1ff4e005b00ffff4c000e000f003a008bff9effb6ff2200d4ffa5ffbeffdbffbeffa8ff6500c1ff89ff2300e0ffe5ff8effe4ffe5ff9dff2b005a006100e2ff0200feff6f003500d8ff9fffcffffeffc2fff2ffd5ff270017000a003000d6ff91ff350054005f0093ffefff1700bdffd0ffa0ffccff1400e3ff94ff93ff1400c4ff740029007400d3ff8effc0ffe0ff0400ceff0600000091ff2a0039003c007900fdffacffb4ffeaff2c0084ff45006e00d3ffceffe1ff6c00e6ff37009dffdeff8aff5a004800b6ffc7ff49002e0091ffdeff00003200f6ffd7ff4c00a4ff95ffebff7500230032004300cdff7e0050009bffccfff3ff6300d8ff9cffcbff43009bffb0ff7500a6ffbbff7200d2ff6e00a1ffd6ff3000d1ff94ffddffb8ff91ff86ffa4ff04000c000c00f6fffcffb2ffc4ff96ff5f00290009004b00b0ffe4ff790057007c003100380026009affbdff09001700a9ff6c00d2ff2d000300bfffc7ff0100f5ffbfff1700fdffb2ff3600150060004d0069006000d4ff97ffa8ff11007800220078007600c0ffbeff91ff1a006600610076001e00b7ff5d000400e8ffb7ff52003a007300090002008dff9fff7900ccff3e001700e2ffa5ff6c00efff7f000c00f2ff22001a007a005e0099ffa0fffcffe3ffdaff0a00780049007f008aff4b001200d4ff7a0028002e00c1fff2ff57007e00e3ff9aff11003300d9ff35006f009eff8000dcffabff46003500c4fff1ffe3ffc8ff200027004a008dff7000610078009effcaffbcffaeff99ffa9ff74001500d0ff4d001f0009004d0033002900020096ffccff83ffc8ffb1ff5e0090ffe8ff0600eeff93ffb6ffceffa2ff7200ebff3d00730082ff8dff9ffff7ffd8ff19005600f3ff7700e9ffedffe8fff8ffd6ff5700c8ffaeff1c003b00aeff7000f1ff2500a4ffbeff7a000f006200b3ff92ffb5ff2a00a1ff14001800d8ffddff2200b0ff56001e00f4ffaeff14007400430068002b003c006600570085ff7b005a0081ff09000800a9ff25000a009effdeff3700b7ff4c0087ff75003100100021000c006600c8ff0e002e006a002800a4ff1100a5ff5d002d009fff0200e4ffd5ff5600a5ff9cff030089ff60006500a7ff86ff0800bcfff1ffc1ff160008006900a5ffd2ff7d009eff9bffc8ff5d002d000600d4ff750086ffd0ffa3ff90ffb0ff1d005d00800072001900eaffddff7f00250087ffe3ff98ffc1ffcbff0800daff5e00dbff9cffe2ff1e00e2ff5b00b4fffcffa6ff8eff2800b3ff2b00bbff19007c0051008cffc4ffdaffd0ff430042000400affff7ff7200a9fffbff7f00edff1b0041003b001c00d6ff5f004e00b5ff94ff1c00faff7c00f4ffb5fffeff7100ddffc7ff7400c2ff7c00d1ffebffb7ffc1ff85ff1100e7fff2ff1a00d7ff0b005800dbff360097ff0200b1ffdaff89ff95ff45006c00bfffc7ff3e002e00f3ff92ff0b00bfff4300edff550091ff710000006600100096ff7600c8ffa2fff5ffcdffe4ffe5ff4a00b9ff8aff1000cfffa1ffc1ffc5ff7d00a3ff5b0085ff9eff1600aeff080063002f00ccfff3ff3500ceffbffff8ff5900a5ff4700e6ff48005d007c00f1ffc5ff23000200d2ffd1ffe0ff3b00b0ffd8ff6c0015006d00d8ff71008bfffeffdeffa7ffedfff4ffcaff82ff56006100d9ff1600e9fffaff5900a6ffa6fff5ff780063001000f3ffdeff1b004d00caff1e0081ffa7ffbaff37004000fcff49001e009aff3d003900350097ffa9fff4ff0700e1ffa9fff4ff1e0061000000a7ffdbfffaff67008aff170047007c008fffa2ff3e0071009fff4900e5ff34000b002d009dff9fff4a002e009effc2ff8bffb9ff1d004c009fff10000900e5ff3c004b002a0049004e00b8ffaaff4c002b00a1ffb5ff4500090101000800000009000000040000000400000013010100090000000a000000000000000b0101000a0000000b0000001000000000000000000000007f0f000000000000020101000b0000000c0000008901000000010001000400000083ffffff6afeffff3affffffcbffffffbeffffffd3feffffc5fdffff3fffffff38feffff2bffffff25feffffc5fdffffb9feffffe5ffffff74ffffff79ffffffd5feffffb9fdffff8efeffff51feffffb4ffffff26fffffff1feffff95ffffffb0ffffff99ffffff57fdffff97fdffff1fffffff9cffffffc1ffffff13ffffff95feffff7effffff2ffeffffe2feffff74ffffff24feffffecfdffffb9fdfffffffdffff21ffffff76fdffff85ffffff09feffffbcfeffff19ffffff9ffdffff23ffffff54fdffffa2fdffff9affffff98ffffffa0fdffffaefdffff88feffffcffdffff5bfdfffff8fdffff1afffffff5ffffff51feffffe0feffff83fdffff89ffffffedfeffffc2feffff8bfdffff98feffff52feffff8efdffff60fdffff80feffffdcfefffff5fdffff8effffffccfdffff39ffffffbafeffff19feffff4cfeffffa3fdffff3cfeffffb1feffffc7fdffffbdfdffffafffffff75feffffabfdffff3fffffff58feffffa6fdfffffaffffff9fffffffb2fdffff2afeffff","id":"lower_jpegai/jpegai/hs_uv/range/3","load":"ok","profiles":["acc32","acc64"]} +{"decodes":[{"expect":{"outputs":[{"data":["-816","-75","-110","-300","300","653","-215","678","-537","300","-837","300","0","334","200","380","-84","300","-570","-300","0","-294","-300","-355","-523","-228","-121","-78","300","-470","-300","-492","1217","300","749","-269","-120","-76","-300","-40","1823","-300","1631","-300","105","-502","-300","-477","260","-263","232","300","155","468","-300","934","-204","300","-216","0","287","262","300","944","1384","300","1161","206","-249","-717","300","-760","1589","-300","1271","300","300","-959","300","-1367","1011","0","1037","300","115","602","300","63","1853","-201","1158","-164","211","5","212","587","485","0","878","300","-300","-552","-224","-558","972","300","1116","230","-263","-672","213","-896","-1309","217","-788","-160","-300","-744","267","-1419","-900","300","-1039","136","47","-1271","-107","-1342","-565","-125","-988","-131","187","419","181","914","-729","300","-1200","-300","300","990","75","1042","126","300","-271","-300","300","-850","0","-289","93","-300","-481","-300","1","-462","300","-502","-1208","0","-660","102","-300","-1275","-217","-743","-1137","-221","-1148","-300","-132","-1240","-300","-978","489","237","926","273","77","-12","300","202","770","-260","801","300","-300","357","-300","418","-872","-300","-299","276","-124","-144","153","-35","-597","300","-484","-238","186","-415","-77","-340","-568","-11","-311","300","300","103","-300","-279","-896","300","-887","300","-300","99","300","-428","-794","300","-1069","-300","-300","-882","-300","-1166","-885","300","-1306","216","-300","-852","-14","-1251","-638","6","-455","0","-300","-321","214","-410","-1059","-300","-363","-300","300","-152","-249","-186","-1563","300","-703","0","-10","-943","112","-936","-1459","300","-1572","37","300","-618","300","-1315","-987","-300","-803","300","-275","194","262","407","-1230","300","-1037","-300","300","688","-300","128","-1280","-300","-778","-198","-300","-280","246","320","-1657","-300","-1030","-300","300","66","48","-277","-938","-300","-683","300","-300","399","0","54","-1458","-277","-1399","300","-300","450","300","208","1454","0","1455","-178","0","-739","0","-770","2029","92","1811","300","131","-475","-300","-774","1","-300","-61","300","-300","-562","0","-714","58","-300","545","300","165","-454","300","-966","-1007","0","-738","50","300","-1287","222","-784","-1715","-300","-1502","-265","115","-684","-272","-846","-918","81","-617","14","-300","-272","-300","-269","-811","300","-838","300","300","-560","300","-157","728","-240","40","300","0","-107","187","-134","497","118","635","0","-260","-83","-5","-142","403","-14","382","300","-300","-741","-207","-474","423","1","-193","6","179","-484","277","-727","-139","300","189","6","-300","-122","-300","55","-217","-81","33","241","-285","28","300","-550","849","-300","201","244","29","1047","300","807","671","-300","682","-95","-300","955","-300","973","-935","262","-890","300","-183","444","-89","-148","-1183","-300","-688","-134","31","426","-180","128","-1294","-259","-689","279","-126","321","0","320","-882","84","-733","-300","185","283","-300","25","501","300","336","-300","300","-363","300","232","1148","-280","610","101","300","-365","-300","-67","303","59","695","-68","-197","-15","-300","-161","417","-300","327","300","300","235","-4","438","169","-300","434","0","300","502","-300","153","-29","245","108","-86","0","204","-61","-84","93","300","-26","-143","-300","28","-300","-462","135","300","120","-300","300","-479","-300","-348","-878","0","-459","300","-300","742","300","1095","-387","300","-601","254","116","723","-189","498","811","-70","337","-102","-300","797","-178","1220","1028","-19","1134","300","151","996","-152","1172","79","300","-15","-169","-300","346","300","993","-441","209","117","0","24","932","-79","646","-1093","-205","-1010","-43","300","-416","50","-466","-1320","-20","-1230","0","125","-986","58","-1054","-1222","-39","-433","300","-300","-405","300","-739","-1038","-300","-959","-18","-299","-368","300","-300","749","300","215","-62","-300","-534","300","-368","834","-300","766","-300","-300","-223","300","-442","-686","-300","-607","300","184","-399","248","-446","-760","300","-102","9","-300","-760","300","-1055","-470","282","-369","-300","300","-420","300","-748","82","-300","-435","-300","299","-282","296","-552","-264","300","-610","-300","-235","552","-300","269","-847","-208","-886","0","255","-65","300","574","-1078","-193","-1284","260","-300","12","300","-51","-1173","-300","-988","-300","-300","-37","0","84","355","-300","582","300","300","1036","0","1088","422","-300","669","-24","0","410","-263","687","-1159","-300","-1141","178","5","150","300","-73","-959","-268","-1101","45","-247","334","-295","329","1105","181","939","300","-300","308","-185","521","804","123","1036","0","223","830","-300","863","556","-300","680","0","-300","-1373","-300","-1450","1145","-300","590","71","-300","-864","-300","-1090","1153","-300","1340","288","300","613","-300","199","1858","-300","1290","300","300","12","-300","636","837","300","126","-204","249","1114","208","893","386","0","455","273","300","1037","-63","1244","755","-300","661","139","-300","-748","-129","-1101","241","300","173","300","-300","-633","300","-1106","937","-300","520","-300","-300","-1322","0","-795","928","-300","773","281","300","-1285","0","-1402","-66","-300","21","0","300","-55","0","354","-264","-300","-365","-60","-77","49","161","358","-78","152","-11","-13","0","-1126","-300","-1413","-36","300","248","-300","-20","-1213","87","-1393","-363","-300","-226","-283","300","-616","-300","-552","-851","300","-389","-300","-300","-900","-300","-926","-816","300","-910","61","0","107","0","-208","-614","300","-808","0","300","-427","148","-205","-281","-300","186","-295","-146","306","-216","658","-240","119","63","300","300","221","265","798","262","300","128","-90","-145","-1178","0","-908","942","300","778","-233","210","-872","300","-708","-908","0","-660","-300","257","-420","0","-820","-1737","194","-956","300","300","-1006","-192","-683","1192","-300","1204","300","200","-199","298","-516","2022","300","1324","216","179","-731","300","-238","-1135","0","-1185","-251","0","497","0","-88","-1442","-81","-1158","300","47","459","-300","511","-1526","64","-737","-2","-125","780","-201","484","-1807","-143","-1057","-30","-300","165","-300","717","-649","-300","-646","-100","300","-136","-7","-166","-513","-300","-941","-300","-300","-636","70","-511","1073","-300","912","73","55","331","-300","724","1347","-300","1478","-300","7","856","-300","913","1128","-300","596","0","-87","1195","300","1260","1042","-275","1209","-300","113","574","66","721","704","300","707","250","300","-317","-300","-318","908","-157","452","-300","-300","282","1","282","879","-300","830","-272","300","784","73","391","1402","-300","1525","-300","-300","928","300","993","1746","-300","1148","85","-300","59","-300","507","1695","300","1803","-300","300","47","-300","687","1187","0","1009","300","173","-541","300","-880","1212","-43","1592","83","146","-1099","-190","-722","1008","272","923","300","-300","105","-238","400","1499","-300","1118","24","300","429","-252","399","493","-238","-78","0","300","183","-9","428","115","-300","214","118","300","691","0","154","-1642","300","-1097","300","85","-148","-288","405","-1896","0","-1695","-300","-300","437","-265","305","-693","78","-1089","139","-224","-798","-28","-709","-1481","300","-732","190","-235","-991","300","-864","-927","54","-1275","-193","10","-13","-270","97","-1216","-300","-1576","-300","-300","-157","-300","-475","707","300","23","-300","297","-122","262","-538","784","300","423","300","300","-216","79","-502","-981","-49","-443","-300","300","75","284","380","-1110","222","-408","-300","-118","-75","-300","-220","-71","300","-434","-37","242","-1115","-63","-571","-215","100","-188","300","161","-1064","300","-1076","-853","-300","-845","0","69","-142","300","-87","-1266","0","-995","300","-300","47","300","-302","-436","232","-592","300","247","280","65","321","-137","-300","-82","251","0","260","126","325","-166","168","-70","0","-96","1105","139","1143","-854","-2","-769","168","279","788","-300","910","-254","-168","-174","-300","300","115","0","-97","-50","-300","-399","43","-300","-305","29","95","1386","300","1163","27","300","-293","300","270","1592","300","946","115","229","316","-300","6","513","300","946","-300","0","720","-26","751","668","-300","1146","0","-300","225","31","726","781","300","362","300","298","-1150","300","-610","951","-72","940","-56","129","-1027","124","-1126","-1093","-65","-1106","0","-73","126","225","-387","-1956","-300","-1390","-282","300","54","300","-204","-28","41","194","-300","300","136","300","287","141","-88","-139","0","64","316","-64","-151","72","124","120","-94","300","-505","89","-298","386","-300","-116","300","0","-848","-300","-899","117","-300","-145","-300","-300","-134","300","477","-290","-103","110","86","7","210","-160","-120","49","296","101","-201","36","295","-300","472","-429","-300","-424","4","0","421","-300","344","1015","-73","896","-135","-300","105","300","557","1192","75","871","-300","300","524","-263","563","-1559","0","-1224","300","0","-503","-166","-515","-1797","300","-1385","300","-183","-148","300","78","1015","-9","1244","-300","300","-161","-168","-150","1113","0","935","300","-300","-170","-241","151","-1443","-300","-1208","300","300","-218","300","388","-1301","0","-1488","300","300","-105","-49","388","1007","-259","725","-300","162","92","151","-203","629","261","1035","-21","300","385","-300","-58","-1339","-168","-1207","214","300","-261","-300","43","-1658","300","-887","300","300","346","-57","-260","-1267","-300","-641","300","-300","218","-300","291","-1286","-110","-1232","171","-300","503","300","-6","-278","200","-759","-300","-40","-975","300","-1149","-977","0","-901","52","-300","-854","-300","-1285","1086","300","1223","189","300","-453","-300","-109","1613","-300","1208","300","-300","-440","300","91","-476","230","-587","0","69","-31","-243","-52","-429","136","-75","224","-192","-611","-281","-153","-120","125","-157","-300","-300","261","-246","612","-86","-13","-113","155","-300","156","-199","793","-1490","-300","-845","-176","290","-29","-24","-8","-1229","147","-1003","-300","300","573","-97","302","1415","191","966","0","-274","-113","129","-503","2026","-300","1223","101","224","46","-300","-501","-309","0","200","-262","300","129","300","-295","289","300","-248","-75","-300","-269","141","117","-1039","300","-1063","225","-290","-345","199","-773","-1892","-300","-1391","-52","0","-736","-95","-617","835","0","466","300","300","116","300","-43","864","95","1003","-300","300","-78","0","-37","-1021","-278","-273","-54","-211","121","300","176","-1157","-300","-1049","-73","0","62","150","15","-640","0","-867","-300","-109","106","293","223","-777","-300","-1041","152","189","685","173","220","1034","0","822","0","292","445","300","278","930","239","1197","163","105","220","-300","110","-210","123","110","-300","-299","-836","0","-681","112","-300","-75","-300","300","-270","-195","-706","-181","300","143","0","-110","-12","0","609","-257","-265","112","300","-91","487","-214","9","-1183","300","-402","300","-300","496","-75","623","-750","300","-918","0","-300","69","-120","326","458","-300","295","-292","300","23","-7","403","742","-300","86","15","-270","-217","300","-135","-74","57","241","15","300","133","300","761","212","73","-377","300","-300","106","-262","470","-949","-300","-816","-300","26","1113","176","1175","-908","203","-975","300","-300","483","300","1184","-454","300","-380","300","-212","1058","0","758","93","-300","-32","300","-20","1043","-300","828","498","-300","845","-265","163","363","300","-235","1116","300","659","172","266","89","-300","-98","-386","-300","-368","0","300","198","300","568","198","-300","-389","300","166","538","-147","44","-389","-300","-268","300","-300","945","7","566","-763","-77","-705","300","0","445","-22","1121","-1495","-300","-992","-255","-300","-741","-300","-799","-1553","-300","-1331","-300","-177","-1069","-300","-803","83","284","-247","-292","80","407","0","430","42","153","74","300","300","589","-232","737","128","-102","-435","-300","300","-881","-300","-992","-201","-141","-392","265","300","-649","-300","-756","744","300","462","300","300","431","300","647","317","99","497","0","0","607","156","52","580","300","581","300","0","-698","-19","-460","721","0","68","-300","300","-874","0","-791","1235","300","772","0","-300","-97","-300","20","1156","-300","1311","300","-300","-552","300","-61","748","-148","56","-300","-263","-502","297","-513","493","144","746","166","42","-480","-23","-132","753","0","298","236","300","-135","300","-311","876","-300","1083","-265","0","-124","0","-709","-697","247","-492","300","300","-728","-192","-726","-886","-300","-1336","0","-300","-106","-300","-680","-1283","248","-696","179","-214","699","300","913","-1191","-300","-1157","0","-120","365","-300","607","717","0","31","-241","300","487","-300","34","196","300","624","203","-300","-127","300","438","650","112","9","-300","135","-68","-300","-613","116","-268","664","163","300","-645","-61","-699","874","-60","735","0","287","179","-13","258","813","-144","1273","300","237","-185","-33","-342","892","300","602","300","-275","421","-300","-169","1155","300","747","-300","197","428","-300","-172","-1046","-300","-1083","232","-300","945","-300","982","-1804","34","-1614","300","172","559","222","962","-499","291","-805","-205","300","-305","-300","-260","-456","0","-491","300","-47","-500","300","-566","-1346","83","-1048","124","0","-897","300","-761","-1102","-300","-1387","300","-210","-1057","-198","-886","294","-68","722","0","-300","668","-300","414","1007","-300","318","-109","300","941","78","954","-162","-300","-667","227","86","-192","-114","88","-827","0","-400","-300","-300","-187","-300","415","392","300","576","-62","-22","-47","-300","439","1123","-134","821","-50","-146","557","-8","37","1077","-300","1374","300","-237","-965","247","-779","1909","-300","1234","300","-4","-948","-151","-462","-833","38","-146","206","300","-43","300","-407","-967","-206","-283","0","-239","-563","300","-68","629","-210","439","0","-300","148","124","-448","1405","-34","666","0","300","-143","-44","-464","1193","300","1018","87","-141","-165","-241","-339","983","300","639","300","-154","-150","300","-501","-49","-196","-122","300","260","-43","-300","-345","13","-300","-251","-37","-300","-21","300","-343","208","-300","-142","300","-300","-1102","300","-859","-141","300","-319","-141","-23","-477","-37","-1164","369","-183","355","0","-42","158","276","164","120","300","-228","300","300","89","-300","-196","495","257","683","300","-300","946","236","1284","1246","271","826","-300","-172","1372","300","889","-1424","300","-1137","0","300","823","0","859","-1509","156","-1470","0","-63","803","249","264","-1502","255","-1255","257","264","-797","300","-434","-1323","300","-950","-300","-300","-391","300","-837","1099","-300","731","112","-300","-963","195","-1331","1096","300","657","-298","300","-935","-300","-874","-1410","-300","-1028","271","1","-654","-300","-120","-1907","265","-1104","0","300","-68","284","-112","705","-57","395","-300","-88","-222","300","384","182","0","721","115","-101","-220","-152","-217","-1455","-300","-617","-243","-300","-780","300","-832","-1674","-300","-1262","300","300","-785","37","-837","-1018","21","-1118","-300","300","-193","125","122","-1481","-300","-1371","-300","300","100","-300","416","683","-74","229","0","65","191","175","227","845","-161","393","-38","12","697","-300","270","-535","14","-842","33","-300","191","0","296","-1293","-65","-1168","-300","213","384","-300","237","1622","-300","750","300","300","-787","297","-842","1872","-97","1469","-300","189","-454","-167","-550","-1009","300","-847","-300","-156","-580","300","-433","-1075","276","-1031","300","46","-299","0","-543","1380","-13","1237","0","200","-78","-146","-707","1703","179","1092","-236","300","-439","41","-705","-557","-300","-381","143","124","-241","300","-587","-719","-79","-1191","188","-133","-466","-64","-298","1542","-297","1405","-263","0","-1087","300","-1144","1370","300","1746","-290","0","-764","300","-1148"],"shape":["160","4","4"]}]},"inputs":[{"data":["-31","32","0","-23","3","-31","6","32","-31","32","-31","-31","0","32","-31","32","32","-9","9","12","22","-31","7","0","-23","32","0","21","-7","32","0","20","-19","32","0","-6","-31","-31","-16","3","32","-31","-31","0","-31","13","32","32","32","32","-31","-31","27","-31","15","32","-31","23","32","-31","-31","25","32","-31","15","-19","27","10","-31","-31","32","-31","-31","0","0","32","0","-31","25","32","0","0","-20","32","0","32","20","0","-16","-31","-31","32","32","-31","17","24","32","5","-31","32","32","-5","-31","0","30","32","-31","32","32","27","-31","17","32","-31","32","-31","20","-17","-16","32","32","-12","0","0","4","9","0","-31","30","-12","0","12","-24","-31","32","0","-16","-31","-31","32","-16","-31","0","-31","-9","-9","32","-31","32","32","32","-31","14","-8","32","0","-31","8","32","32"],"shape":["160","1","1"]},{"data":["-300","-75","300","-300","300","300","-215","300","77","300","-300","300","0","-9","200","0","300","300","-265","-300","0","-116","-300","-165","-66","-228","278","-78","300","-300","-300","-300","-63","300","-268","-269","-120","175","-300","227","300","-300","300","-300","105","-268","-300","-205","179","-263","168","300","155","-127","-300","300","-300","300","-300","0","287","-300","300","300","300","300","300","206","-249","273","300","300","300","-300","145","300","300","0","300","-300","-295","0","0","300","115","274","300","-286","300","-201","-199","-164","211","-300","212","231","-300","0","255","300","-300","0","-224","33","39","300","300","230","-263","-143","213","-300","-300","217","13","-160","-300","300","267","-300","300","300","10","136","47","-256","-107","-218","300","-125","-300","-131","187","-300","181","145","300","300","-300","-300","300","300","75","266","300","300","-133","-300","300","-300","0","300","300","-300","-300","-300","1","71","300","91","0","0","300","102","-300","-300","-217","300","300","-221","108","-300","-132","-300","-300","73","-300","237","300","273","77","-121","300","85","-168","-260","-19","300","-300","251","-300","300","-117","-300","300","276","-124","170","153","300","300","300","300","-238","186","-119","-77","0","0","-11","140","300","300","300","-300","-66","-221","300","-297","300","-300","300","300","-218","174","300","-300","-300","-300","0","-300","-221","266","300","-300","216","-300","0","-14","-300","0","6","52","0","-300","92","214","31","-300","-300","300","-300","300","239","-249","260","-300","300","300","0","-10","0","112","75","43","300","-259","37","300","300","300","-300","300","-300","219","300","-275","-203","262","-19","300","300","300","-300","300","300","-300","-300","0","-300","238","-198","-300","-300","246","300","-135","-300","300","-300","300","55","48","-300","300","-300","300","300","-300","86","0","-281","14","-277","-112","300","-300","147","300","-129","0","0","300","-178","0","-300","0","-300","300","92","300","300","131","-52","-300","-300","-300","-300","-300","300","-300","97","0","-9","-300","-300","232","300","165","178","300","-254","300","0","300","50","300","-275","222","300","-160","-300","-143","-265","115","300","-272","244","-300","81","-126","14","-300","0","-300","21","-76","300","-196","300","300","-300","300","136","300","-240","-300","300","0","300","187","300","-12","118","190","0","-260","300","-5","300","300","-14","300","300","-300","-300","-207","0","300","1","-300","6","179","-46","277","-254","0","300","300","6","-300","109","-300","300","-52","-81","178","241","-285","243","300","-300","285","-300","-247","244","29","292","300","0","0","-300","96","-95","-300","234","-300","157","-192","262","-300","300","-183","300","-89","-300","-300","-300","84","-134","31","300","-180","-30","-300","-259","101","279","-126","300","0","300","300","84","300","-300","185","276","-300","0","-300","300","-300","-300","300","-300","300","300","196","-280","-222","101","300","-300","-300","0","-300","59","216","-68","-197","-144","-300","-300","-300","-300","-300","300","300","106","-4","300","0","-300","300","0","300","300","-300","-65","-231","245","-68","-86","0","0","-61","-300","-80","300","-163","-143","-300","300","-300","-170","-70","300","-60","-300","300","-207","-300","-57","-300","0","0","300","-300","0","300","300","300","300","0","254","116","0","-189","-300","9","-70","-300","-102","-300","-300","-178","44","74","-19","300","300","151","-70","-152","-10","198","300","79","-169","-300","-300","300","300","-300","209","240","0","24","300","-79","-49","-199","-205","-300","-43","300","300","50","300","-256","-20","-300","0","125","-300","58","-281","-300","-39","300","300","-300","4","300","-300","59","-300","0","-18","-299","35","300","139","300","300","-141","-62","-300","0","300","205","300","-300","300","-300","-300","300","300","132","-300","-300","-300","300","184","300","248","300","-300","300","300","9","-300","-94","300","-300","-286","282","-223","-300","300","0","300","-300","300","-300","-244","-300","299","115","296","-97","300","300","-162","-300","-235","300","-300","0","-177","-208","-300","0","255","-300","300","300","161","-193","-300","260","-300","0","300","-66","300","-300","300","-300","-300","-61","0","74","0","-300","300","300","300","300","0","300","0","-300","300","-24","0","-300","-263","-107","-100","-300","-300","178","5","122","300","-104","300","-268","0","45","-247","300","-295","300","300","181","300","300","-300","-256","-185","-80","-154","123","199","0","223","300","-300","252","-300","-300","0","0","-300","-300","-300","-300","127","-300","-300","71","-300","182","-300","65","-157","-300","300","288","300","300","-300","-138","300","-300","-71","300","300","-300","-300","300","300","300","-300","-204","249","0","208","-300","-253","0","-103","273","300","-45","-63","44","300","-300","300","139","-300","0","-129","-300","-300","300","-300","300","-300","92","300","-300","-96","-300","-300","-300","-300","-300","0","300","-300","-300","-300","281","300","-296","0","-300","285","-300","300","0","300","-107","0","300","154","-300","0","-60","-77","8","161","300","-300","152","-187","-13","0","-86","-300","-300","-300","300","17","-300","-20","-208","87","-273","300","-300","300","-283","300","0","-300","108","-63","300","300","-300","-300","-300","-300","-263","-48","300","-300","61","0","300","0","0","300","300","-9","0","300","-229","148","0","-137","-300","300","-295","-146","-154","-216","167","-69","119","212","300","300","-215","265","300","-278","300","-300","-90","-145","-300","0","33","300","300","217","-233","210","-15","300","236","300","0","300","-300","257","300","0","-47","-300","194","300","300","300","-300","-192","91","-256","-300","54","300","200","300","298","19","300","300","-181","216","179","-246","300","300","-21","0","-300","-251","0","300","0","-300","-117","-81","0","300","47","260","-300","300","-220","64","300","-2","-125","300","-201","-31","-254","-143","300","-30","-300","-300","-300","199","0","-300","-131","-100","300","300","-7","300","258","-300","-267","-300","-300","-220","70","-40","-60","-300","12","73","55","-238","-300","113","0","-300","300","-300","7","300","-300","300","0","-300","-300","0","-87","300","300","300","-300","-275","36","-300","113","-300","66","-242","-20","300","132","250","300","-300","-300","-300","47","-157","-300","-300","-300","300","1","300","-300","-300","-106","-272","300","140","73","-300","0","-300","300","-300","-300","300","300","300","300","-300","0","85","-300","-300","-300","123","-25","300","300","-300","300","-299","-300","300","-84","0","0","300","173","281","300","0","-300","-43","271","83","146","-300","-190","163","0","272","122","300","-300","-300","-238","-33","300","-300","70","24","300","44","-252","-39","213","-238","-300","0","300","-215","-9","0","-218","-300","-77","118","300","300","0","-274","-300","300","-31","300","85","-300","-288","244","-300","0","-300","-300","-300","300","-265","139","300","78","-300","139","-224","145","-28","300","-300","300","300","190","-235","-81","300","153","300","54","-300","-193","10","149","-270","271","244","-300","-300","-300","-300","0","-300","-300","300","300","-300","-300","297","100","262","-300","300","300","0","300","300","0","79","-263","-300","-49","98","-300","300","0","284","300","-300","222","300","-300","-118","-149","-300","-300","110","300","-290","-37","242","-300","-63","300","0","100","0","300","161","-282","300","-197","180","-300","-24","0","69","106","300","181","-37","0","79","300","-300","300","300","-37","-69","232","-300","300","247","-300","65","-300","300","-300","300","251","0","-300","126","-300","300","168","300","0","-96","300","139","279","-300","-2","-284","168","279","1","-300","44","40","-168","60","-300","300","124","0","-88","300","-300","-93","43","-300","-300","29","106","300","300","300","27","300","-300","300","260","300","300","-183","115","229","297","-300","0","-300","300","300","-300","0","300","-26","300","-300","-300","300","0","-300","-188","31","274","-53","300","-300","300","298","-300","300","299","-41","-72","73","-56","129","-209","124","-210","300","-65","0","0","-73","300","225","-203","-300","-300","58","-282","300","211","300","-14","106","41","300","-300","300","0","300","141","300","-88","0","0","64","182","-64","-298","0","124","63","-94","300","53","89","300","300","-300","-191","300","0","-300","-300","-300","300","-300","0","-300","-300","-300","300","300","-73","-103","300","86","7","53","-160","-300","300","296","300","-201","36","-281","-300","-145","-131","-300","-163","4","0","-140","-300","-276","265","-73","300","-135","-300","-137","300","300","300","75","91","-300","300","300","-263","300","-300","0","-224","300","0","-300","-166","-300","-300","300","-76","300","-183","35","300","300","-173","-9","300","-300","300","-300","-168","-298","-300","0","-300","300","-300","-300","-241","0","-300","-300","-300","300","300","-300","300","300","58","0","-300","300","300","-186","-49","300","300","-259","163","-300","162","0","151","-300","-212","261","300","-21","300","300","-300","-157","-197","-168","-300","214","300","-300","-300","0","-300","300","300","300","300","300","-57","-300","-82","-300","300","300","-300","-56","-300","-5","124","-110","0","171","-300","228","300","-300","300","200","-300","-300","-40","-59","300","-167","-290","0","-300","52","-300","41","-300","-300","-76","300","300","189","300","-300","-300","53","231","-300","0","300","-300","-300","300","258","-115","230","-300","0","69","300","-243","300","0","136","300","224","-192","-300","-281","205","-300","125","-300","-300","-300","-199","-246","118","-300","-13","-300","155","-300","-300","-199","300","-247","-300","143","-176","290","-300","-24","-300","250","147","289","-300","300","300","-97","12","-50","191","-198","0","-274","75","129","-300","283","-300","-300","101","224","237","-300","-300","-300","0","208","-262","300","300","300","-111","300","300","-238","-75","-300","-99","141","300","300","300","0","225","-290","95","199","-300","-300","-300","0","-52","0","-300","-95","-146","-130","0","-300","300","300","-126","300","-300","-284","95","0","-300","300","-300","0","-300","-300","-278","300","-54","-211","0","300","45","-300","-300","-300","-73","0","-62","150","-114","73","0","-300","-300","-109","-300","293","-210","71","-300","-300","152","189","300","173","-219","0","0","0","0","292","300","300","121","-300","239","122","163","105","72","-300","-45","-300","123","39","-300","-299","-252","0","-55","5","-300","-168","-300","300","300","-195","-78","0","300","287","0","-110","-300","0","300","-42","-265","300","300","-91","203","-214","-300","-300","300","300","300","-300","194","-75","300","300","300","0","0","-300","-219","-120","0","86","-300","0","-292","300","-75","-7","300","300","-300","-300","15","-270","-300","300","-244","0","57","300","15","300","-300","300","300","300","73","-300","300","-300","-299","-262","0","-300","-300","-300","-300","26","294","176","300","-136","203","-300","300","-300","-300","300","300","-300","300","-258","300","-212","300","0","-56","276","-300","128","300","-20","300","-300","13","-188","-300","300","-265","163","300","300","-300","300","300","-54","172","266","43","-300","-169","-300","-300","-300","0","300","-53","300","300","300","-300","-300","300","166","300","-147","-227","0","-300","41","300","-300","182","7","-252","-300","-77","-300","300","0","-300","-22","300","-300","-300","-43","-255","-300","284","-300","300","-132","-300","-89","-300","-177","-71","-300","300","300","284","-74","-292","80","4","0","0","300","153","300","300","300","210","-232","300","297","-102","-300","-300","300","-178","-300","-238","0","-141","-216","265","300","39","-300","0","300","300","110","300","300","106","300","300","-211","99","36","0","0","300","156","-300","226","300","300","300","0","-68","-19","214","300","0","-300","-300","300","-264","0","-112","263","300","0","0","-300","165","-300","300","0","-300","300","300","-300","-300","300","222","300","-148","-300","-300","-263","-300","297","-300","-40","144","280","166","42","-300","-23","88","0","0","-300","236","300","300","300","155","-20","-300","300","-265","0","298","0","-241","300","247","300","300","300","-300","-192","-269","300","-300","-300","0","-300","300","-300","-217","-29","248","300","179","-214","0","300","167","300","-300","146","0","-120","-300","-300","-149","300","0","-300","-241","300","300","-300","-165","-300","300","190","203","-300","-300","300","235","300","112","-269","-300","135","300","-300","-221","-300","-268","300","163","300","-300","-61","-300","-62","-60","-8","0","287","218","-13","300","-300","-144","300","300","237","-145","-33","-300","173","300","31","300","-275","300","-300","-300","300","300","0","-300","197","300","-300","-300","218","-300","-79","232","-300","53","-300","28","-300","34","-300","300","172","-300","222","0","137","291","-300","-205","300","219","-300","300","300","0","170","300","-47","0","300","0","-300","83","-217","124","0","-21","300","176","141","-300","-300","300","-210","-213","-198","59","-300","-68","250","0","-300","1","-300","-300","300","-300","-300","-109","300","300","78","234","300","-300","-300","227","86","-300","-114","-29","-278","0","80","-300","-300","-300","-300","300","-300","300","27","-62","-22","-300","-300","166","300","-134","102","-50","-146","300","-8","-233","-275","-300","300","300","-237","-300","247","-66","300","-300","-172","300","-4","-300","-151","254","-272","38","300","206","300","300","300","-38","-300","-206","300","0","-239","-222","300","300","-300","-210","-299","0","-300","300","124","-286","300","-34","-300","0","300","0","-44","-299","289","300","300","87","-141","300","-241","159","-92","300","-300","300","-154","300","300","0","192","-196","70","300","260","278","-300","0","300","-300","0","-37","-300","300","300","0","227","-300","-127","300","-300","-300","300","0","-119","300","-300","-141","-23","300","-37","-300","300","-183","300","0","-42","62","276","62","37","300","-300","300","300","0","-300","-300","-300","257","52","300","-300","-158","236","101","300","271","0","-300","-172","300","300","-300","-298","300","-243","0","300","300","0","300","-170","156","-300","0","-63","300","249","-300","-300","255","-300","257","264","-300","300","97","107","300","300","-300","-300","83","300","-300","178","-300","0","112","-300","0","195","-300","0","300","-300","-298","300","0","-300","163","-59","-300","45","271","1","-293","-300","265","-300","265","300","0","300","274","284","278","300","-57","73","-300","-88","-300","300","300","-300","0","300","115","-101","-300","-152","-300","-300","-300","300","-243","-300","-282","300","-298","-300","-300","-61","300","300","-300","37","-300","12","21","-300","-300","300","-300","125","8","-256","-300","-300","-300","300","0","-300","300","17","-74","-300","0","65","-300","175","-300","52","-161","-300","-38","12","220","-300","-259","300","14","-179","33","-300","110","0","209","-300","-65","-300","-300","213","300","-300","151","300","-300","-300","300","300","0","297","0","300","-97","95","-300","189","300","-167","300","-300","300","-283","-300","-156","-300","300","-131","-231","276","-294","300","46","-17","0","-243","201","-13","300","0","200","300","-146","-300","300","179","-134","-236","300","-62","41","-300","300","-300","300","143","124","300","300","-10","300","-79","-300","188","-133","46","-64","287","151","-297","300","-263","0","-300","300","-300","-285","300","300","-290","0","0","300","-300"],"shape":["160","4","4"]}],"scalars":[]},{"expect":{"outputs":[{"data":["-208","-300","-398","57","67","505","300","678","-188","-300","-621","300","0","50","-300","393","-204","300","-488","-48","-300","49","0","681","-318","300","-722","300","155","343","0","80","-290","0","-129","300","76","-478","300","-299","-546","0","61","108","187","127","300","109","-75","-164","-537","-110","-91","-472","0","109","-760","0","-94","300","300","9","-300","108","1077","300","1309","-250","69","-203","300","-566","1509","-300","1096","300","300","-539","300","-462","1029","226","1088","-300","-156","62","-300","18","1369","300","1613","10","-213","-512","-104","29","99","130","363","300","-300","896","-300","934","376","98","350","-300","14","274","176","337","-221","299","-251","300","-300","872","-300","937","397","-300","115","0","-300","862","246","358","765","300","854","300","0","-692","45","-1337","1206","-300","974","300","-189","-715","129","-1021","1258","0","535","-168","-114","-976","-110","-782","1598","0","1150","-7","79","-1260","0","-1367","983","116","1039","-300","90","234","-211","48","933","106","735","300","-175","11","-267","650","975","36","921","-300","174","310","0","296","1760","300","1639","300","300","163","-300","55","1071","-287","618","0","187","-553","0","-385","1041","-300","667","-300","-48","-840","-300","-294","934","0","183","256","-250","-238","265","-630","940","-300","1104","-300","0","-583","300","-596","-992","22","-495","0","300","-752","-5","-1033","-1252","0","-859","148","-206","-791","300","-1427","-685","300","-321","163","300","-1333","300","-1030","-1508","190","-1262","-118","300","-716","300","-959","-551","-76","-637","-300","40","818","-300","1068","-517","-251","-238","-300","237","1004","-300","473","-782","-34","-487","300","300","1002","300","1073","-1076","-178","-887","-300","0","644","-254","776","12","-60","-172","177","300","-349","300","-889","-271","229","192","-67","125","-544","-300","-692","-229","0","68","-300","-300","-731","172","-594","-387","-300","-230","0","199","-533","-300","-735","-888","-300","-668","257","0","-1145","-300","-1342","-889","-68","-452","300","300","-659","-300","-750","-1209","85","-1044","-300","300","-1256","300","-750","-1747","300","-1005","300","89","-640","0","-917","1075","300","321","300","-300","409","-199","-178","882","42","549","300","83","408","101","118","470","300","185","245","172","408","191","418","1155","-217","682","300","79","406","131","218","-1042","0","-295","300","0","-315","-142","-334","-412","-239","-446","-300","0","-2","-300","-259","-1037","0","-509","300","-250","-300","-300","-298","-1053","-300","-474","300","51","5","203","-640","-258","-261","-148","0","-300","-498","300","-513","-348","300","-353","-100","300","-171","-300","-516","-255","300","-50","300","-300","-211","300","-216","-877","300","-882","-300","-300","-502","218","89","-1089","-300","-542","300","0","-1184","0","-1097","-1214","-296","-788","-203","300","-569","0","-900","-645","300","-296","76","-300","-991","0","-1251","-1297","0","-994","300","-300","-552","300","-937","-782","300","-803","-300","0","-577","-300","-658","-902","-300","-587","298","-300","-119","-300","-284","-323","300","-393","300","-19","-98","-35","-308","-661","0","-814","-300","135","-691","300","-252","-1474","-300","-839","300","-300","-645","-300","-710","-893","20","-1086","300","-199","-936","-300","-756","-1533","240","-783","-300","0","-634","-300","-1019","-1213","0","-1324","-300","-300","-670","-101","-1068","-1076","119","-714","-239","-280","610","-171","726","-1434","-300","-660","-300","223","395","300","129","-1256","85","-630","-157","-191","694","-300","430","-1464","-38","-1356","31","0","183","106","728","-1451","-300","-1309","-300","300","-12","-300","103","-1195","300","-990","5","-233","311","81","319","-949","218","-788","-12","300","-78","0","-139","-1252","-300","-1312","-300","-300","310","-300","-119","-1054","19","-980","-300","300","14","-300","335","-1012","161","-485","-253","0","329","300","38","-909","-300","-463","0","-300","8","300","638","-1649","-300","-969","-28","269","603","-300","624","1129","-139","1146","25","-300","-140","-300","-769","1136","155","807","300","92","-480","0","-773","1419","-290","595","209","103","-539","270","-710","1441","300","1677","263","-300","-723","-300","-423","296","-300","-63","-300","-55","-560","125","-670","27","181","-113","-300","-155","-503","-91","-551","-6","300","-115","300","255","-852","300","-709","361","300","9","300","297","-556","-160","-1011","-1285","300","-1330","300","300","-805","-271","-1383","-1189","300","-513","-300","300","-703","-300","-792","-1576","300","-1105","-300","-285","-701","300","-793","-1565","270","-1389","0","33","-684","-245","-790","-642","300","-774","-300","-300","-359","-300","-590","-884","-258","-385","-300","73","-566","-300","-11","-903","300","-381","300","283","35","-189","-592","-967","-300","-934","300","45","-482","-291","-593","348","-300","74","67","300","-679","-300","-734","522","300","-34","-35","0","-691","300","-736","418","-300","264","300","162","-317","161","-436","213","133","222","300","300","-488","300","-315","307","-300","-219","-117","-295","-742","300","-325","69","0","334","300","-34","-146","300","-479","-199","-300","363","-144","300","-146","300","-189","-14","0","114","300","89","-611","-73","-774","-437","-300","-110","163","-170","-531","-135","-237","-14","-287","-361","300","300","-519","-300","-546","11","-61","-386","178","-153","-218","300","54","133","0","157","0","-300","-514","216","-169","554","-300","713","-300","-300","1057","300","962","833","-202","651","-300","-300","459","141","511","251","-300","284","300","300","678","-74","511","376","0","278","300","-300","599","-21","1116","-931","175","-886","297","-300","444","0","-149","-671","-300","-162","300","0","-153","-300","451","-425","-300","-158","-144","-300","101","-173","451","-1190","-269","-462","300","-151","315","-76","-142","-677","148","-1084","0","300","-279","0","-280","-639","-300","-477","-300","-300","-109","-158","-80","-670","300","-411","0","300","125","-300","-282","-1193","300","-861","0","-251","117","-133","324","1087","-300","592","0","0","136","-95","232","456","-300","198","-64","200","152","300","-156","958","-300","493","-300","23","125","-300","147","659","282","837","-15","-300","225","-300","159","328","300","372","-300","-136","-159","-300","-160","269","-300","75","0","300","-168","-115","440","888","300","671","300","300","131","300","440","1022","300","884","218","-300","-170","-19","-34","167","166","433","-300","-300","293","-300","386","-92","-300","62","-300","-300","507","51","120","11","130","-23","300","-49","-93","-300","-79","503","0","-89","0","-300","-35","-300","-83","455","-300","136","-130","300","-572","300","-592","-137","106","-193","-197","99","-454","-226","4","-62","-90","106","-300","29","-578","-24","-182","507","-300","412","116","-229","-101","-118","9","-868","-300","-251","300","163","509","-279","930","-666","227","-660","208","258","1037","0","1101","-864","-300","-56","-300","300","436","300","1102","-992","-300","-447","300","300","983","-300","1099","796","300","332","300","300","799","92","875","458","-60","583","27","-300","1387","-198","1020","655","300","606","-300","-300","1135","-300","1405","1261","-25","765","-160","0","1366","-293","1311","-258","-300","6","300","199","347","300","393","-112","45","-74","80","-300","644","-300","699","-52","-69","-373","-300","300","943","0","914","92","300","-338","0","300","843","242","964","-1026","-300","-1005","300","65","-417","-56","-1065","-905","-158","-856","300","-300","-400","100","-573","-1121","263","-251","300","-137","-698","272","-770","-771","300","-1217","227","133","-986","300","-1073","-907","-300","-429","200","293","-223","300","-550","-872","0","-874","300","-208","-111","7","-674","-615","-300","-268","0","-300","-410","300","-580","-1396","-260","-1066","-300","-289","-500","-279","-739","741","69","502","-300","-300","-834","300","-272","124","-300","579","-90","300","-268","-48","-333","346","300","-24","300","300","-465","300","-878","237","-300","313","-300","300","-824","36","-574","-380","49","-5","300","-48","-411","277","-745","-365","0","-380","0","0","-980","-300","-750","-184","-300","-538","158","300","-736","143","-1050","-463","258","-96","0","64","-456","-169","-1055","-206","300","-145","300","-300","-721","224","-748","-286","223","-414","-300","-300","-705","-300","-249","121","264","187","300","85","-704","-300","-741","80","300","-188","0","61","-348","-300","-265","-648","-186","-744","-300","-211","253","150","-32","-832","0","-651","-243","277","539","-300","258","-487","-300","-47","-239","299","-62","300","569","-675","-300","-278","0","-237","199","-300","120","-936","0","-1019","-300","300","195","188","-285","-1445","76","-1071","-278","0","324","-300","317","-1008","-106","-1028","-300","300","24","300","134","-1507","283","-1570","300","0","-276","300","69","639","-124","580","-222","300","652","0","788","335","-300","521","-300","-300","775","64","493","92","300","306","62","300","423","300","1094","125","-71","394","300","0","411","-300","1094","-1341","300","-535","300","-300","152","-300","331","-797","169","-959","0","0","34","-300","237","-1299","300","-352","-22","0","335","300","32","-968","300","-869","-218","289","-266","300","102","788","285","934","0","300","265","0","300","792","0","800","300","0","813","155","903","1086","257","207","135","0","390","-168","490","664","0","1125","0","77","341","300","610","1141","300","442","300","300","-1112","-300","-932","508","-300","232","-270","300","-1067","35","-859","1135","-300","827","-300","300","-896","300","-1160","829","300","1177","129","-300","-1091","-300","-1155","1587","42","732","300","-300","14","188","350","1076","300","901","300","259","18","0","640","1578","84","843","-300","-300","18","-300","341","1344","-120","1424","-300","-300","585","-40","219","228","-300","447","-300","-89","816","300","1364","507","-300","568","300","-99","803","-300","1502","524","0","630","-300","-47","884","-300","903","943","-67","622","300","187","1382","0","939","735","0","59","130","300","-929","-233","-801","388","-300","-17","300","300","-740","-300","-807","685","-200","142","190","-264","-767","-300","-654","245","300","167","-300","265","-933","-300","-806","1315","-79","1114","300","-107","-1145","170","-1270","919","-300","342","300","300","-708","-300","-939","708","-300","336","300","0","-908","80","-802","1243","300","1136","300","274","-989","-300","-1402","-345","-300","-577","0","-300","-248","300","-170","-632","13","81","-240","300","-258","-52","94","-43","-300","84","-300","-300","305","72","53","-721","-48","-363","-300","-54","-18","-300","-29","94","141","175","246","-300","-741","21","-1412","509","0","-162","-243","0","-1025","-260","-928","240","0","109","-193","-135","-1323","-300","-1121","496","0","72","-300","58","-1114","-300","-821","-351","300","-822","204","0","-617","-132","-960","-372","300","-112","-80","300","-312","300","-665","-347","300","-108","-102","287","-611","3","-965","-793","-81","-563","300","-300","-901","-300","-841","-755","-206","-326","-72","300","-173","-300","91","-1025","-16","-718","-300","-300","99","-89","-30","-802","-300","-773","300","300","-330","-170","88","-920","-300","-1088","300","-175","101","158","-350","-441","-300","103","-300","202","563","86","791","-81","-19","-90","-235","42","695","180","193","-358","300","-202","250","123","443","-300","769","128","-300","-349","300","294","351","-300","383","530","300","590","300","0","-1179","-300","-1157","786","-74","283","-300","-75","-1139","300","-1249","827","-300","632","0","150","-573","-300","-748","666","-300","853","11","-300","-598","0","-645","-1488","-153","-652","-300","300","-421","300","-621","-841","-20","-943","-300","-121","-442","-111","-1079","-913","-300","-444","-189","-300","-719","300","-989","-1147","-128","-1365","300","-300","-774","-300","-554","1723","300","1441","254","-300","-226","300","-534","1667","300","1200","118","0","-568","-142","-400","1113","300","725","-300","300","-431","0","-839","1434","-300","1784","-64","58","-218","-300","-838","-1391","0","-578","27","0","209","-46","418","-1352","-98","-393","-300","-300","-98","16","515","-788","-300","-986","-300","-300","-98","300","515","-1634","300","-1442","-4","-61","499","196","125","-983","-228","-729","300","77","481","-300","214","-1533","-300","-700","300","-300","247","123","518","-1001","300","-504","300","-300","473","-300","818","-1263","-245","-1097","-300","300","165","-20","518","-938","-298","-211","-168","300","-423","163","-766","-861","300","-704","297","300","-125","-284","-768","-933","-265","-400","-300","38","-592","115","-769","-1077","-259","-956","300","300","-116","-300","-771","814","-300","1032","300","0","270","300","813","770","-144","1004","300","300","267","55","916","1186","300","697","131","300","866","0","424","1057","190","1066","-300","-300","257","-300","598","1270","-57","889","-300","-78","1196","-300","659","1065","-121","402","-266","-300","591","-300","1267","880","0","395","300","-72","1190","300","668","1354","300","1457","-300","0","710","0","663","886","300","870","-1","300","283","300","-293","383","300","670","-300","0","-18","-135","-319","406","-300","550","88","275","-318","-300","-66","1167","300","442","-164","-300","282","-300","-318","1459","-172","1065","300","180","673","-38","390","813","21","1033","102","-300","875","-65","996","1333","-300","1026","0","232","939","-282","396","1712","-233","908","-115","-300","506","-300","720","1494","300","1045","-252","287","109","-300","684","1365","-300","895","-300","169","53","0","164","1411","233","1190","207","93","52","147","378","1532","-145","1482","292","-300","67","-300","687","949","-97","1302","7","150","-1123","-7","-580","1200","0","946","-300","-300","-1057","300","-834","1000","248","733","-300","-300","-827","-162","-587","1405","-300","1003","300","0","-499","269","-585","691","300","580","-300","-300","265","-104","491","1252","239","540","300","79","393","-300","283","1284","0","921","0","166","91","300","595","1507","300","1334","300","-300","654","-261","138","302","223","-80","-175","-199","99","-151","127","564","0","474","-3","-300","451","300","731","573","-300","472","-121","300","398","-300","475","285","39","334","0","-34","566","300","729","-1619","300","-1026","226","-300","429","-300","84","-967","300","-535","280","-300","-160","300","461","-1010","300","-1126","300","-300","-139","-300","198","-1907","-13","-1662","237","-300","137","60","-134","-1276","300","-482","-45","175","-1244","-300","-1294","-1171","0","-570","139","0","-1228","-31","-1301","-669","-44","-518","300","-56","-926","-300","-1016","-889","300","-1318","10","150","-823","-300","-717","-906","300","-667","21","300","-163","54","-474","-1274","-300","-1063","300","-300","-460","-300","-475","-1080","300","-1056","240","-300","-160","-300","-475","-1770","300","-958","300","-232","119","-124","-175","400","-201","621","28","-99","-522","-179","-538","384","300","268","0","300","-220","-71","-183","698","-220","551","-300","0","-220","-66","-240","188","-244","718","-300","-240","84","85","-539","-935","-300","-317","300","-300","375","-300","351","-943","-175","-724","-7","0","75","-67","-219","-365","144","-647","96","-145","75","-300","-219","-516","0","-969","146","-239","92","-300","380","-178","300","157","-300","-34","-1116","-300","-1170","-395","-300","187","300","300","-1098","0","-783","-176","28","-155","300","300","-1096","-300","-733","-206","-300","103","-300","-300","-1082","0","-579","-716","300","-514","-2","0","-249","-300","7","-1042","300","-566","300","-300","-23","39","-572","-790","-300","-336","113","-300","-475","282","-572","-982","-300","-1070","-221","96","-526","300","-18","-61","0","10","159","288","350","300","320","-351","0","-229","-106","0","572","180","836","-59","300","-526","0","300","370","261","639","-740","-242","-377","0","-300","261","170","642","-664","-300","-668","300","-69","853","-300","563","-140","300","10","297","221","503","-300","871","-755","-300","-349","-296","152","750","-300","1171","-832","300","-178","0","300","488","-300","1167","-189","-300","-532","300","300","-58","-300","-95","-112","-175","-483","300","163","-6","300","-309","13","300","-8","0","-300","70","300","-298","-175","238","-601","-57","0","-305","300","-11","1368","300","694","-53","184","307","-8","310","1233","-96","376","-210","-193","319","161","-76","761","131","969","-197","-300","-136","-300","312","1141","111","1267","21","300","20","197","306","500","-300","341","0","0","421","35","751","1032","161","271","-300","300","163","0","155","494","300","801","-300","-250","721","146","528","1274","300","1134","-268","35","714","133","452","1059","0","379","-300","217","-1151","4","-988","1087","-11","818","-300","41","-1135","-300","-615","773","0","213","-300","-36","-820","246","-703","1140","281","555","0","147","-816","-281","-971","-1302","-300","-1292","70","300","125","142","116","-1041","-131","-1116","-300","-204","-45","-300","116","-1352","0","-812","-300","225","-238","-300","-484","-1524","300","-1128","143","0","-190","-300","-490","133","-8","-368","300","-130","6","-300","225","174","300","217","134","300","173","300","335","154","300","-83","300","-300","-164","-179","148","-460","-198","163","-174","293","434","140","447","-229","22","334","83","171","-689","-246","-898","368","-86","44","111","-300","-858","300","-303","32","149","-256","-112","-157","-557","300","-304","-58","0","374","-238","16","-248","-299","-300","38","3","-182","-300","-300","-134","300","477","-172","-108","186","179","-300","227","149","-42","122","-300","44","204","156","160","-156","404","-118","-300","-427","-66","-294","457","-300","-121","-122","219","-43","-300","137","877","300","917","-237","300","-332","85","-146","592","300","922","-289","110","-155","300","-300","715","-300","322","-600","-181","43","0","300","307","0","589","726","300","891","233","-67","242","4","557","830","300","438","-300","-300","529","300","521","859","-300","162","-168","-281","228","107","138","599","300","469","300","-100","523","-300","-38","-1218","-57","-1292","300","-34","-201","300","85","-1189","-300","-783","-300","300","-487","181","-515","-947","-300","-945","-300","300","114","-300","-177","-1208","300","-991","-53","-295","-182","300","51","1468","-300","840","300","0","440","300","-152","822","-300","439","300","300","432","300","-138","1160","250","1032","-300","119","-168","-300","149","1423","20","1231","-300","-292","-171","42","451","-959","300","-601","53","-300","382","-225","-121","-779","300","-471","-300","-245","-197","-300","89","-1086","10","-672","-43","300","294","-300","299","-1301","-300","-871","-48","-11","-219","300","-168","622","216","661","300","79","357","0","-64","968","173","448","300","298","87","-300","-202","990","33","517","-300","300","-36","300","48","578","300","425","0","-300","385","300","-201","-1422","300","-900","300","300","339","4","343","-1378","-300","-410","298","-300","347","0","-152","-1414","0","-403","-300","300","-253","7","-256","-1367","-288","-873","-169","300","189","-6","340","-1465","-300","-934","-300","-284","-25","300","170","-819","227","-829","-243","300","205","15","210","-1157","300","-1030","300","-146","-20","-158","299","-1419","300","-915","-53","0","-24","-300","-6","-806","300","-155","300","300","-909","-174","-1174","-845","-300","-659","300","-300","-613","110","-690","-753","300","-280","300","300","-1163","-300","-690","-930","120","-307","-300","-300","-1196","300","-685","842","-300","916","-290","0","-38","0","-162","797","-300","1022","0","-250","-443","300","-463","1130","199","1015","-63","-300","158","0","-299","1692","-300","891","169","300","160","300","134","-55","-300","-289","300","-300","-159","-135","-352","-641","0","-525","117","292","-134","186","-207","-436","-300","78","300","0","-180","57","-654","-432","300","-70","300","79","-10","162","-658","-123","300","-158","-300","0","760","-53","424","205","138","412","0","-300","436","287","426","-124","53","411","-110","-262","765","300","799","-84","7","485","149","-81","157","-300","602","-1222","177","-1040","300","300","571","0","292","-1174","-300","-473","-82","-300","578","-300","295","-1514","-300","-466","-300","48","-22","0","413","-1200","-300","-1011","-269","300","144","300","290","1141","300","855","-300","-300","111","-300","48","1216","0","858","0","-300","-494","-290","-506","1131","109","773","-297","300","-346","300","94","1587","300","1202","-300","-300","-359","-144","-202","-9","-300","-8","-289","300","-471","0","-161","-9","-78","-6","13","300","-473","185","-485","-53","300","-6","254","300","127","216","6","289","255","-310","-300","-300","-170","300","-483","-1117","144","-1055","-300","300","-734","36","-172","-964","0","-542","-20","300","-744","-300","-177","-1607","-300","-608","0","-210","-542","109","-327","-1903","-216","-1390","300","277","-137","-300","-772","648","178","768","298","300","542","-170","129","1211","169","900","300","300","326","291","557","703","-54","294","-290","300","-74","-4","257","856","300","689","0","-287","76","0","-38","-1009","300","-819","-4","300","421","299","431","-381","300","-537","300","-58","137","-300","133","-1004","300","-444","-300","0","426","-300","-167","-563","-300","-439","-300","0","-176","-168","-171","-401","196","-562","300","-135","548","211","733","-973","0","-744","-43","49","163","-92","135","-396","173","-331","104","-185","279","-226","735","-847","300","-1024","236","37","85","236","738","717","300","815","168","-122","-41","211","-102","1207","-52","943","241","263","451","-300","-141","811","-300","937","-39","162","-149","-300","-141","1539","300","1218","-190","100","149","-300","455","-58","-193","-111","-300","-300","-285","143","-926","385","6","-244","300","300","-547","-37","-331","87","-300","33","-300","-25","-704","-250","-331","18","185","-208","300","-300","-464","-212","-331","122","300","-196","17","-220","64","-224","170","-29","300","-113","300","267","590","-300","340","-477","-300","-412","-82","-142","289","-300","554","-516","0","-185","300","0","169","-193","609","-818","-19","-534","-62","300","602","197","22","-1006","0","-849","-196","0","-6","0","624","-1162","-6","-486","-264","-300","593","300","24","-1188","300","-1205","-300","300","-12","117","26","665","230","-7","-300","-6","399","300","-197","397","-98","-69","218","-300","85","300","-198","363","-300","351","-300","-207","384","266","102","145","0","639","300","-300","382","-300","-104","-73","-107","-359","2","-234","301","202","460","-70","-263","254","-300","85","137","27","162","228","87","-114","0","-300","111","-300","373","-250","0","224","-124","136","285","-129","485","-638","-300","-512","174","300","1120","300","874","-913","-300","-531","300","-300","675","257","880","-355","300","-700","126","235","1061","-11","1180","-804","-134","-774","300","-300","783","0","780","-371","300","82","229","-134","1060","188","971","-149","-300","204","300","251","758","240","820","-167","-179","109","260","175","1056","-300","1121","116","300","-158","-300","9","444","300","914","896","0","540","-300","-300","63","0","-46","755","-248","408","300","169","348","300","364","481","-249","422","-300","300","347","-300","-166","757","0","703","300","300","345","0","-230","-171","-300","232","-217","300","-49","-300","568","113","0","-167","127","300","-57","0","-31","-384","-300","-53","300","-133","242","-300","336","-403","-300","56","-96","-142","-62","-300","166","-683","0","-552","-300","39","930","300","518","-595","33","58","-110","-206","1060","300","524","-80","0","-493","300","0","1058","0","525","-166","0","-99","-228","-109","1046","-300","668","-946","-300","-642","-300","44","-1307","189","-798","-1141","300","-712","300","296","-718","-300","-807","-1420","105","-998","-21","121","-957","285","-1408","-1131","232","-1421","-300","203","-699","300","-1104","87","300","67","300","179","404","0","453","-205","-300","-117","-300","0","537","-300","588","69","-215","43","-92","300","618","300","731","-560","300","-27","300","300","79","-167","179","-467","0","-434","300","300","-404","-48","-981","140","-300","-106","-300","-293","-1001","0","-1060","-165","-13","181","-69","-300","-400","300","-1060","-503","-295","126","-22","-177","-883","-300","-966","736","-300","644","300","-300","26","300","647","719","300","-24","-300","-300","14","-300","48","542","-300","-27","-300","238","366","300","175","598","119","720","0","-300","7","-300","213","648","0","579","292","6","-331","300","-676","34","243","220","-100","188","-559","0","-647","46","-258","-82","300","0","-920","300","-979","702","300","644","300","-187","-310","300","-677","1256","300","494","-179","0","38","300","-157","918","-300","604","39","-29","-165","78","18","772","-251","598","300","300","-542","300","-582","1154","-300","697","-105","-300","-120","-300","-188","741","0","653","-300","92","78","-300","12","723","226","579","300","-53","-458","116","-299","154","-273","295","-300","300","54","-300","-513","513","-268","415","300","-300","-151","300","-220","905","103","294","-300","-300","-135","-300","-253","1011","300","768","0","300","-731","-300","-169","1007","287","307","300","300","-130","-194","-769","1202","-300","472","300","-94","-123","300","-748","-1035","-300","-551","300","169","-429","-144","-559","-1127","43","-920","98","-281","-583","300","-594","-1273","89","-565","300","-300","-113","258","-417","-1115","-16","-828","300","234","-554","156","-430","-1532","-300","-988","-300","300","662","-80","745","-1317","-73","-1080","-300","300","663","300","757","-1224","0","-1072","300","300","376","-260","1048","-1280","-300","-985","51","-300","364","169","567","410","-300","29","300","-300","-89","-23","404","694","-300","-41","-300","90","177","-300","179","509","-300","557","-200","-300","166","-300","499","441","0","517","300","-300","473","-14","45","44","300","-24","-300","-300","-593","113","-609","406","221","217","270","-300","-652","-32","-693","41","-300","429","-11","241","-51","-300","-393","228","-177","104","233","300","-345","300","-699","891","-300","984","300","300","-339","-19","-342","1122","300","772","-128","-158","-308","-300","-343","1121","-300","576","43","300","259","-83","-343","1118","-300","659","-300","300","-340","-138","61","1007","-177","403","-240","300","421","266","431","379","250","747","11","-62","64","-300","434","402","-251","524","-300","0","430","0","149","842","-204","1020","-300","-300","-56","172","-29","-1264","-300","-1297","-300","-300","1075","-300","1253","-1494","-300","-1087","-300","103","576","300","960","-1234","300","-482","0","300","1174","0","661","-1621","164","-1317","300","180","559","-300","1084","-445","-300","-201","196","-300","-825","300","-859","-900","-300","-246","-263","-300","-377","300","-863","-321","25","-463","289","300","-487","300","-563","-532","-220","-952","300","300","-627","5","-566","-973","300","-524","-300","300","-672","-300","-897","-687","182","-650","300","300","-861","-300","-943","-905","-300","-344","-300","0","-727","-300","-644","-952","300","-772","-300","-12","-544","300","-806","734","-300","768","300","300","678","300","1013","719","-300","669","300","-300","607","-300","541","739","143","191","28","188","887","300","624","412","0","909","95","-300","941","300","420","-454","-300","-64","-300","-300","135","300","218","-582","-148","-588","300","300","115","-300","-181","-151","-300","-285","-300","233","-184","-300","-181","-853","-300","-378","93","-300","14","30","-185","780","-300","845","0","300","381","0","335","653","300","730","-300","300","433","-194","576","975","168","126","-300","-244","-38","0","229","1065","-300","981","300","0","379","300","-30","1217","-63","766","-300","300","-966","-6","-1012","977","300","541","-137","300","-360","-7","-436","1020","184","1107","-97","-300","-959","-173","-447","1920","-300","1687","-300","-300","-648","300","-416","-551","-300","-442","0","-300","-43","-300","-509","-310","-300","-49","300","-300","-465","300","-72","-848","-107","-423","-300","300","-143","-195","-632","-721","300","-343","300","0","-634","300","-668","913","-300","486","0","22","-12","300","138","1177","-100","555","-160","-249","154","58","137","827","300","872","300","16","-145","300","-441","1008","300","1199","-159","300","-442","300","135","588","139","757","-300","212","-165","-43","-197","1153","300","262","300","175","-759","-300","-727","1182","33","256","181","300","-758","-300","-201","782","-300","626","300","-300","-751","-300","-801","-223","0","110","70","-300","-224","186","-645","72","289","-234","285","123","-27","73","-345","-195","300","-449","-300","-125","-627","-300","-49","11","-13","53","-300","147","-179","222","-44","282","-300","-156","-300","300","-503","300","-558","131","22","-142","-300","300","-1092","-252","-654","-318","-300","-12","-300","-300","-748","0","-1005","278","300","-19","219","-300","-627","-300","-590","-232","-300","355","-196","0","307","300","18","-235","-300","19","-300","-300","391","255","-116","-232","0","342","300","-48","391","300","402","101","-300","371","-52","300","-157","-163","-109","657","300","927","-66","300","1370","-227","895","634","-300","256","300","52","793","0","1342","1076","300","251","0","300","790","0","1492","652","92","815","-300","269","1372","-300","890","-1407","0","-984","300","62","823","-300","646","-763","0","-400","-229","252","673","-300","708","-1177","300","-806","-169","11","812","-300","263","-1648","300","-1154","-300","-300","203","0","836","-1482","-171","-648","-69","234","-412","-159","-230","-1289","-300","-624","-109","-277","-784","0","-234","-1174","300","-1041","0","32","-182","218","-234","-1140","153","-932","300","0","-387","300","-237","605","300","1026","300","300","-1264","300","-731","890","125","273","-289","-27","-824","-300","-1339","899","-300","867","-300","-300","-1252","-222","-1325","1403","-300","820","-300","-300","-940","-138","-1108","-1028","-89","-1365","300","300","-582","-300","-151","-1369","0","-1140","300","-137","-387","300","-405","-1619","300","-858","-275","-37","-458","-248","-525","-1318","300","-1214","-122","-300","-341","-36","-390","698","0","433","-300","-273","198","198","384","135","-300","-48","300","-46","381","71","21","95","300","185","-300","300","-42","-274","-99","785","300","115","13","83","312","-300","187","-1435","154","-788","300","300","-199","-222","-446","-791","-268","-419","0","-204","-495","0","-238","-1427","-300","-411","-55","0","-794","-207","-238","-1383","-300","-1465","-215","300","-785","0","-410","-1012","0","-1112","300","0","162","-115","248","-746","0","-641","248","220","102","-300","-186","-705","-300","-634","-255","-63","-198","-300","78","-1533","300","-756","300","300","-200","300","416","355","132","284","300","300","317","-202","226","929","-300","714","300","-300","787","-300","830","951","-300","503","-300","300","695","-300","231","798","0","786","252","0","178","300","506","-1023","-220","-958","-300","-289","301","54","355","-1088","-300","-319","143","300","-215","-39","-211","-515","-58","-682","0","265","385","0","-178","-1133","-172","-856","300","300","84","300","-214","1599","-67","1274","-62","-300","-561","0","-928","1548","300","877","-300","-281","-469","-207","-1146","1091","-224","514","300","287","-1066","300","-1068","1803","300","1355","300","-300","-1053","134","-550","-397","83","-410","-300","-138","-414","154","-2","-495","300","-141","210","-63","-47","264","-79","-993","300","-473","-49","-121","-288","-300","-372","-850","300","-441","38","-53","-283","-181","0","860","-300","629","-171","0","-378","-247","-199","1210","-300","433","-300","-300","-309","0","-411","1451","300","426","-300","300","-684","-21","-285","1150","159","909","47","300","-78","300","-405","-1143","-205","-585","-199","300","-242","-300","-576","-509","300","-404","-300","300","-541","-300","-688","-1078","-300","-828","238","-300","-220","-281","-580","-802","-300","-594","-28","174","-465","-300","-885","1668","300","1134","0","160","-789","-24","-1143","1614","0","1165","-56","0","-496","-300","-1146","1058","-77","857","300","300","-794","300","-550","1966","181","1426","-206","-145","-465","-232","-548"],"shape":["160","8","4"]}]},"inputs":[{"data":["-31","8","2","-31","-18","0","32","32","-5","-22","-30","-31","32","32","13","32","-21","0","32","-7","-29","32","-13","32","26","32","32","-15","32","-31","0","32","-13","23","-8","1","32","32","24","13","0","24","15","32","32","-31","32","32","32","-31","0","3","5","17","-31","19","31","29","32","28","-31","26","7","0","-24","-23","32","-31","-25","17","32","32","3","-31","0","-31","13","-22","11","32","-31","-31","32","15","32","-13","-31","14","32","26","32","-31","32","20","-19","-31","11","32","32","-31","-31","32","13","-31","32","-31","-31","5","-31","30","-11","-5","-30","27","24","-31","7","-31","18","32","-31","32","32","14","32","-31","-8","-31","0","32","32","32","32","0","0","16","0","32","6","32","0","32","-31","32","32","32","0","32","-7","-31","32","-31","-31","32","-12","15","0","32","-28","-31","10","32","-31","32","-24","-31","4","-31","8","-31","13","-13","32","28","21","7","-31","21","0","-31","-31","0","-25","-23","32","0","0","-31","-31","32","22","0","25","-5","-20","0","16","0","20","-23","32","30","31","-31","0","-31","26","-31","0","-31","-9","-31","32","32","4","1","-12","-31","32","32","32","0","32","8","-12","-31","-31","-31","32","-31","0","-31","-5","8","32","-10","-9","2","0","0","-31","-6","25","-13","-31","-5","-31","32","32","-31","14","32","-31","-31","32","-6","26","32","-17","32","-31","-31","-31","32","0","-10","-31","-31","13","-14","-31","18","-31","-2","0","32","4","-27","32","0","15","-10","29","32","0","5","-31","0","-27","26","32","32","0","32","-31","-31","0","-31","32","32","-31","2","-31","23","20","4","5","-21","32","-31","-31","-20","27","32","-31","30","-31","-24","32","-31"],"shape":["160","2","1"]},{"data":["300","-300","9","57","67","151","300","300","300","-300","-300","300","0","-300","-300","12","300","300","-170","-48","-300","-300","0","300","300","300","-193","300","155","0","0","-300","88","0","174","300","76","-300","300","-110","-183","0","300","108","187","300","300","300","300","-164","-300","-110","-91","-300","0","300","-300","0","300","300","300","178","-300","300","-181","300","300","-250","69","48","300","-300","300","-300","300","300","300","-300","300","-195","-221","226","300","-300","-156","300","-300","285","-164","300","300","10","-213","-279","-104","300","20","130","300","300","-300","300","-300","300","300","98","300","-300","14","-300","176","-300","-300","299","-300","300","-300","300","-300","300","300","-300","32","0","-300","300","246","-285","-300","300","0","300","0","300","45","-277","183","-300","300","300","-189","263","129","47","200","0","-132","-168","-114","0","-110","286","300","0","39","-7","79","-300","0","-300","-300","116","10","-300","90","-94","-211","-300","-300","106","-77","300","-175","-300","-267","300","-300","36","117","-300","174","0","0","-53","196","300","300","300","300","-141","-300","-300","300","-287","0","0","187","0","0","205","300","-300","179","-300","-48","-300","-300","300","168","0","-300","256","-250","300","265","-36","0","-300","300","-300","0","-54","300","0","0","22","300","0","300","294","-5","85","-300","0","-231","148","-206","244","300","-300","300","300","300","163","300","-300","300","97","-300","190","-228","-118","300","300","300","165","300","-76","45","-300","40","98","-300","300","300","-251","300","-300","237","300","-300","-300","63","-34","46","300","300","300","300","300","-40","-178","0","-300","0","-46","-254","0","183","-60","-35","177","300","202","300","-300","-107","229","300","-67","125","0","-300","-99","-59","0","175","-300","-300","-189","172","0","-179","-300","-52","0","199","0","-300","-142","300","-300","284","257","0","-169","-300","-300","252","-68","300","300","300","300","-300","300","-29","85","-300","-300","300","-300","300","300","-300","300","234","300","89","300","0","134","300","300","-300","300","-300","300","-199","-295","137","42","59","300","83","300","101","0","-300","300","-300","245","172","300","191","300","210","-217","-127","300","79","300","131","100","-300","0","300","300","0","0","-142","0","300","-239","23","-300","0","300","-300","77","-300","0","-44","300","-250","0","-300","38","-150","-300","300","300","51","300","203","-300","300","-261","300","0","-300","-300","300","-300","188","300","0","-100","300","34","-300","-300","299","300","300","300","-300","-6","300","0","-197","300","-300","-300","-300","-300","218","300","-138","-300","221","300","0","-300","0","-153","-300","-296","-186","-203","300","300","0","51","300","300","300","76","-300","-124","0","-300","-138","0","-2","300","-300","300","300","15","-155","300","-300","-300","0","-164","-300","-218","-300","-300","-190","298","-300","280","-300","158","300","300","0","300","-19","300","-35","135","103","0","-160","-300","135","-300","300","194","-232","-300","157","300","-300","300","-300","300","300","20","-300","300","-199","0","-300","262","-300","240","-5","-300","0","300","-300","0","300","0","-29","-300","-300","248","-101","-52","189","119","300","-239","-280","212","-171","300","-219","-300","140","-300","223","0","300","-300","0","85","162","-157","-191","300","-300","0","77","-38","-37","31","0","-205","106","300","-193","-300","-300","-300","300","-32","-300","83","13","300","-194","5","-233","300","81","300","300","218","0","-12","300","-89","0","-158","280","-300","0","-300","-300","300","-300","-142","163","19","-4","-300","300","-300","-300","0","157","161","285","-253","0","20","300","-300","300","-300","300","0","-300","-300","300","300","-166","-300","300","-28","269","300","-300","287","-300","-139","0","25","-300","300","-300","-300","-237","155","-97","300","92","-49","0","-300","0","-290","-300","209","103","-109","270","-237","-300","300","186","263","-300","-300","-300","51","0","-300","-300","-300","-55","100","125","34","-257","181","-300","-300","-155","141","-91","158","-300","300","-300","300","255","-210","300","0","0","300","-300","300","297","75","-160","-300","0","300","-300","300","300","208","-271","-300","45","300","300","-300","300","300","-300","300","-300","300","-300","-300","-285","300","300","300","0","270","-49","0","33","300","-245","300","-34","300","-287","-300","-300","-87","-300","-300","-300","-258","0","-300","73","-300","-300","281","-300","300","0","300","283","300","-189","-300","-227","-300","-300","300","45","-222","-291","-300","-73","-300","-263","67","300","-271","-300","-300","118","300","-300","-35","0","-300","300","-300","0","-300","0","300","162","72","161","0","-300","133","-217","300","300","-106","300","126","205","-300","-300","-117","-295","-300","300","149","-29","0","270","300","-34","300","300","0","-300","-300","300","-144","300","300","300","290","-138","0","8","300","89","-172","-73","-300","-300","-300","0","163","-170","-300","-135","8","117","-287","-274","300","300","-300","-300","-300","147","-61","-300","178","-153","0","300","300","300","0","300","0","-300","-300","216","81","0","-300","269","-300","-300","300","300","156","300","-202","300","-300","-300","-276","141","-300","-300","-300","-63","300","300","-55","-74","-300","-300","0","-300","300","-300","-121","-21","300","-201","175","-300","297","-300","300","0","-300","30","-300","300","300","0","-281","-300","300","300","-300","300","-144","-300","-26","-173","300","-300","-269","300","300","-151","190","-76","-300","300","148","-300","0","300","-300","0","-300","300","-300","141","-300","-300","-117","-158","-98","300","300","201","0","300","118","-300","-300","-3","300","158","0","-251","111","-133","300","300","-300","-39","0","0","199","-95","300","-300","-300","-300","-64","200","218","300","-87","176","-300","0","-300","23","191","-300","216","-300","282","16","-15","-300","290","-300","226","-264","300","-103","-300","-136","-288","-300","-299","-300","-300","-300","0","300","-300","-115","300","300","300","300","300","300","-1","300","300","300","300","266","218","-300","-300","-19","-172","0","166","300","-300","-300","91","-300","168","-252","-300","-43","-300","-300","300","51","-100","-154","130","-127","300","-49","-300","-300","-300","300","0","-263","0","-300","-239","-300","-300","285","-300","0","-130","300","-300","300","-300","-300","106","-300","-197","99","-176","-226","300","-231","-90","0","-300","29","-300","-24","114","300","-300","235","116","-229","172","-118","300","-300","-300","204","300","163","-234","-279","135","-120","227","-300","208","258","300","0","300","-300","-300","300","-300","300","-300","300","300","-300","-300","145","300","300","259","-300","300","7","300","-300","300","300","-300","92","-300","-300","-60","84","27","-300","300","-198","-164","-128","300","112","-300","-300","51","-300","220","300","-25","-58","-160","0","300","-293","129","-141","-300","100","300","199","-300","300","-300","0","45","0","80","-300","0","-300","0","64","-69","-300","-300","300","300","0","215","234","300","-216","0","300","210","242","269","-147","-300","-300","300","65","300","-56","-300","-61","-158","-300","300","-300","300","100","197","-248","263","300","300","-137","0","272","0","300","300","-300","227","133","-300","300","-300","0","-300","298","200","293","186","300","-111","-1","0","-300","300","-208","300","7","-231","285","-300","300","0","-300","0","300","-137","-292","-260","-121","-300","-289","-96","-279","-300","300","69","149","-300","-300","-300","300","300","-300","-300","300","-90","300","265","-48","244","-92","300","-300","300","300","67","300","-300","-300","-300","-147","-300","300","-300","36","0","0","49","300","300","-48","289","277","0","0","0","-139","0","0","-300","-300","0","193","-300","-300","158","300","-59","143","-300","0","258","300","0","64","210","-169","-300","-25","300","0","300","-300","-300","224","-300","-112","223","-300","-300","-300","-300","-300","201","300","264","300","300","85","-300","-300","-291","300","300","0","0","61","49","-300","190","-94","-186","-300","-300","-211","0","150","-300","-300","0","-300","-243","277","300","-300","-11","63","-300","300","-239","299","-300","300","300","0","-300","300","0","-237","-35","-300","-154","282","0","-43","-300","300","183","188","-300","-275","76","-300","-278","0","300","-300","300","201","-106","-265","-300","300","0","300","117","-24","283","-300","300","0","-300","300","58","290","-124","300","-222","300","-86","0","0","0","-300","300","-300","-300","50","64","-300","-255","300","88","62","300","-300","300","300","-300","-71","30","300","0","-300","-300","300","-300","300","300","300","-300","124","-300","300","203","169","-300","0","0","0","-300","205","-265","300","300","-22","0","300","300","0","300","300","217","-218","289","-300","300","73","-3","285","300","0","300","-300","0","-300","32","0","300","300","0","272","155","300","300","257","-289","135","0","-149","-168","-113","-300","0","300","0","77","-189","300","0","300","300","-232","300","300","-37","-300","218","-300","-300","-300","-270","300","0","35","300","300","-300","300","-300","300","169","300","0","-196","300","300","129","-300","-44","-300","0","300","42","-300","300","-300","-300","188","13","-160","300","87","300","259","-300","0","300","300","84","37","-300","-300","-300","-300","0","-224","-120","81","-300","-300","272","-40","-117","-300","-300","24","-300","-89","-300","300","172","0","-300","234","300","-99","-300","-300","300","0","0","300","-300","-47","-217","-300","-300","300","-67","72","300","187","300","0","-261","288","0","-300","130","300","-180","-233","0","-42","-300","-300","300","300","0","-300","0","241","-200","-138","190","-264","-29","-300","153","-300","300","-300","-300","265","-207","-300","0","300","-79","300","300","-107","-121","170","-176","-56","-300","-300","300","300","300","-300","163","-300","-300","-300","300","0","98","80","300","6","300","77","300","274","0","-300","-300","0","-300","-300","0","-300","-300","300","-224","-300","13","300","-240","300","-300","-52","41","300","-300","300","-300","-300","264","72","0","-300","-48","-3","-300","-54","-58","-300","-87","-124","141","0","246","-300","300","21","-300","300","0","-300","-243","0","0","-260","192","23","0","-27","-193","-135","-300","-300","0","230","0","-155","-300","58","-108","-300","300","300","300","-300","204","0","0","-132","-300","254","300","300","-80","300","300","300","0","300","300","300","-102","287","0","3","-300","0","-81","116","300","-300","-300","-300","-178","0","-206","280","-72","300","20","-300","300","-300","-16","-240","-300","-300","300","-89","181","-52","-300","-300","300","300","-128","-170","300","0","-300","-300","300","-175","300","158","-144","-300","-300","216","-300","202","102","86","300","55","-19","0","-235","42","250","180","-300","-218","300","-113","250","123","0","-300","276","300","-300","-202","300","294","-84","-300","-115","0","300","165","300","0","-300","-300","-216","277","-74","-52","-300","-75","-265","300","-300","300","-300","300","0","150","300","-300","201","20","-300","300","11","-300","260","0","300","-300","-153","300","-300","300","300","300","152","300","-20","-191","-300","-121","278","-111","-300","267","-300","300","-189","-300","0","300","-209","300","-128","-126","300","-300","-67","-300","221","300","300","300","254","-300","274","300","0","300","300","300","118","0","-74","-142","139","-300","300","-166","-300","300","62","0","-300","-300","-300","300","-64","58","267","-300","-300","-296","0","300","27","0","12","-46","206","-300","-98","300","-300","-300","-300","16","300","300","-300","-300","-300","-300","-300","300","300","-300","300","-300","-4","-61","300","196","-86","300","-228","300","300","77","0","-300","-300","-300","-300","112","300","-300","-227","123","0","274","300","300","300","-300","0","-300","300","300","-245","242","-300","300","-300","-20","0","-300","-298","300","-168","300","14","163","-300","-248","300","-300","297","300","300","-284","-300","-300","-265","0","-300","38","-169","115","-300","-300","-259","-291","300","300","300","-300","-300","-300","-300","139","300","0","-300","300","203","-300","-144","300","300","300","-300","55","300","80","300","0","131","300","300","0","-192","-300","190","-95","-300","-300","-300","-300","-15","161","-57","0","-300","-78","300","-300","-300","0","-121","-300","-266","-300","-300","-300","300","-222","0","-300","300","-72","300","300","-300","2","300","300","-300","0","-165","0","-300","175","300","300","-1","300","300","300","-275","-300","300","220","-300","0","0","-135","-300","-300","-300","105","88","275","-300","-300","-47","300","300","-300","-164","-300","300","-300","-300","300","-172","136","300","180","28","-38","-300","-300","21","300","102","-300","234","-65","300","182","-300","300","0","232","300","-282","-300","300","-233","-300","-115","-300","-123","-300","26","73","300","-94","-252","287","-250","-300","300","0","-300","-4","-300","169","-300","0","-222","0","233","300","207","93","-300","147","-9","-200","-145","0","292","-300","-279","-300","300","-300","-97","300","7","150","-300","-7","300","0","0","156","-300","-300","-242","300","53","-241","248","-49","-300","-300","-14","-162","300","-117","-300","-300","300","0","300","269","300","-300","300","-214","-300","-300","-141","-104","59","300","239","-87","300","79","0","-300","-152","300","0","300","0","166","-300","300","160","300","300","300","300","-300","270","-261","-300","27","223","-300","-175","-199","-300","-151","-300","300","0","300","-3","-300","52","300","300","300","-300","300","-121","300","0","-300","43","-50","39","47","0","-34","175","300","300","-300","300","32","226","-300","277","-300","-77","300","300","300","280","-300","-300","300","300","300","300","-300","300","-300","-278","-300","37","-300","-13","-287","237","-300","0","60","-300","-300","300","300","-45","175","-300","-300","-286","-234","0","48","139","0","-300","-31","-285","300","-44","93","300","-56","0","-300","0","300","300","-300","10","150","87","-300","300","300","300","300","21","300","0","54","-300","-115","-300","-300","300","-300","-300","-300","-300","118","300","-300","240","-300","0","-300","-300","-300","300","300","300","-232","276","-124","0","0","-201","300","28","-99","-300","-179","-300","0","300","15","0","300","0","-71","57","300","-220","300","-300","0","0","-66","0","-300","-244","300","-300","-240","300","85","-300","-265","-300","220","300","-300","300","-300","271","-300","-175","-300","-7","0","0","-67","-300","300","144","-227","96","-145","0","-300","-300","300","0","-270","146","-239","18","-300","300","0","300","300","-300","-34","-300","-300","-300","-224","-300","300","300","300","-300","0","93","0","28","-43","300","300","-300","-300","144","10","-300","288","-300","-300","-300","0","300","300","300","300","-2","0","0","-300","275","-67","300","77","300","-300","235","39","-300","219","-300","300","113","-300","-217","282","-300","255","-300","-11","-221","96","-272","300","248","300","0","300","159","288","-231","300","-300","-4","0","0","-106","0","0","180","211","300","300","-300","0","300","-200","261","14","-300","-242","0","0","-300","-300","170","17","-206","-300","-300","300","-69","46","-300","-300","300","300","300","297","221","-300","-300","0","-300","-300","-62","-296","152","-52","-300","300","-274","300","300","0","300","-300","-300","300","100","-300","-300","300","300","-49","-300","-86","166","-175","-300","300","163","0","300","-300","300","300","173","0","-300","75","300","-289","177","238","-300","-57","0","-300","300","0","300","300","-162","-53","184","300","-8","300","207","-96","-300","-210","-193","300","161","-88","-300","131","300","-197","-300","-156","-300","300","-160","111","153","21","300","0","197","300","-300","-300","-300","0","0","0","35","300","264","161","-235","-300","300","-258","0","-300","-300","300","300","-300","-250","300","146","72","300","300","300","-268","35","300","133","0","239","0","-278","-300","217","-300","4","-80","300","-11","300","-300","41","-300","-300","300","-41","0","-300","-300","-36","12","246","212","141","281","-300","0","147","2","-281","-55","67","-300","-194","70","300","300","142","300","274","-131","-250","-300","-204","115","-300","300","7","0","46","-300","225","-79","-300","-300","144","300","300","143","0","-34","-300","-300","265","-8","-262","300","-130","-131","-300","79","300","300","300","134","300","37","300","187","285","300","0","300","-300","-300","-179","0","-300","-198","300","-174","293","300","140","300","-300","22","277","83","171","-131","-246","-300","300","-86","0","111","-300","-300","300","300","-38","149","-300","-112","-157","0","300","300","-144","0","300","-238","16","300","-299","300","217","3","-38","-300","-300","-300","300","300","0","-108","300","179","-300","67","149","-220","300","-300","157","204","156","0","-156","226","100","-300","-240","-66","-294","300","-300","-300","125","219","155","-300","137","300","300","300","0","300","-176","85","-146","20","300","300","-44","110","0","300","-300","144","-300","-300","-300","-181","300","0","300","-254","0","-31","-11","300","300","233","-67","0","4","300","122","300","-28","-300","-300","300","300","263","127","-300","-300","-168","-281","0","107","-120","-300","300","-300","300","-100","300","-300","-300","20","-57","-300","300","-34","3","300","300","0","-300","0","-300","300","-300","181","-300","282","-300","-169","-300","300","300","-300","38","300","300","300","-53","-295","0","300","273","300","-300","-96","300","0","300","300","-300","-300","-300","-300","300","300","300","300","-287","0","250","300","-300","119","-300","-300","0","0","20","13","-300","-292","-300","42","300","164","300","300","53","-300","300","-225","-209","300","300","240","-300","-245","-280","-300","0","29","10","32","-43","300","211","-300","210","67","-300","300","-48","-11","-300","300","-256","-73","216","104","300","79","265","0","-161","300","173","8","300","298","0","-300","-300","300","33","82","-300","300","-122","300","-50","-269","300","-300","0","-300","300","300","-300","-300","300","0","300","300","300","4","300","-300","-300","300","298","-300","300","0","-196","-300","0","300","-300","300","-300","7","-300","0","-288","297","-169","300","143","-6","300","-300","-300","0","-300","-284","-300","300","-125","300","227","-92","-243","300","-75","15","-89","0","300","-300","300","-146","-300","-158","0","0","300","300","-53","0","-300","-300","-300","-238","300","300","300","300","8","-174","-193","-300","-300","-300","300","-300","300","110","300","-189","300","76","300","300","-252","-300","300","-238","120","285","-300","-300","-300","300","300","-300","-300","0","-290","0","115","0","0","-300","-300","300","0","-250","-300","300","-300","-4","199","300","-63","-300","300","0","-137","300","-300","-300","169","300","300","300","300","300","-300","-4","300","-300","172","-135","0","-300","0","-300","117","292","183","186","147","-84","-300","300","300","0","136","57","-300","0","300","300","300","79","300","162","-300","-300","300","-300","-300","0","300","-53","-70","35","138","300","0","-300","-29","287","-73","-300","53","300","-110","-262","300","300","300","-300","7","300","149","-81","-300","-300","109","0","177","-60","300","300","300","0","0","0","-300","300","-82","-300","300","-300","0","-300","-300","300","-300","48","-300","0","117","289","-300","264","-269","300","-130","300","0","-300","300","-300","-300","-300","300","-300","251","-168","0","-53","0","-300","-300","-290","-300","-300","109","-129","-297","300","-152","300","300","-168","300","-300","-300","-300","-168","-144","0","0","-300","0","-289","300","-300","0","22","0","-78","0","13","300","-300","185","-300","-44","300","0","254","300","300","216","192","300","255","-300","-300","-300","0","300","-300","199","144","0","-300","300","-294","36","300","300","0","291","-20","300","-300","-300","300","-300","-300","216","0","-210","-98","109","150","-300","-216","-18","300","277","300","-300","-300","-300","178","8","298","300","300","-170","-127","300","169","300","300","300","99","291","300","-239","-54","-300","-290","300","-300","-4","0","-300","300","-300","0","-287","-146","0","-300","-300","300","-251","-4","300","300","299","300","300","300","-88","300","-58","11","-300","0","-300","300","0","-300","0","300","-300","-300","300","-300","300","-300","0","-300","-168","-300","300","196","0","300","-135","142","211","300","-300","0","-300","-43","49","-230","-92","-300","300","173","108","104","-185","-113","-226","300","7","300","-293","236","37","-300","236","300","-300","300","0","168","-122","-186","211","-259","230","-52","300","241","263","300","-300","-300","-199","-300","300","-39","162","-300","-300","-300","300","300","157","-190","100","0","-300","300","-146","-193","-182","-300","-300","300","143","-300","300","6","-300","300","300","34","-37","300","0","-300","-22","-300","-25","-124","-250","300","-89","185","-300","300","-300","107","-212","298","300","300","-53","17","-220","-224","-224","-139","142","300","0","300","267","300","-300","28","-300","-300","-300","-82","-142","0","-300","242","-300","0","0","300","0","-116","-193","300","50","-19","162","-62","300","300","197","-300","-172","0","-300","-196","0","-300","0","300","-300","-6","58","-264","-300","300","300","-300","-130","300","-300","-300","300","-300","117","-300","300","230","-300","-300","-6","300","300","-300","46","-98","-300","218","-300","0","300","-300","0","-300","122","-300","-207","300","266","0","-300","0","258","300","-300","300","-300","-212","0","-107","-300","2","-234","-133","202","0","0","-263","300","-300","85","-276","27","-300","300","87","-68","0","-300","-300","-300","-89","-161","0","300","-124","136","-119","-129","16","0","-300","0","174","300","300","300","0","-300","-300","-127","300","-300","-124","257","0","279","300","-300","126","235","264","-11","300","-27","-134","-108","300","-300","0","0","-104","-220","300","203","229","-134","300","188","158","-4","-300","300","300","251","0","240","0","-17","-179","204","260","175","300","-300","300","300","300","0","-300","9","-300","300","98","222","0","0","-300","-300","0","0","-110","107","-248","-18","300","169","300","300","300","-189","-249","0","-300","300","300","-300","-229","-64","0","0","300","300","300","0","-300","-87","-300","300","-217","300","-300","-300","300","194","0","-113","127","300","-300","0","-300","-300","-300","0","300","-133","0","-300","67","-300","-300","144","-96","-142","-300","-300","-105","-300","0","-245","-300","39","166","300","-300","-227","33","300","-110","-206","300","300","-300","300","0","-253","300","0","300","0","-300","300","0","300","-228","-109","300","-300","-153","228","-300","300","-300","44","-280","189","300","-13","300","31","300","296","300","-300","300","-254","105","-262","-21","121","59","285","-300","300","232","-196","-300","203","300","300","0","300","300","238","300","179","0","0","24","0","-300","18","-300","0","150","-300","157","281","-215","177","-92","300","232","300","300","-300","300","196","300","300","-300","-167","-257","-300","0","-300","300","300","300","-48","-228","300","-300","0","-300","-293","-300","0","-300","0","-13","286","-69","-300","300","300","-300","-300","-295","300","-22","-177","-195","-300","-210","300","-300","294","300","-300","-300","300","300","300","300","-300","-300","-300","-300","-300","-300","109","-300","-300","-300","238","54","300","-173","67","119","265","0","-300","-300","-300","-139","300","0","300","292","6","300","300","-2","-300","243","0","-100","188","63","0","32","-300","-258","-300","300","0","-300","300","-300","278","300","281","300","-187","300","300","2","300","300","-272","-179","0","300","300","123","0","-300","0","39","-29","92","78","300","-177","-251","0","300","300","-286","300","-300","-10","-300","-300","-105","-300","131","-300","95","300","0","300","-300","92","280","-300","225","300","226","300","300","-53","-274","116","-86","-284","-273","19","-300","300","237","-300","-300","-24","-268","-45","300","-300","29","300","0","164","103","-300","-300","-300","300","-300","212","300","300","300","0","300","-300","-300","300","272","287","-157","300","300","300","-194","-300","300","-300","-300","300","-94","300","300","-280","-55","-300","235","300","169","0","-144","-103","-186","43","-300","98","-281","-169","300","-135","-300","89","49","300","-300","300","258","42","79","-16","194","300","234","-148","156","33","-300","-300","0","-300","300","-38","-80","0","-133","-73","-300","-300","300","-15","300","7","0","0","-300","300","300","-300","-260","298","221","-300","300","51","-300","-300","169","-188","0","-300","-300","300","-300","-277","-23","205","300","-300","-300","-300","90","0","-300","-21","102","-300","300","-200","-300","-10","-300","300","-59","0","89","300","-300","300","-14","-158","-300","300","-300","-300","-300","-224","113","-218","76","221","0","270","-300","-300","-32","-300","-300","-300","214","-11","241","300","-300","0","-191","-177","-255","233","300","0","300","-300","-29","-300","247","300","300","-300","-19","-300","239","300","190","-128","-158","-267","-300","-300","208","-300","0","43","300","300","-83","-300","-3","-300","-300","-300","300","-300","-138","103","300","-177","-164","-240","300","300","266","300","-300","250","300","11","-62","-66","-300","300","-300","-251","81","-300","0","300","0","15","-19","-204","283","-300","-300","-184","172","-157","-21","-300","-300","-300","-300","182","-300","300","-300","-300","-300","-300","103","-300","300","0","0","300","297","0","300","300","0","-300","-107","164","-21","300","180","-300","-300","122","180","-300","300","196","-300","-300","300","-300","-300","-300","150","-263","-300","133","300","-300","300","25","-71","289","300","22","300","0","229","-220","-300","300","300","-127","5","0","55","300","300","-300","300","205","-300","39","300","182","0","300","300","0","-300","0","116","-300","300","-300","0","132","-300","300","300","300","300","-300","-12","300","300","139","150","-300","300","300","300","10","300","300","158","-300","300","300","-300","-47","-300","-177","159","143","-175","28","188","235","300","-94","-300","0","300","95","-300","300","300","-300","0","-300","300","-300","-300","27","300","101","-146","-148","-300","300","300","0","-300","-300","300","-300","0","-300","233","-300","-300","-300","-300","-300","96","93","-300","-100","30","-300","100","-300","300","0","300","128","0","62","0","300","300","-300","300","171","-194","300","300","168","-300","-300","-244","-300","0","-48","237","-300","272","300","0","121","300","-300","-112","-63","-300","-300","300","-300","-6","-300","-300","300","-300","-137","300","300","-7","282","-300","184","274","-97","-300","-300","-173","272","300","-300","300","-300","-300","0","300","300","0","-300","0","0","-300","300","-300","-140","220","-300","300","300","-300","-118","300","300","-300","-107","-77","-300","300","204","-195","-259","-49","300","232","300","0","-292","300","-300","0","-300","-246","0","22","141","300","300","300","-100","-23","-160","-249","300","58","300","-80","300","300","300","16","0","300","-278","-105","300","247","-159","300","-300","300","300","-300","139","45","-300","212","300","-43","300","300","300","-300","300","175","-300","-300","-226","300","33","-300","181","300","-300","-300","300","-300","-300","-300","300","-300","-300","-300","-300","14","0","300","70","-300","97","186","-300","300","289","-84","285","123","300","73","4","40","300","-300","-300","-125","-300","-300","300","300","-13","300","-300","147","142","222","300","300","-300","-141","-300","300","300","300","300","149","22","-130","-300","300","-300","-252","211","-300","-300","0","-300","-300","43","0","-140","300","300","0","219","-300","150","-300","274","-300","-300","300","-196","0","211","300","-84","-300","-300","-24","-300","-300","300","255","-218","-300","0","300","300","-48","300","300","300","18","-300","300","-52","300","-246","-163","-213","-125","300","300","-66","300","264","-227","-287","-117","-300","-238","300","52","-300","0","151","300","300","-238","0","300","-300","0","300","-300","92","0","-300","269","300","-300","-300","-300","0","-96","300","62","300","-300","87","300","0","300","-229","252","159","-300","145","-78","300","-112","-169","11","300","-300","-300","-300","300","0","-300","-300","-300","0","272","-300","-171","300","-69","234","86","-159","300","-154","-300","124","-109","-277","-300","0","300","0","300","-300","0","32","300","218","300","300","153","300","300","0","87","300","300","-300","300","300","300","300","-300","300","300","20","125","-300","-289","-27","130","-300","-300","0","-300","300","-300","-300","-300","-222","-285","300","-300","-124","-300","-300","-4","-138","-71","300","-89","-300","300","300","-221","-300","233","-93","0","-300","300","-137","-38","300","-18","-300","300","-26","-275","-37","-111","-248","-138","300","300","171","-122","-300","0","-36","0","300","0","114","-300","-273","120","198","300","-247","-300","-300","300","-46","300","71","-64","-300","300","-64","-300","300","-124","-274","-184","300","300","-300","13","83","232","-300","104","-300","154","122","300","300","300","-222","88","300","-268","300","0","-204","0","0","300","-300","-300","300","-55","0","-300","-207","300","0","-300","-281","-215","300","-300","0","127","0","0","-300","300","0","55","-115","134","226","0","0","248","220","0","-300","-300","300","-300","0","-255","-63","-300","-300","-36","-300","300","300","300","300","-300","300","300","-300","132","-241","300","300","-175","-202","-300","300","-300","300","300","-300","300","-300","300","300","-300","93","-300","300","209","-300","-300","0","0","103","252","0","-300","300","-23","-202","-220","-300","-300","-289","220","54","268","-300","-300","201","143","300","-300","-39","-300","300","-58","-168","0","265","300","0","-267","-133","-172","0","300","300","0","300","-300","300","-67","232","-62","-300","228","0","-87","300","300","55","-300","-281","300","-207","-300","-199","-224","-300","300","287","-300","300","-221","220","300","0","300","-300","-300","134","300","300","83","149","-300","-138","-133","154","300","175","300","300","210","-63","240","264","226","-300","300","-36","-49","-121","0","-300","-66","0","300","286","38","-53","0","-181","300","-299","-300","-300","-171","0","0","-247","207","97","-300","-300","-300","-300","75","0","0","300","300","-300","-300","300","-300","-21","126","-262","159","-300","47","300","300","300","0","-300","-205","91","-199","300","300","-300","0","300","300","129","-300","300","-19","-300","-109","-241","-300","-300","238","-300","300","-281","0","224","-300","285","-28","174","46","-300","-300","300","300","38","0","160","0","-24","-300","300","0","300","-56","0","283","-300","-297","-300","-77","0","300","300","-16","300","300","300","181","0","-206","-145","300","-232","300"],"shape":["160","8","4"]}],"scalars":[]}],"graph":"57484731010100003500000030000000020001000000000000000004000000000000000004000000040000000000000000000000000000000000000000000000010000001000000010000000000000000000000000000000000000000000000034000000a000000080020000e1ffffffffffffff2000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000800200008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000050000008002000000000080ffffffffffffff7f00000000050000008002000000000080ffffffffffffff7f00000000a50000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000400100008000000000000000000000000000000000000000050000008002000000000080ffffffffffffff7f00000000050000008002000000000080ffffffffffffff7f00000000a50000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000e00100008000000000000000000000000000000000000000050000008002000000000080ffffffffffffff7f00000000050000008002000000000080ffffffffffffff7f00000000a50000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a000000080000000000000000000000000000000000000000201010000000000020000000d00000000000101040000000000010000010101000200000003000000b10200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000660000001cfb7c9e5f60de2d6d8f75d7758a8aa1b931096ef1b2a7b4370c8c1a716613b133a2243f561bff9176c30108646884098d5bf14cc3ea4b5fad7f1a22a143c0899f4351d37d8a68df02f2a82cd92a0a3d181a83bfdf3abd0c4dd1a1d8fa9d3346178cd2c3608e457a6af796f3e71f418ae5a5122fa7a03c096169056974ecc2ad2a7f19a19c9f3b890253e664471af9f3fb41d470e5a2822fc52b2de17c27be9e07688703e8dd9a67dcb9a14c2ebd61a2d20314e13a07d03dd7d31786af809e8ffbd82846ce231c5b5117ee1112046d6faed6f9e545094119f873a4ea51be205090a7da06f749a58d3b9391ce9abbe5612cea6528e5605612b1f3d565dfa5d0003f4263a38bf61b34b0fe62db1caa99e12a51ce0040ab6dd0792ec786aa88e314fc6311c9b6d2ec4a1697f810675c8a394d295c37c6b8c475832be8e3aeae33812d4f7eecf16b737082897ad00d1def886708bf49daa0749b5a5b7b16a04cad25bb8c7e4101c86fa98f6895b877c116a6160d82555dbbde0d13ac88155aebe2db367ec706280ac73f8cc0188d63ef8bc13f26bb52f74595a38a3fa66f788495680066784963b1010d6f10c0bd6810eef2e4492b6ed0bd45dfa8c6f4f4dea773df16e977df457486d9695ce960f1bd965d792ecabc5285cc6bb56d4f2d0c9b15e87bf10e8b929544972fce2d7bebee2e7c54f0a92f477b7b86259e365fcfadcc95d6c45a6b788f4601c450a7f8c2b24eaef495c42bd5431f125d3324446c63b6d8021854ed9a2d090af1c73f7c97f72222fccf72a9bda9a6de18e3d70d8817cc66b991dc5f67b630fc29929172947a00f1ad7ee83ac7ec0b47f1626bc5bd505b8e51ea3348e82bd9d5676797751bb5b6ac7d9f828b89f6e3534db4e3c42cf9268175110101000300000004000000bd000000020000000400000004000000020000000200000001000000010000000000000000000000020000000002010104040000000400001ea4d90000e35ffffff54bef6437161ba86ac268c77023d36a9ea2936b8b2206045981dd9f62182f816753b6fc96d08d5e28f320fb08a920018003c2c8c467334906be28a40652e31d261acec692b8a2ad16956db129fcba82dd52d78f77432edb0c9704e67b7ccd8b20e0ff4e87a54f4da1500a7361a23d040e6a7b1560d914b5ceb2bc5999253f290b01010004000000050000001000000000000000000000000000060000000000010101000500000006000000810000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000390e00001f6a7affff87ee0000db17c0769e52ff9f9d496cad964cb4d62b70ab6c7c96fbf05897d2657321183225f3e6fea27892467dd2f7bdf91940b86bbbdb35f172f4d9e146f44d8f43de2b0d15928dadb17c610b01010006000000070000001000000000000000000000000000060000000000010101000700000008000000316400008002000003000000030000000100000001000000010000000100000001000000020000000002010104040000710000001a3889ffff7c9d00000b79ffffb8610000f864ffff7f760000311b0000e6beffffb44c000090940000e3cfffffda6e0000b0260000c14f0000aba800001918ffffa80cffffddfd0000de39ffff5232ffff5e5300003e0c0000baf5ffff5a72ffffeb76fffff108ffff8aa40000d3c5ffff5de100005789ffff3d82ffff1926ffffffe20000d058ffff1b7000004d63fffffc4a00000e62ffffa538000041400000306a0000e24e000050d90000c6d200002c6dffff6a5bffffd8f7ffff3ca8ffffb9caffffde4600006868000050b4000036eaffffda90ffff3a61000067a700004b2a0000aa9effff6ee2ffffe73d00009a59ffff4909ffffcea8ffffd192ffff2e88ffffebe2ffffda810000a12bffff460dffff44920000dd2e000063bf0000f4fc00001e5affffb611000058d20000dbf30000120b0000103cffff5480ffffc3050000bdfcffff6cf1000072c8ffff04f1ffffd6fcffff2a1fffff0fe7ffff6ab0ffffcd0dffffba8bfffff58b0000997a0000ae6fffffe86cffff254800006754000052f10000245c0000bc4e0000b6ecffff2b9effff04340000a473fffff2bbffff391300002de1ffffc36fffffcb33000060cfffffbbe5ffffa4590000499bffff55dc0000f3360000ebe3ffff36a30000684a0000c91b000007e7ffff562f00002fab00007577ffffe140fffff2c2000076e9000053a6ffff57ba000023a600009957000080870000842dffffb4040000cb8500004b50ffff96d20000fa8affff064d00007fe7fffff62c000040b8000012eeffffdfb5ffff61f1ffff760700000e4600004b7cffff903effffa31fffff563bffff3007ffff4abf0000edc50000d24f0000546b000055f2ffff2317ffffb954000080a0000060e90000949c0000d248ffff619cffff1a020000bd240000f008000048f90000c64300006ac00000e154ffff94dd00004cee00007ff3ffff3ff4ffff9236ffff6db6ffff48d8ffffadc9000051adffff15e3ffffd04b00008a1e000026760000f32d0000b92400004c83000021050000e841ffffafb10000dd33fffffc930000ac440000172e000058e6ffff2d350000cda50000b1260000cc37000068cbffff6cdbffff52d800007134ffff3634ffff4cbaffff888efffffbb20000652800002005000008feffff479b0000101e000016f400008ab1ffffe35100009d750000f8c4ffffab8dffff8062ffff149f00006be8ffff9b9effff4159ffff5b450000e10b0000bd41ffff22720000ec1fffff5f810000e8960000f52effff86220000df050000caddffff5286fffff40400006fc50000ae520000c9d000008e7effff4f1effffd2d1ffffc56b000019b5ffffd517ffff6901ffff65db0000b5d400009ff9ffff6d1c0000e944ffffd0cd00006125ffff1c0000005aa90000edf5ffffa6300000242200006a6effffbb98ffffddff00004da4ffffddcc0000bacbffff264a0000e2a70000b7f0ffff7b9fffffd8de00002a86ffff74afffff110efffff8e3ffff9d78ffff79fb0000a1afffffbc020000c2970000c6d8000039400000d265000023680000865b0000d93a0000f9a0ffff5c68ffffa749ffffa58500002045000046390000f99fffffdc9bffff14090000768bffff8d0500007e740000b676ffffe255000024930000ff28ffff552200002b57000023bcffff2d67ffffe125ffffc77dffffbd11ffff08fcffff28a5fffffd63ffff7f48ffff42b10000eff7ffff7421ffff7621ffff151000008a07000025ee0000504fffff78b10000a34dffff93e5ffffa2fe00000f93000051460000585c00001d16ffffb71d00003a4b000009e8ffff94670000fe8affffa93400001fedffffb472ffff71b8000060af0000fd6900001fc80000109effffb8e9ffffb72a0000004d00005e1c0000e901ffff13a8ffff8fbbffffb6fb0000a4baffffef90fffffca0ffff0a1e0000be8800007a700000003affff8a760000618cffff6dee0000aa700000fc170000c4450000611c00005fc50000aaedffff34a8000019720000a7c60000bca2ffff23810000470b0000e59f0000107b00002f150000b188ffffcfb3ffff7108ffff5c9a0000be4dffffac06fffff368ffff72750000c72cffffe57b0000bccb00002117000086cd0000db7e0000720400003db90000d66d00007f30ffff17f300006541000025c500002df2ffff57040000fd62fffffdb0fffff44effff1d21ffffb29effffbc7200003642000057b50000373bffff383d000050a500008ab0ffff23730000501500008207ffffcc84ffff183dffff3a040000631500006cba0000d64000003a3a00006efaffff088c00001f37ffff16faffffc5dcffff12e2ffff39baffff91c40000f06affff5af40000c7c50000215d000039b3ffff63e8ffff5e46ffff7465ffffc6640000c634ffff969affffe8900000bea5ffff4226ffffbfecffff460200004034ffff90fcffff01ddffff3b750000dcb1fffffc37ffff27c0ffff91ca0000b39900008126000014abffffd3480000bb47000001cbffff332f000051e3000060a4ffff726e0000ab190000565c00006218ffff46540000f4210000b9acffff030700009faf0000ee24ffff28f10000f8a20000aaab000006bb0000024dffffba8c0000ff390000a636000028120000bd60ffff521b000044270000dc460000db3d00007f2cffff3ca90000532d0000727d00007601ffff8fa4000019e80000e8acffff70d4000068cfffff9242ffff68bfffff1851ffff69d2ffff0abbffff9bc7ffff8376ffffa78500001b68ffff23ad00004b310000da4effff8d9affff775effffd3e800001ac7ffff9dc20000763cffffb9bd0000da89ffff7abf000099af000076cd00008f78ffff47ed00002965ffffe0480000bfa6ffffd4c900009e5d00002ed3ffffe0edffff67dbffff6ae600003e02000063dcffffc34c00007710ffff1989ffffe0b3ffffb7420000752effff1e2200005ed1ffff8d52ffffcae4fffff5eb0000c3aa0000faafffff20ebffff23560000f9fd00008a1d0000e2a00000388effffb3b8ffff6f340000b85c0000706200001cdcfffff8210000e4a2000047f0000029330000e0e300006abcffffab7e000057c7ffffb844ffff7474ffff86bd0000fdae00004d620000312700003b770000b999ffff53abffffadb5000060c50000e93bffff8660ffffd0c5ffffe512ffff4a650000548cffffd77a0000283b00001c3f0000e365ffffde72ffff4d0cffff6ae100003c5800006ef4ffffd3acffff146e0000a3d80000249d00003d06ffff8cbcffff75f8ffff5fb20000a062000029ae000064e2ffff6a0b000046e40000990bffffbb630000c21a00004542ffffe5a2ffffda480000ee340000aaedffff8deb0000b4fbffffa22a000035d80000d5ee000033b20000384f0000bba6ffffab71ffff5538ffffec89ffff5af6ffffe842ffff334bffffefd1ffff71ca0000725dffff2a030000dab4ffff35d7000042210000bc7c0000aa74ffff95cd00002bfb0000b591ffffd7ae00002f17ffff67660000d91a00001551ffff43b9ffff0be4ffff6171c4ee68b49649b8fd34ea17920d78d42a12fe284cfddf7205d37e2377b356664b0e4881a9131e38e9b060cef625f21571f94960da709971d971fce21a08bf7559a3dc97ec30b6c9128afb1ce02200b2d04d868fba52256d4a0749b2978f55cd68ec5eedf5ee80d9101778b818f354839265f535023c10b2a979afb42c0cb4b62f7cd672a717569358b333ae6f9e185d6af1d5213e2a22a63c3cff0549ceca284180de94fdc42a0f0e612f6cd697aba2b6a4fec5da8477ab837a26cc18066d100c544dedc682ededd3131098153faf394300771271dc543a7e80b9ddb7fb1b4d5cadcc40597e05e430070e24792c60cf743c48e6085ee46e3ff884414a2a873bc879225f484059b587cdaed46fefb5411d818b1a7ddd346c54bd34a2ff44a17e01d374682d0d9f587caac81451ea346638487d5f845e3f51b1ebd7b4657fad566052024be1534ee16c27c0be52f13e74bb6e34174a900d4167c02870a8c4d1feb0c7262f7130eee727399031179e0f3f72302c9b73c9eadef75aa17677d5ed2e0b7690a3afe0a11a3ff2e6f6794ea207175eeab1f8dd4616a02410c9738cea73c07d368f4a36c636999e8272e1883f32d3a812e7460fe26e8edeed86113688f5f99f16573159fd1dddc6f043ccb3c8c8170f713d99206deef91d68fecfcfec0ca0fe027b7d633f533004557736b00799663c09aec5e5b478f70d47de30c76ed8c8b537968b90731eeaba5ef2ee44ca4012bcd1e436ff32ba8dcf6bfd2cebeb826ce3a862cc1c7af4b643599515b591d407e99151decd60de36f4ae75d00f8ae56326e640de0a487160384b205a2eb6f8511a20e1dbae5dd522530063bbcee6be312a23da34476c858dcabd63bf09f1fbecfe35c9a6244302837fcb3ee270d1d2a85a5e4c7122c60995684ddae420fc3d863ff2f96d80f8598e9ca0ff23eda4abc91ae499295d7a5708a590776a97b228b6e0d6627ff984d18272427fb44dc4f70023ced7511df39aff9e4623e726cee0195a3b01b94a5d98f2a46cd435aab4c93c93653ec4e30fbcd3d0e2ed960be5b4a7da25543272ba078e0e752b3710c8dba3984b6b03f78f73e1eeb0e0362ee30b3b1d429e7f13067f46387f5a7e1c905e79856f99b5c71ecab0d79a2462aa3d72e5bbff29095daf8b526acf424447f067e12b7062dfe669e21dc68a6145c79fcbcd87c2425abac0259b4ed74a8f65bfc36c9eb9b6cfdb9561e983dfbff56114a21bfbcf00b117692745ddc2a1d85508d2e47e22f954b30ead1b50880c84c7533f307701ae2a037a69bb633ed97e240f15410e77da3bb9218977ec3a0bcade95c87cca4f16b97b2aee2de4b99433c5e13fe8eac779477f59b1065a2d25237eaae57c94c41c795a803319bcf96bbe8b82b5a8f4ee616543ecf46e6d8927bc01303d0dc3db335be260e406e44e37878d6204ff181c34d018342d0c1b04fd4c93077c17932293737843af2eb0bbb337c498eb3d69ba496614959c1aaf9fc66924900125546d816ba34bdc086b3faa3c48301fa4b35153ac23ed63fffeb53679376780907b36dd99f9c55386164637f254aea824e430b0c640093725826651c6340691b227e037d75e0b38cf363153368fdf046d54319e4d97d21d718c0fd06c15b90d13462ff925ac7a548ac09668c7a8f1c017aa67fc3e03afb4ed4721a49c5669b6b41a4af0e76e934f99a751d5372126640686286618e308b91dd9d229da1df5d6c1e3be1b038d706f38a6eff309ce6a5c7d04e59d9b7cad0a305e3d27ffef15a35e02dc7d7ca3337b41ec6fd24c7ca4bd2130b968151db998e9729272cbd0b1170c35b29051dd7dd417b130b341d0d112458419230202b702faf3a7ce9a7e176d3ca6d4217a12c529ce2741596bce364607500be8d55eb18eb109993acf17e334291fae0740a9f91294ac0d8344c82ca761f5909b26369283b86cf299ee3e7aa680564ea40b898e8a84a1af3339278e41847dc9e96714930d8ea0231823a5b38169ad5e242e6459995493fa68c05574cc78bc1f2fae7f79d0b04e7b5d9638f0496fcb22ac5d4cd25034232c3d807ce08dc0952bf1eb45735778d205141e8f5fca84027c287793e6567001e90bfd554abfa63f5777bd8a13137b590d7e463d698ca8c70455f10a2f0aed36bbccbe16be0bf7d12f56595083fec783208eaa1517274fa8ecf77f7f9dce60d3e270285960a57897b10eaf6d7781842cf38fc36abb0b3c879d053b7cc9eaf8c389fcafae20daa2fa1b3f73d38d257a9dc1b614f3b5a6a611c2e7572e949016afb16ce33b65e6160c7286125c45d4aabea2ab9c9f24c864382ecac24469bb120e601540e5adf440eb806f53282de3253d1dc20a6fe042edbe3a30ba2e8a043706b9e0c41cb4401d7fc03e40681583f465ba4e61687b83db593e1c6eefa0576ff1302ae3cd8b74c0d175e1be1d8e37e5bb3de50e7becd29e5035fe8e2e9b63959fd58c0f07beed11731281bc192535c568c912cc4750dc64fa20c679fd43e2f9b21add5072c9e3c0944220bfd53f2323d1182ac665d83558a4f800a0130da33ceee6c4c587efd7875f53e96cfc4c40b6e2ff66dcb8e3475010eb0cfcad3bc8ee2da1d26f5eb2d32dcc35b7143e0f577d039741747e81d0ff66daf3e60d4553ab961ad79a4efc6ed8f52621bb8b4cbce0ef9754dcc1b657fac83400b733a929551f5e57afbe14b2c0adc3b383bf8032bc2473dd4ad44ef760e20f73fe4b7d727db9f54fc95fb84904b94201a8d2dd1f3a79a47308ee6ea62ac5b54a6bc25da99dbbe70c9c8799a69c03250377da106b51f111f3590a4899c45223c28cec4432622551d7bd86449be21592707ecee44c3bdedd4cf62f4c57de0f95d7d6c8de08d20115376802c1d791af308f31c322d1993b6e7db670d9059e5d822e8924c71b00c3b7940541a5a8ad845d11e681e449b5bd29eab7cd21e92cab322d6743d59d3778deadc6c18a7e23ac9e23ae08cccd6ed12bfe2384a171c23dea4663135ccdb358506b8bbbfa4eb60b5f9a1b7b69991e5ba8fabc32e19677b4827332f2826b6d7676cb11d79695c3ae55135e2e96f1cfbcfb0b272d5986d9fe73e366877e062b0ea4b466199ba60edadd9c36bb52718b38f41f6f9efb6eaac9c210095c6a15e732aff6203be30d515428a79931227a629f48a66460581e1ca80de21ec1e81f0ac13fc1e0736d51933470557bd3bbee60950b9bb4e5781b12ce7b286ed20701fd689fa81c1658acb316a57e8c5a559fa3152c7791d579d8f4d2ab6f91bba07873b28c56259b7caba977821feb0c32b8f57f57b2e52aa3482d3bd4e29f70bad824b21d7e566a0509219e3c47a5af8bb9aa4298fffe4ab3572f3e9393b12a3e1edcbb04df3589802e0154f1b507ff61d990340e1393e6fee6b9a35e653780efe9847cc72119a2163d6112d20187780824dca8de0025004a75c7e27bd6b9f0929ec1ea4925aff7f58e8bd99d7c652fb700c450bccede85cd8d0a1570794ef126b97a5117bce6f44847c8869da39620c64c444cbe6ca95272049d8a8ee2a665b36051bc7afd0c276f536a1dd1289ea2ef4eba1a26acdc6cd8a904a8f0fb7b56d667c2f7a342bc61285a5149199ee48a4f04f52ef0aee9dbe5e48afad9b0f6cb60e529754d4ef43203a284e60ed30eb6009fbf4625c9ff16d9d3b51200bbd4647c240714c0cfb5eb6d249cd133d31de91437f7608e869725d9a794c09f5343c197d5e651487b044c30e6c6e34b4b920658bad8809041738f99602d311caa6c960eb69190d0156c71b12d1ca571dce6f7f1b24c2eaad8948be7c80a44bc47c60f2de5609406151f1d483f25823bb84c59cb0808e18e59d621f0bb757fdee75b2de23be7b55568bd3b9b28356e1f12b6caa577a8d8fb9da6d7564b873927ea3cf13c951b00ac70ee5fa193eb53be6d9b3df2092263ef3d71d9ebb11abdd63fc38c2a46000dca90090324ce4d6bbc2d51022ff78fd47b9c5f4851fc2be4ce46140f781438435424262346b036ad2e749cf7a707dc103a11870f4e19c625e60b2f733c3e83b206a742080211d2daff82978533481d2221f537653fc7bda88bc260fd48611fe0e2cf884c255c18c39d9492b750322da4daa8943efae79b7de950e013582c20962f9635f87f6cf81a3798904e7d6b3d5737627f13e010af78bf84ab43b9001fa04dadca568ce9ad916d0c9d954f3c27988b59796bdbe6b9fb398d7e753620fb224d381e77b811a55989670bbae20886462a645afa4d13b6725330985c29596b7c2bed62cd229701be9c9876c3635605b9ffdd08d21f27b4eb65cbe6b9519258c7397c4542fb89a68c8024f3c4d6223dc8843fd3f359bde5e5f38ce0cc0d062c0fe24c2703c6e9370b6f60ad75d76d6bf041edf019e21ae5109282f067e664f1f4a1edd573b07fc9b8d577ba961f7b9aa9f68800688cfd41efc8342667a4f713df7e63d04e5e07f59f99b8678b703dbfeb9b2ab3ce5685b45552629b816a9ce8c933b85b2d5f18fac612d2830f38b5cd6cf1b7647e7777780f6512e4ef884b121487b9de90ae9ce527811d39e1ff8b73e32a2156cfc77cec3d530ff0da33b362e8a0f4e9aba05d48adfb468385607e947e7fa54ded4ea04bfeaa5d75077955b65186ddb883d1242469027b3beae1cf055d0b20d6722e220a0cbff012a60be0ac7f6f1869c0f5ffabe5199b3d0c9a54d29d25cdf41bd9592b9d86ffe67d9a96007efd42e8acb5072023853b8cedf38150b9a41fa5a6811473d7429842e8f95ec22f4da6d412938539cb40e20acf361ef29beb2bd9d2c8ef9182468fe745a43df5338280ff2087b326ba6f21111bb06a99288f2b3b3a99e47790b54fa3425d8da72cae67c814f84cb7951f23f7e0bfe41c9924af07d24245aac4c863a3e5aed0a89984c1ea0251d3c8440cb7f472eec6f18cd9d730e1063839733a70fa2156adef1f794252472ce52ea5577066426f13c2ab71e017f8bc7c6eed7c671cb222d3310952d816cadf6c7560a9613ac621f98542bd2f078d60945a71e9b9878075c1f4802d7b1a5f577bce25e6229aba84649004976ef1969a04b53c4946def0e13bf5e5742a12256bc30d1249a5b6240f030b346060d96e47f78dae757efc8bd1fac8a95eacd0c549a4f8bf1c8748222f100bdd958fad77e3458cd199b38e77e345cf7f29319459ef993fcdab59ebffc76b86ab3d966a4737fdac92eb92865bfa46b68cdcf17b19d2240572d0431ccfbf22e35f8b7152fd0948e19d6758159d5c595bd93b7875b3272bc61586300416669457f9b32112e566a07d7781436c44d81ebb48dc1bbc8693d7c6dec8b545e87482b96276c8b7991ee9729c8e6e26446d8517243b85f0706299b2b1230733ae5a7a6354b86f79e769884736f688b23f7c06f72e1b8499f434f055a77a5b1eba6312a34983a1be484ac9012de88429f0a64372f41c6d31384026135b2882a104e399779a2d0bf19a757fec10cb917c29d92682df15cea6c667f8c43b3b096656aece59a051ccd23815a45a7f4e0599ee7e2f712176f4fb799cc15fd94d971b4c7803df09e9f5228b613ce5442159db363a266c0480e919ff1c2f34c01194ed0a6781f5b085fe10fb68cac810fa65f1ee44cda760e70c2ed5153cda0a355cfb862852ccdcb2dd0adf4cc1ca7c26ee193eb526ca30e461291f3f2e34fef08d7baa560dd86b21bca309d303f73253d4aa6f2ffdd210e917a6a8725d19934f5906cc31cb6fdb5efad7177a721e47d230401cda36c1806709e6d93c5d5262d370dfbc2fac9ef46524608a34bd66d57842764270e6b8ea0a917c483472c85c044e6cbe1cf5b2642f708e713a47b809fd2789782ad4f61b82b18720578529691cd3ed9353a8471211a214a269757bcb9ab12842639235ce06e8c0235be9f4e588274a5cbe79122b6b99659836ae6587adfc60444250ebe6ceaf4d21d4f958ad82f4b82a6e6952345873c7a880e06eb6a56600feb825472e8378e1c84cc53bfb112ed3920d95ec3c53e31c73398d64158c330b2b4b249c5809f4ffafbbc0bfc4000d4b1e3b1f363336d491ce56723994a3571322d2682b64411acf4178e79a0a9cbc24b9c0ed22f76a4215bef9fc79c46fed05aca9bfd866f7573d2787504370ad159c1ca7d94b844a110b53d73e9c8cdc4f5aaaab67e7301e96bddebd95833d7f6f92303388ecb9fdcc53dd0dd1ea65a074a660ea020dfa0cbd0751e856b858272ac370da0346e5f475888ca326cab9015c21918522ab115e53fcd6014b8bb543794ba329b97f40e0595e8cb66f509ab4b5faba9ec4dd3a486e6906763c070378a3d60705e736ffabf05f2e410913b082816d7d5cf21e7844d9287a9da333ed1893c5d6bdf33f6764ebdd5ead0c949c4bcfeffc1a3700887091518ec44b4bf3e62c0e7c836cec1b46643d4c3126ac67ea6a497bfbdb73b0aac261b30cd39da2bbc54d3ee60c5cef144958f61997e202d0af46e75b0a40d310c88926334dfa11f90516c65267bae303581515ed14588de3c39f142766bc998d3f32dc0a9431b1c1615d0e4d4721c5d4761a705be4f62d60c2c7d341080f32879d58931e099cee527f249c76a6becd519b6063ef7a830d720bd28dba9590a00bd35af88c8fdc652278db41cac6821859c0222ea52e3c9741f6f09f63bd96e842750c5de2d9be90612bec27028b96f6a2af16f71d8bbeabf50d4f478241b6991363b4188e475c740d97f98342bfb9947f4153d45640821fb43873caa89371d85dc59053fc15d2f5d9be472f9cb50553c24ff675bacb58d1a5f13acf1000adeae516117da22462a85ee78dc6e7fa54e6062700703b0338689c46732606d2472c48a91609cdcce3c0d86fcf5cc84f938deac564d40109bcb38dca4b9d597a000edd569954ff094817d5ce912db21ff5ee799cc23a64ba0ca0e69aba78572be40918f5566f2def7cccf220390bd844d8fe0b6a0543a2cc964f43c70f4c0d3f4797e27fc35df891dca352914f33bc9fd526a160968db7cdbef777d1b4e8db05104d6c8213bae52d2fe5169fb5b21aa429c3c6bc2170a56060b25c7a519a6589cde83d939a522f74f1ce557a0a41f1f56c619fb22cbe5769b12e826ca895868868b3c8c2bf5b0ecb752f6e93d2278578a2eaa3df2ca72daa120e1332fe63b016b2a1850fa00a85043183cbd6d3df3f70214eaecdbb288991cfde6bbdc9409aefe89fe056757d7cd2edd5d86ceecca21166acd3f4fa11f4ef64c04e322d6047f75145cdffbb2e9bba8f0bf66c94c300c7e2454f0ecefe9efeccf9123d2b19fe10c5491f633059344191dc516025887a9256bd037bb63123b19cd98d28994d9db1af7a7943183d60bae724fbf53a2d8c4f855344beb45fd2bb814cd3b846880d1ac8910e9e3569c0e5d1c479d23e99abddad3d5b53edde0fb72f205390886835082d58487551c7d58a69b2b3f8c2cd268ba321173dc7b3042ac3a7d4f3ebfdee96f371fae2839124609cb804fc0a145272a4e1e256b94b66b0930ac2242af5b432f69d24013bc855ccc05b2c81ade46935ca99eb42488fd1c3ed07583f9f78c5faf8f0ec8f1efcc5cb4525893002a7d89d24f4751345275e13eb5138d1eb3e3dab8fb7b07f4e5340af8bd51fee8caa39f47c695e955e91ce07af96c43ff2d2554bba9d847eea43bbc6283339f04a96be57ea0e5276d5b7289ea5202038a426b53d3249d905c8d4516e52f23542e2c302960a4bc483122778f1671dca2524740de0e345c0fee02e774ec5f85ca2105353ced567a4979c2168d7da743cad7f5c0cb1f97d2842a0d8420f59435c2d76b11d42d3187ece5d8de6c533d38007feb916ea3e5f6a81e01453969370493631c6c9ac55c1539794e4422bc2fbfbb8769644cd53e4512de0f9e3be14d5c59b377dbb9a04f822ed82ca3cb31d94e97cfc2f2f15e3998e894218d6367c8b70b0549d4262fbd279aa9ef1063fe1f6dbce3cd0e0b01cf51461fc677773a664d2f58ff5d930043759b288646a0fef1ded6fd39ad71dcd74b8896bfc49ed0f64be49466783ef3018324a683ff95f696328d295a4fbab0edd4323b60572206649a797e545d799bea4c499e66c06561b6a47ec9fb302bc0bd3413883d6d2ce7cf1d27a9359a6d695f22ac2930ac84f90fbf888304abdf6a45f849d4b7c94ee26afc8b9fa483b020b8f3bacd727a5660fccd2aab8084a7e63d64b8d62480dcaa92f324e8df668a721925da399b64d4e49f7004de01a91dee325c87eabd7e2c509649be71e41857a1206b5154b2efcf9a77ff383014f887861aeab94ede274473fb5929ae3f6a23fabb2b1d932c19be451cc53191b442bf8285d9589493c7d3f4623fdd6850ecc1fa139e0503915240aeb26e895b414a69ac9b7f70078f13470c3cb16181913435a5c1332890778644033a809597b4cacb0cfaaf8496111653ae2d07fb9df555d57cb845dd057b5c81af2b9d132e6432770f32b824b5ffa569c19205e74dfbd8ea812c39d8691d32f584c5ccc43d9b5d7ad1a75bef95d471db9f7ab9d1ae7b4e7ba9c5b74f0b6921a0bc8d755d9c57b36ec2c10fedd84e12d5bb261a3103f8e39455b1c4c44dd0972380c61daa3b998a0dc4e9be80f5c4b11d529b0e8163898e4ad367a210e63172aa0dfd455253894b60f6cb22a883ec711573d0cd60dcf65397d086c516c6d1f6350448340f9cfd888750dcb540c11910b8a969c5edebc864c25fb4b49a731257799b6d331a4f720ab3c876c13aebe984aca30266f9b497109bc619f1904b7e374a9ccb1ae10b1c47657104f7bef679807e38be9ac86269f0defb26ef5b3c1f07f5a68ab3fa4396a9f79029119e1d08e385218b9273488ecfe457a8cb631aea19521ede619372b47944b2ba5814ecfd1379f6fa41419a2fea8e24ab627266791aec60a9547a5a8d3993cde0ad77b28b6db07ded8fc6f55a0215b4b8d1663f6e0298962606a2d18501ae3d24abeb05e294dcad959550d2e8361a50466ded44b016afd5a50a6c4cf103afb9b3670c45de82a8898766a7b7b2c316cd695ac827909e3006dc8ef4e3b55065e9506a0e390bd19d043630f44eac9084cdd0a8c912bd6f78cb791325572bdd576c70b2d617b24ea110a63bd56d635c220e7c12c00bb441c17bddfaeb6dd27eaeda15b435baed8550dcb5129610b93da622674319ed7ef77a3c76b457a53a8d65db3dd49c0cc1c27c3c41159c69c9ceefa5a3a9996645ce9024858ae8357813aad0b1155386abe4084a03ab57b06a83d325564d406234c7168947d4a61a0b3b8fdbc1b6b06ed08e1651a7c310737053c00bdd9b97a86206c83fd63b7f15a8f3d1f83f6511b35b4daaa370b7aaa89e6bd89ae2ddc725ffd74aa19e1e54571517c43812677a166ba3cff7320bc0af9b459b292bb23534746dee0a24721e8575724bea0fd39213a9effe6da47bbc9c60a16b251af9f2743e32cf87f2a8caa2f88d860eaf24eeae890523fa6805650858f3bd001252fdc6ddff18408609406430c25be365955c4cac2c88bfdcc15b0e42754f81fe2e0d3e2b417ea8ab044519dfe00a4df82b0518dc7b92e4bf9b7bdb570668a376f64e732628c1abeefaebf2a173312effc438f41f23601bf85b846a5bca6954647bacc9765bd0ce6bcdfe81338743cbdcb5ee6171ffa3e00dd95659307507002881622863583ec3e41adaea60d070f5e410abea6d9b78fd8d55c30a5ed9946161d6a1d9350e1ea26d156c3c7dc7a7edf77d5bbf945911866ada81485da6b2411dbbcb9d5a54e0826869aa5f66b39424da99a37435a790ce99d0ddc185ac7fe63317c2b272350c50d33ed447496bbc2274087a8c03edf1bc484cb869fb8237e7ccfec1438b998090f69f56384aab17211641caf84aa4ff4dc0153115b33fda6d1f3c7d2d50ddf79f64249c0ad9535be060a4ccc2cf9fa345d120b9a1069d4684fc11e690fae65c9481b47159fd09ec7487d9530fda62f5d926f9d0495e7433536e6fc0ffc248a6edc8e8e4f2b624bfe140d04cf8050c297494ea85bfac03dc5ce1172d74c9c89c47b4342d63d72ce00295d9c64b5e75bc4aa4dfe5c8b442528939ec8fe0833956e956ceb30d3bd0492924fa82dee1ec1442aa43ad8c9875b478ca1e9b19eb0e5989784aa987dbe4fb45349d270cd958d6b547b501ccd1b06f5f8b5097243b3a7f332773e975135cb15258e4697279cb0e24fce2b2c226e995a6766d2a008e5f1302b6aa828b596f2c664db1c7a8f1f7c1c8d27a942e006116ed11e34c45a32f996ec7b3a8a8eae7d434a78134c0ac6b5c399125cf2079d5ce43c1ec9f68ab96c21a3e11da4001ac88f2dbfe3168a1ad7917c48146cd97b6f1d5dbdcc139f13e49699f336accd9bea0bc07895cdbceefa0683b1a72ce2d3cebb1a052fb9a818eb7244cceac37174e27d4bbda299deca6eed517f83b27b65e402acc47c1f511c8e60933622cad1e3ea96f91ab2b6927590bd989f4178cabc9a36985650638c9c3987f415edfcffab60471a5f7621d2efe046a246af1d6ce8a925080fcf73344599963852a52b93e424917f0db675c5baa8e38b5b2acda882e082c170bb85926cbef44e9ac4ff84e75b2bfc7154d1835be9c3173dc77aa4ad8cdce8ccff7071fa7962068b60788bdab073c24a687b35b052f3e52e7a9d65abc5d489ba8c26f6cbb53f0f3fcd34d9ee0f60a3cb8794586490e3ce185695efc01efa29a1b6a358d1f4bd2d623d8260bfdd79c3e3327fbf43e4bfdfc9eb9f862b5dee327fdae1f0cb6ee4ac9bd7d0233f39ba22b6f69efa3634d68ed406bd633d0514175990d02b6bad1b616a5214f9d79eb809e4a26ac735ed5c80baf5588492d825f4547b1d77585e11d18bc0efd91ddf7b0357e5089d21812b8b105ba8e6f614c576e0d8e2a83b5d578af361bfb6177b7ffdc6cd79ffe8b22db33cc1417e568e2e24c6f9179af7634da6c99c80e80ffbc07a6bad3b731ffae483d4dc4256fa9ca9e0127163abe175479067655468bc676b97e1e80a5613922abd6a1e9ff4326fad8ab326b876547f9ff83ead23e8a6b2a666a6f74af201a6fd27c06f46e72ae35d3469b761b0b5b7fc9d567c7dcb6cdb791a6a6a1c336d1f2e152e2652c68e729b2b6ce7c2358457a9b7ac150920c9756f4d2c3e06af703ae6f5c6a5a32b2ae3c19e2a11331112b9e589a3fed5450ce9640db49765a69b687fdc486b006b6d7cc759dd40d9cf54c2c2b2079ff998c4d99f68463d8555a6fd0892c04fdcdaff15e624c456519385101653a3735079f9a59a41f8a6583bc59126d788523e122c4def91f1ab45213f425400f6e3238840c66ca55dc6825f0c37eb9bf92f1c085da0484e00dcb98e4711d481632e0738f15e057ef8fcc7837754050613fd8559e342f0a05f9b4acabcc210263e73838295aea8ca9120f8fbfa4de358f732f100d0cda06108b3ce8553332d7cf54e00feb3a163dacc7b1a37fe6d954b470826b9702fa5270e4f28b98f8186217ce323c7118be559302b7265dbe95407fbe1b741f3917bbb7354f3e27fcecac1fe8f3c7af2e4a7930cd0c6e8d0bd96111685d2a9bab948a1cdd591a9f42e9022aa7483145d8f5914020820639371c5466a5a435e93e975fc3caa890d204fd7c6e69efcbd525f6f5e30f22d13862a697a2a6875fdcf032acf8b3bc59db87bd7824645b141dca999054b93fb0ff5c7d730cb908192d0ec98257e678a8ed47e04f6b18bb784d4549d390645e49993e35110063db6b28d297ead99257eda185ff1d896f5107600b163700d18e432fc3744c7eac8abe8666484637eecb430ccb3f123bd03dbb82d2a141acf29316df08de26aaa7a1cf297e5d8309438ab1b94df3b29c4101e7e4bd598ee330b9eaaf28b50a1c68b8f64fdd02e537e00169943393fa5e286c74a6110c2ff2281a758b86ea277de2604c6b90ac54b08e0b9bbc02f7caa80486244d440cd4d86637cfa89dc82e449ca4cb5d3cb560e6f893473192398fc90cb0e9c96436c20a75a84bf4794323678e0b843cf0fc0f7f24e057af615aa7594a58fe069306caf7f34e8f5eaa2864d3838b708f7a9f85e285b234e1dee8579d8d5f2851d3fb8e85b52736ad542f6ca2f17b08d3e18b4f5dc7f83635549b9e2e7f55edb13699b6c6722f9c60c2b7d359ffa4479d7608f965ca109a540e84cb1ee005fad971c209b55175f5b75a32b98b8d0e4c5b935c292d138413dc6163afbbec734edef4c0b28fa49a9118f26a18ee8a5d490513a56365b9220e331254c62818de8438fc4775a1b4f7668a992f3364780af17142f075e58e38d437c6bc3bcad741c9cccd95d03e8ed3c5f666b54d5022e1ef91ad6925927bbba579760abf01ad1c0a18ba03b3cd798002390d50d633ea9f9509fb266a5e28e125f4d35795e69dcae75856c0d3e3969243a03aa18073bb307d5a6136df6e6e87441193963390e7a767bb14088d359b203c395a5d3490145491ad43046d4a6b400f3e6ad6cabc3186fd13b2fb519f5c7e3c37886c7bae557af0d75bf48d444ffa15ebdaf572f73c8cc8eec610371baa5ccaf396e2f1fcdc85886f4d29247b7ef55b8e715de5f76d96467441dae3104c66e180d3776d1e8971b75668c64644b99fdca40558404cd7a0cf7047c5c9b6d987b9814a9576d05e86064601dc489f97093b10ba66eb7a21dd583a07c7677cfe8806350f88ed6b3b79e705fa477029f6484ac1491eaf4b375e6587ecaa9f577cb2b261df736bb73e7fd3cf0fb3d18f36b8f15ed9c255174f146f82dad6001aeec22e875cfb4262762c24a6700dd38f7996930de3a1064f9082213b31cc40ea93155ebd3d29b78e1a18a325301c5b0403cf389e737693e8c8a62f1bc2b4e9f922dd4010af988f0623ce18058d36dfd2b993457d4ac8fded563f6c169910148d6e847510ae1c954318321031ba2dabc1c2b0985bb2225ab293fa38b777b2470bfeeb12e55eee6d975f539c0f3ce4eac911b50bcf598dc3a155d2bd8de25e341070145aac1af36ed31ec03a3942f44098fc457401f49fad62abebc286d6f6910213aa75bb54a3fb00bee543c75dbb0f004314d5e27cc3adb8e839407c0b237178b7b5b10419cd7a5e095c42e85cc592e71ac5a857b2f3fc470a69686028bc8b64a3163c42ee97a4bc7506d9996c86b79041d8b7492696feca2f7fd4b3e6d21738b4def3d925e811d43e36974328e434c9a98f6203f8e117112deacda6ad05b3e20f160a8dc57a0bf2601cc5cee224052f592b0723aca72aa72f518f45db1f5ff93b9857e68b5289a31807dff4118d1adb1e6bfb94b862c074853410c534a7fc22d53b9f0ba44f0d0530aaaba2bfafc4cc4b8014e8ec7e384fd88ba4270321e5887f0a6d24ad03df47ae4b23a8514440cd6263b352d4f6eb477a4a8c4b8e7202f2c6a767e7dc36110d3500127bb5f9a410a81bffc3a22f233bdd95f814442c1341f607bdb7c940c34c5b83542fb5f41d7dea165c121840bf97c277ed43e90bbe5e4a836e74526fbe69d4ec1f50f28f1ad2963c613c4f12943b9302f33ef89cd0cc1c8e0df9fa6488bd4ff3988e9a28c873884a1662057cd5b9834cbe5191bde3a8e91239bef4abd4204c2d76e0715dd00a2f5644305b7a8a493bd30fd98cf987759116a4474560a161267e6efb187dccbe8cc39cb0a052cae94ff0dc2ea9bbf022868a2536340edeaf216a051b17a268a04d627cf5217a286cbb64d18ce00621af1a0fa3c774d1868f70a3601ad3ae75cf105917760c1bb828f57b674287ab0033dc95ca3e9fd38afc1ec2aaa45eb4e5074451e253d07ae0389e702064cef25cb82c05de99bb583849f5ad8802a3cd5a966811167798b7d08f236bbf75a1cf6d16c5bab727b20467bcb4b7243f38aea4f6a130f0e528195706cc8544a07029e1b5b16ffc22b6d1173a28b12e78bfd3987414bef20eb8f3a62ffaee100101e6c4978e259dd74c685d2adecbeea3f7c7960112287359ee7387d8dd2ffbd4b11ce579150493e5ad078892c0f4e4d4226733b5adc719e854e70592125970d5c4af3a7e92a22bdea9b11c47ef7c0d322f21e5a261b879ad7e1450028eb69719e0732aaed9c0120532d42ef7895d62f301eaceaab9e2640804417e5e730cc6e7badb9e16c3e7b8f68001308bcdf63a46b6d0d31919e4ef656b5309ee25a1f2b5a133754d4e75ac12fd8b18e0745e4d3577d5b96b83d5a08af70497c8c30c67592723cb9b5def8594e6e46de75c9dd59695a509dc91bb01c52411bf73d27efc6c62006bf7feb55ac5c918edb63e740d912ef9b5de1daeb928d6d9728687921b971ec5ba8ecb039cf0dc0a03f91bed2d2c357ed5e9544323565aa742b98b675acea757177057d69d32fa3b4526d7b2cea8d267eacbb2fda3cad9260fd489afb1d718733b041882f4f9b09ea83124fb2b52bdf40ad3fa1380d8568c962c7ed0572e87c2da8fed1eb37252c82f42ea4d6e6ce5b2167830b49721ba7a8f10f1cd9cb494ef39d78cd39aff32ef10b85ddd7c7e2027aa93fd781498d2cc32924a5bbada810b015daae32007a08662cafaa6079bf382417a1ff2a767c3b08efe1fb8d6478896545d973f5b4bb41f87fabac854fd355c6561cf3c7092e5400c2af3c85b37049b3b36da5f2db90f52a768f75eb0d37fabe4d7d01f7aa8e0000df8dbc20a1c730b635a6dcf26655a19a83225f678a30c2c0f4e87f6a780a1b404882b00f120a0499b47bada800c37fef279bb3a76d55401cfc0e843210c4dbe5cb2ffc583bd884027e40b2a1c96b327fd919f99af4a0249079fdfea634ba8856de5d3f503233bc853a722826681268385fbdef36b4851f060f5daab886095d93b5f2f721edb53d2aa471350e110bbdf703e6d79dd6133bd52636fef13cbc4c2db56aa236e8f3734dd0b6b18744b67c136e29b17b49ce17e3d2a59ca2f16b12e0c3f93a3c2796f074d3537d798b180eb2f87c0da70ed0d0cadb4b1a7ab91bdfc2b3e2c87c891ee17306128f5207d6b9c7b197f551c0c396235f1d961cd87241524a49c47dfe869a14b04db77aad3c1bbf0a0a642c89edc568ca98f42ddc2f03d632240005f281a8c5df9d5ef625e4f799bf86b4a2449f15dd020a8850a1323ffed4bb126edc364c1ffa8ffeed464e4599a3562e4252b412115e4bde72979dcf2c5037ebb418fce084adc2fb3c45741c55a7b23311a1c3ae1295da0df9bbf1dab305c97aad568a4230308780a77bc91726ee98b736d67a5d6ebebb3d3fb94375fe1ade18b5a199080bdf02a67007c2c45401b3046d2b95c63ac411deace0957c335fe5a7ae70bacfe92bbcebd6a47d356876cf4c1105609d6db6c3c1e3e220829d3b0fc85684de8caddc351ef043df05b7111376626cf06737b721715fca517effa931532cb3fc274593db3e49b7a810d2b714a6db242e8c4fee6fa6039581149c99ce07eba369cfc889c289110cf99f15af2be7f13a96717bafb724d3911c534560b18be600cc455eef25d87807a48d57f579bb34f83a6364e5b481ac4119879d7b13981145e5523525962075f426781e71d4bd144b167de9becb4783510eb0ceace39f1aed981cf67ed405dfe7a75e169ca348590de17d40cfb76e1e801b10f3d926ee82658eba6a8e562ed696470390581e55219e583274901e523de172594188d716b1e769ef80a9caac8e035823d6af58f891a5968ee4ae8b251019583579a6c000085d13f91c8ebccb7fc02a816941e1631e30495d969b0638753b7f4426788b9eddb4d1e1bf1a59962e78d5416f6a89ce35d557d7083e9d695bb7dd2a321647b69a2b5ba0861ae8bd6659fc8bf1b570e063ece9eaced284ee5a22b1c92669bc161908f3be9c70e82698bf50056f29642b67f689c553039befad381f3968945cf7a3c91698fb349fb28ea211395cd7c8ffbde75bb8e12fb1428cc2e7cff87cfdd6474fd4f587db0461c95333e78ba6d05d6812a98711e763933645a363d31af903b86703816df6e9dca20f0e9d8f57a78330c16ca35b03d254a0fa4f8882ad36e199205415a14cad792f3f4aebaabcb3fc099b538f8c63a696c9edb1f274cc18769a1812d8b2e41d5b490e18d432d85a46c431ca49b0f0e712efb5e27d6c98a27821adf3fc31a57cddd87724128190cf1c635ef025bc0f8700836ab76ab0324d83cd2a649534d5b3a1336e2111b91362e512fa8f5fde0fedc556ec75febb3c95341fc0b7e83bbe4a15c5c31993c20076c69062b0147317e14b1957c97fb2b8b9f33c2f926eddb316beae926a9c5dbab1ec5d8562d9ae82289fa88bdfc3305a06708ee97ca0d0eb9b645736fb4de97e909a9f1be5d01abc4722e489423732e8eafc9c7eb50cdac4a8ff4c7216116be67ed07b5229533a29749115cff8678d8a6341d4058df2da772ead9ba96d483641c1f15e058241cdd6d3d57b45e8ddacb5ea3964a3d1b368ec3c52a685d64e7148fdebf0e78a7dd0d5ce37986ce0cfc77f815be6806400f4900f8ec5a86f9231a0424a176d050ee130429c2c31711915f68f40b7535e9156faa77683418b0e6e7bc5bddb57b3e1e78320680dad35a2fd6db3f0f47b0b2f021192a34a171a56eda3d9147041a1526f1711960d6263455b34e4948ec52bde2c5af2fb8499b83736445ac9e26d198278ff28bc87556109d647b6dbcbcf1608a78968c44931e67a808e748a47bc6d573c93dacb5be1a590b72559f0f82fe6ee2008505cff8cb437134183246753098a3be43380028520874595294fbfe31a6869a12b877200c67c5b42e6e739e8e6e09aecb58a6ad85c6784e1873c00a40d8a098bdae1e1e541700a5d903d20896337a7ffbd5d2a1b40b645484eee3bd3c72c97bc120de90427e3925a098e6b4d94109c3ac5ef6e57adae257281662d46fb7e35758219b971c27f834dd74b913ac2326376f5df332be5e4ce5f12625c2d660ca6e8ae9cce54135c9da33c51c215e806343e3d8af15e6f403526532301a20b44fbfdebb375af15029190f9d9516cb2011749a629a7fde3f79135ee773ac3ef4fbc88aabf8f12fbf9fb86b386afe0ee299c2e65716436050f9d459ef93c85c7c1ec2c76742879f8faf8bfeeb711acc82ac260b19ac542bd3e7967ceac9650ccf84fff6286b63b13b0a8fb7b1ed640aa302dcb60c9e09b93f58f85f525248989fdf349e9e6a1027f2d214cf6ecf00403b1b4c4132b644a31674d89b8c5096ea55179449b90f1d7fb906f5cbd4c8467fa56415c259b03757540203646d0bd54ff02615f6472c0530dde009b19d268b78672412ee9a551d17df8c050ea08bf5cdb91f4c69d3a43e8d7979fbfe32ad6cb41d1947e624aaebf13fb67780f5a1ec3ad5a696f8a1d0dad3d5112b42634655b04fed4f1a476adfcf54cbb3a932dcacfcd05519d4e33358db779fc243003ed6fc0a4df7ce8ac0fb370b5d771da37e8960eadfa39b7ed574609923d043d7f03210b7526a82f7bac5f2d8e89cc2181138f2417c006237e1234d16e5bff59e678f997902419281838ad5418fba8357fc83c78f0ea9b33e8305202362275ae05014b42e178d5f0d71c9497b6ffe91c082de7e5f6a64a32522e8ab7e08927bcbd93fd116b61fc6c9370fd6f192ba82118641a4ab17a6b0e1027db8afbeef9ae5c081d128654e47afc46d76dc6ce372e5217097113864f7015852dc85c2b1bfb107aafaf0504caac0db2966cdc3c16254caf2b8daaf8c7dbaf98de9732626f4cfbc4f7a8c798ef7db255c79f78ab63c90a6ad06636d797f0f0c7c0e15c0670801548dfb8af09f21f1eebd1c8573b521428b9419712aa66bcd8c5d4a7c8577ef527883decb40308b0f9b2ac6f957f77b603177f068d30524a9e1c74778e40e11fe8025e61128fffbda1435eced3978efa0f124558f97721285b6619bf07fa16c80994739759e93c477102b78d9e70cc4821717b42bd3bd685c1c4f0ca8f4a3a3651cfaf5b990a96aae6e7c4de651c80749d8d15a3a2b9cd52cdb6b59d2344caa5d4e49654231c8d7a6c9971c25965f82aa23046e6f61b89c71c70db7c21eda67b26841d5cde47363094f8c8f166a3d48de1013c7ae3e6a3607c896b9fa33704e15fbfa47102b15c4ad38099714656b0614ab7cf79984d23fdb29425d10422e5876978156544840edff51f8c4b1e649f7617a946d76859e007e794c363cc44df9e17bc71e18dedd84e0518960c60345cb0d9f69bf13b368cbff5bcc736e727ca26a96a161b7fde75cec8178644a66d0992e989554387e205ee29d64d70565f762dae8d24b771f9438536242422628746ed20f1fce68206d8be94044ecf8bb1e06247c7e475a380daf1a068d27e3cfdd16a9bf3dd7c263fca980ea7cf4a8d2caae473ee374dc78d721041cb7e1709a60ea9be006d82ff2b56ad0b18cf6b26d66b65f265acc26811655ffb223f409119e9a18650a359f9d9d2866d65b56220f94fd94cf754ddda8caf1e355c916a3173631a71b5687d011db10f4d9cf2721e0274280594fb3d62f7eb012dd0f610d863ccc75c0dda75257737296a12933485957ff1f75c60cd92bc71a133802a8336b6409df19b84343cda428468b32875ba4ba6f1318c567568679cdcad6a6f603c20220914b1a4eef6d42294c33fdf5c77e9016517dd07d5b20fc1dc67840f64d7ecf704fa44c7729e0d35cd0d7682fbb01c6ea2460ae58685e22c68fa89180ac1fe285d0b9e61b4c24dc291d3b47b4e43328deec30e0ca7e7e3251223cafb7d43d6a038de73c3b36408634785db0969e656a1f3dd9e0c93ce238325f1ba6507c089e543a884ef2c8f05f9588340d6f6aa91fe29c59940298bf1274c2ee98dc3bf3ce33ff4f93d8909b4a77a1b5cebebf0ad7ba55203ade5aeba976a1c5804d3108ddd0a6e77355a52d086b1b7f605a582f44332ea1b1285d0151db6e0b9f9dcbe681c4c98bef16141bfd7d19abeae342090348509cc58bb6e7bf5df9cb4202d24b5ea1f1561553e1d3da241f286a9533da6e24f1e7f0f5eb47d849ed13f4bcd442f8578c417443b80104b35c25a2454080b421733972fa7e44152e9d2b8a74860c7dc41df55eada760b86dee3d4ee742b7f516120c7966f1447b2b45a63eac97120f24f3768145e32ad055534bf7274e4975a759a7127aebb5fc5e38c44d185cf99aa1bfaaf27c1b3686c0a789c357eb606099c4a81205004208c435436d20d99858915dbedd94de3ccc7277085951f2723ee56e80c7f6e5f430cf6ca591ebb4b32ce5009f4cefde574acb18b6c622ad080815d120b5a19b24bcefe99b87aadcee52b4f9abce804d2487dde4a34bf17f750343ccb2ae3a3ca3ab886589c6a6ee1bc8ef2ec15158d1a7b68014a0b6000024c0dbb7814ec8d2ecbdd595a26f7a3aa7853d2b6c6f6955592ab4f6e2cd6f8d7f24f05b8481bf2fe0c8f3b144aecce2b6a98c3bd2a313120e3738ee9938c8581f561c48c2b5c01c99b02b2312ce6b0e3db9257d0e7a8e5ee9721673845c919e52cd1c241017f5a1486e043e99e21bebd64b8091188b7e8708d686a726eb3ad31c9e620465622195870a5a2ccba6138f15171e31d12ec433ad86b18f13c87d5fd13dec209f690498526a08065a46b1121b6b680c9659dbc4f8b8b6775b7c171bcca4d9d29ddb04f6389161738f712f3eba0f491d1db8356e4e80874ba7f542ddecbd4d1dc44be7fcb7a9344e7a0595fb3990d331001d9ebff0820e3bb3ed7d6f7b71c5327aa8d59b05556fd5290c66e1d60cd3d39b9fafa9f661dd7e30e185da3a3b58e6dbce0929b6dac578c5a6e67ca04e3b5e75ff3e6fc7761a96b269de3b6bb92468b4aa6ce8c8819b837116d568d0a28b551e27fa6f6942869a93e78667f4264b98dd2eed1a0337535fe2093e7e08ca8ed9fb74234fa4e64be25bc76a558a250a507ff67e3d88e6e00df7affb698e043cad08e3b55cbe0aa233203060c296383cdccd8947c49a59b2af7e9ff13ae0982914f4b6286a76f02d9551c7ebd117350806a64ecca11b141e7e5f42e5d7acb7d1de518ebe0a7c7f712505ad994005d7c67545af36431ba33f06d125fd98db56d7cb62839342d0e5357bdfcdefa243f2a50eee5e2649e1e59512bed9fdfcef83ab5f06ac7da944413463ff0b618c95ce15de1461c4db59f0d1fd4a41380e8a6f1c7d5add9886ae3dbe1d431c8e8c8971806943ec4924448e16607f1b88014286c9f1929b5fa2f5da1b1e55d363a91c22d35066a527aca9fbb271e3b091d7e19f5c176e1bfdfd416ffec633605bf3cb92391959ee8ad3b84ef3b53b7be40c19a8c6ae81429cd0d819a0fa9de9ae90b82dba9b1ce5d10944bd89fd758dd0e1fefbbedf4263bc49cedbcecba44889926c841b390e9242ea0108e99996dd714446436d03522383682729624720429e6139e739557d5dd9cd5a09c0fabb1ca26bf40d0d778979e8e2ce4e5814101c29cad2ee1d58930e025389b0724d2bed0784de65b16c12367065767f8a6b43d2613070a8c46d1c82980a2ee7e85b9867eca3dd6f41f69e75b663f6b26fc412cfefdb82e7565b1c5f95ff4e9792d2b4576dc3b046b74cae41029dcc2a4cf581134d39ba7a0d82fec9d8846df1c933c0c5b2868be283c03afa269159b2302335995a705b24f94fa45c017569f0b438f224914ce39c558e1cd1d962cae0705e3d9578fe8e2c3ac220c34b0b08ea36ff94567d97ce7dd1eaed7f17c9f57b1f3178c527f451b5fdfa6d17fc957509b4e86ae7e00594af6fbf33c0164e8fafa6abb29238d733a71707aadb957a06cc0568cef962c0c8730286a0c30c175620f7af611c26d1cf84cb1465a8e66add93536700fea78335232d4aa524b5f8cd52373b8c29c3ed0e747277106847663b8f648ae7cf551551fbc779d3d059c2e13e352e5b472f44b4e8f3307915d48e9254d31e52edbe64ad442ca5a07ea3c6513fb1f476f80135c97b0650a80044c0c4439ffc0ad5081f471415af974dd02661b68b604a795d7412246eab918e978729e6d1b8f7eb11a81f6337d9dd59c120cf9c4e4237ad7297abc88c8fac42915541ac32643d613f88b9ee23c3ab95d6a50900b52fc43d545b228d1a4d3464d430de33fb564f2b31334f8fda1b5a35995413076b2ad4166b20149b8580159edbd2a833db4162953de6340c12c346c4db0b1fb6d00c04f59d64a7fa18e9fc49b79634d20081d694990e8e649a85a13090793a339bb9906f8519c5f53544e62a08b3b1e08fbead4248da98307fd8013d1e6f9a1bae1d85ee4821ad9fd0f2fa744294387f585b0151785095a6235b33d153b6fa14f8464d40f24902a503c2490b1e065ea39781a1196d5766bb4f4fb3d878f418555cee103dcd4dbb7f4f29dc7d25c4bb546e5253f48a1c5812490cefd5618d678beb37af0f377cbb7bc9d4df3a01d7b3c2e3be3bc9c14611c391a20cdeb2242c0151b3dfdda6822737a2c95bbcf7060bed9fd63a371dc476acf231bd0e0b3fd95ae1d4a8ca06f7407892576b81366ae0ac7fc44c125b6d5512a1fc7c1bc9ce7424b7797a50e8009706a84df6313abf1cd1a38814341a504d69bf266dbc1e26a6c5c24690c4181d7f7bf25f1ed2494fafe971a5a5d69c70ba9ac836b8b8fdc908ced29b3f183dbf6c43070940ced4c446f995b2cebfb7b8f1e9133131da89a33c53c2105d21b62284abe9e180ce4a8cac18d6cacfe7ce88d016bf2991a84b7704e80affb0a5962ca971c40a0bce9bcdf27b6ba7f43d29aec1111bdd9a18083cab9cd92e1bed9b7612588612825ad152faebfe0ba431195ada8d6206c5d40537bd58658212095fa8f34db5c2ff688a75ba857a2360e273eef8c95768797e8a5f7aef2c5c4bf2e111eb41f69874ee73a089ddcf58846b706fa4c89938f8333a0e448dca6d9b2989ea2b9cb866961734260b59b14967d70140168fd56d6558e91149c93bb9f4a977fa1e7bd0e5fecafabb61489e31efdcd336f590c9a3f6d364ea2979f6c8212f37f6d71f304384212603e7d7ea01dc335e83c8a2513ab79fb473dc022517e55067212bd559bc072b887bbfaa21baab074ecdf53b2a27a7975179d0d31c4de6efebdc9edd423dde25d81af5f4ad4a735b1bdaa3ca0b323650034fb8255963e45a331829ca0dc6f46c2b50208f9e9f467fd7d29f5f5968ed58bd521464ff26263f75b8d45bd4de980fac842f968003005deb2bedfa802550efc833d7e44eb4ae4c8e38d64e6b468ddb2b406e55658e883c54e5f304f5c7b81768d7210e34255e7e97d21c6ec7bf5d9ad4f589135dc777aeb2ee50f79e71e1b1320611333079eedd975861e7a7dc6be1c473517f9fc7b17bd87c429c459f4bef9f8254b83af39aa1cdc79bb1e69349f2ec03e359145f261297609fdf09398283a22e40d0e44a6d5e0b919369d1aa9773726ddd4c1922bf05329484f412f36bb93048004157fdfd34152ef9d614394a8e5e9b5d4bb1dbc973ed2227834618d397c3f5dae1946b50becb182cde2f3dd8f737a81275d3c472a09c70b8964775ddbe31c34229c3c91e10e5854e27074bf69587a18d90418d1ec06a9aca33f046aea71de5a648b63d1c4fd3d76abf02903b2cdd8149b9cae6d575bf38f735b8ad31f10d9901531daaa99fcbb8e6e6e7a4b45537a2cf2513c6340e8326fe64cfda1991a16926ed7ad69d62af2ae87e26d92fc39415d57a2939cdbab4361717753132a3f424a01d2405084e81c8bcbbbbbc69f0a8fb4986157350cfd1a2dcad3dba038ae167ee0616c447ea16ef67c294db152e7c843cc6355752df92f4bad704f7eb1606fa5e6b24ff8046d9592a908afe2731288fc4f36f341cfabf2625e1677fd60fc46d0725933d114e40b6b726773fee8dfc5ecdbe08bb3700fd4340bdaafba24af3b2281551f59ad21cfa490b82fece8b011e65411ee2e47f19df83c847bfe8cf8775a300473ccf8bfdd6bd2d6f5a5f196f6517c7e9d5757c0b67b8f5f6a761c84f21afb8f9fd6a7b3ad72817f9cbe423d522b74630060497db8df516baee2e98810992a62c9ed5d0bf9290d7ba63061876d51180649c8d2f9b906dfe0e7b7aebab8cc78e81af3ffd15134971c14d373758668241d52142ae5cf7fbe850ffe7e3a1a7f3321be04071c3811dcd4f1422cfa061f769739fee883ec401e4450c25494ba80e9866290ecc04b9710ddf8a3d3aa63cd0dc87f8f4768fe75d1bd70b750611630041691eadb0a44ebd5cedc352170daf2513f8df0bfc40b51d63f883699c45f431eff083e0c6e7abce3c872d3eed72d5226a0b0e0a430975df7597fdb73c6ddb497f4b6446b297f7e64decfd94ea34cc7b006b80a5ddd36ab30cf24464677298837eb5d30cff2e27df8ed4845e4fffec5a2a34a22da34bdd09035c1932dd77904c4d85244fde3ee20f4f125ab49dd173162dff3556feacb9dd08f50b64c71ab672b9c59f575b09f7837edb18e7602e6f6b446c347ae7159345222bff8c56f5a5c510d3e8433a30bea857a2c742c97fc1dd2727f2b50d3f12113b477c2175a83bf10332f87fdf3f7e1b07f7a2bd92f0688769576bdb45083bd6ad828f2e77c49968f0aa564f26c50be3e660f68750f81eac376050e547015c99c719b555c12b0b3f0d54920867d0045737aa8b20ef5fad4f44b190ae49872ff75463d6872f62d5d2a5aec4636904051762b6be8a1b15833fa4502929ebcab282856dbe3287d31f8b9e040325e6e3534fa85a4e164a333cfeb5031d138954008ae0d406352829ae56b85bca9d7f125c7c3a79197f22659621988fe26c030e38921a62b3f7d5b0bd3345d638797324f5f9ee225c20c10d3cc506041d054b02212f815fb32ac2ec869d887a2fb6e21985093f4beef8fd9984c88c66cb7b57446fa78c55de7d65e484bd45b6b61a481fd3d92957b904c63b94d4c100df0b697d46dc3fd73f566f16a21cb56f367c822372e5788ab397f6761b698492d5c9e3193d8ee456bdf0f93749257f5eaed33929345e210c08b6050c7c7ffae53d8c4602cb3cd37b0c6d9d58c7f387a5db645c5b6a7f87bf0f4856518f3f5cca528f7443309b22dd8674b8645e5d2043dab07d98ceaefe7e7ccab32dd92f119a918860e594710cb0ce4ccd1f38c25177bf08ab2e537782b0ec2c4b61d1070dc3d9c2a1a977a1d1088599a5c2a5d8a51d57999ec12ca46ecb2a2a6499f39d1cc0251367df2fc1f3c2757df29ca501dc45aa773dfe63af65715a1c7f9ff1a9b177abaadf42b8ba30da3067ae64d9eae3274a93d28ed057d8eaeac196005682aa8db49aa971225594b04d9598af1f169272695e5e6a289eb285e659d24c2d54930e027cc5c1191111e3f703d6e80f1e4c3e6d321d99b3c7ddc9c5226ee3f66c2e21fd105d324d8a2c4b8060d7fe71885fbec588cd77f4a9556699f2c923822aa2866f6a0b7cde8bdf11cf089e3188f96b72e8eddfbdd3e2b4cbc5ac52db317d5b2529ab252fa6ed723cce8ede7c2d8ac6b6a5957c2cb35a141ad49e65ffb22ed2ac7cede3d5c302d6b8eeb69c596d9f66786da77ca40bc3c31bd9eafd15cc3042181706946448efbe65c35078016f266b823dd4847baae721970bcfdbe3ee9651d0ed81ef0c88926a2caa9704738b1786361b73273a5d58d3304c52581e116be7bda521d1a20fbe138e64a7e91b734f3b3ae7922d47f7f8e511925989473a570474b9c05d850308e30499882da5a4f89491ff11af8028a97335a31fd09b7101b27d1ca917e0b57d9153516d803bf312b7fb0f3bb418f51bac72f804d475004b7bf41aa79adc46fa7d56674f61bededbbdd10ae98a4c390a1db36ef413f1767a3358e641b024845de5fee43394d6d6a81d6901278484aa9bccb3339b420328e153e8ef91ceee6b65751c4d86f0459baeee232440d3093830fa159d174a52a63b5dc2e9d65be51092051c63eef67ea0d72e4f935a2f825cf119ccc76e39b47ab498cb40338faa1e13b9596adffe6b5cb3ca720c02d2a97958c8ffdeeebf386a4b478e06fcd32e674dfd153398f9db71a0f93842700689bd9cd2c711052d81875b90a4b33d116a35a61567c06bc32e70549a43a98ca43b8a0a6ce50e22748f4bdc6a6bbdeadeece62ebad198c8cb67216ca1f6728e22db0ae323979062a0a1533515a423b44630b8236733006948fe4d9749966678e523da4f65f7f204ba9e3f44c94026d108ca060abbeb0f4839a036480b7053246141c90a1deca94a96fcdf7ff1467ae1e14b53b02a7d47998879a5e10f4e00cec0f65ad72440c90bfb9c1963d0d4efec35df135181ffaa3bfe00af4b79b09008f90cfdbebba5f097893802c397d91bf14185f0c4ef1efe6d7aec6f701f54640ec171f4ef5232f684799f9a34b178f58c1614f2d105b22918e58dd9f76d1f7946af10f2bebd40bac353a4e708a6e6024f2bd35609ab8812eb905d89abbbcef630275251b38f7a505f32a6dea032217425ef1a1bf159d6340f8d3a4267118a49a9855fb365dd8cf24bb1a69aa3046e2a68c979771ec1926a1ae29215850f8a07c21836e5adc51dc5391a0b1d390113c4b1a4b6884131de33d5354b0cde138e2975436f5e2d2be557613e6b105fd2f5da853357de6eb9f7353cd097f17c8d6169742b8df63b7187aeebd16bb50eb35719b12c459f5fcc353ed2245e42f14bcae5e8748695cf4020d50d7ffb760adb4db28481c9dc3d6c1d6e8f06ea82a3a3a7bb611f5d4028daf4683a88a4a35411400a543f5b1f87ce13043ab53974b84860f8da8abfc76b5af3f075e39a12966210442310ddb8851fc0a4f881ffa245c3bc1a49a5ffdbd70d9af831efb254247403adbc7f3a0db4e2dd7cdf0a62086f8c7e109ba821c1431265fa382811171ca8c9b551f0a9e85f5378bbd77b481fc6d26160a263605c0f735169b0c6dcda2be4cbd8486bd54fc62e3600597db6df4b62bd12910db941b27e30af281e02e51341612afac9a69c7dc3aa598df299370f2f15ea5d919adadf06022489bdec591f5da096b74105ca715a1b997938331432c0f7948cc0f5bdfef00949efe45650ba9164f722bb8dbf3b9a2588241f8087691f265042d7ff13714971784b9937e7714eaf7419c08a3c1575e24eb3ac2908c28c2fc5c352a6e1b3925e8d4617b7e480292c193a8216f36c1f0d63abc25cc9273c84d10d2458a7843a2adb2d6ecc00c5826558e58d9409f10826787da3278138f102366a8b59c4aec8449949e17a928338f40c25e203ce41adfb315fa06af5512508f6cf26cf5f9355f25d019a8698eef1392f9804e717cfa3544a7184a5bad1e9a73c7c6dc4a8df13990d911732e17c50449686222a9674da895c59ddcd24903c78783a958b32f9fab7ce97cb5e22247cb4a866dfe7da51f10d5288a57e4a5a0394a30f9933ff1ddd67f75d32e9b0b0f2c0c942ce5b5be12535c1db193ab635ea00a7daa13774a50039e6ab96e18556b80a21bdce6c5e50ddb317eebe8828e1293c398afa919805d6bc5feac267d2b0e7720090367c5646de8bf533f3e37682deaa2ead5c91d2e91b65d4c8f9ce74609a226ba5ef4889e44e8d8f8664f64ac99eec546bf33256bb8be02ac37bd5a82d62c5d29a1f789906d0b3d9ffabbf6276af4f6cedee0bce6b7cbb45629d6b1ed351b21756f7f9ae885dc42a45df3a84336798c193ac0059f0a161145a4f8775ff0bec412b7b641d72e6b2d666ea75c2af28b569ae65a66cd985b66e5db97f446c5bdd70d711ce7ee579b11bfffe204c5d40dd1e32d3adc7c86dab64c4d2a5202d28d675df82babdcb64043adb3574dbefadd1a7b657c3ce8cc7c213aa814436cfb7cafe120cfe337dfea9339faffd9ec1a275499e448faf6e68ad9fee779ad8e3992c28b79f1336979001db77c1c12c0cb7a0ba0f23b28d601125a89a6fe04b964d674f700dc8e6561c963f6e7404395304938ddfcf5510203bb2188a7ba74afbe28ea03e344632fccc8a50bd6a8e79150de1ef79b6ce82b2158930642b26247c0b49caf90e4b00c68d9f0e41072502c119fd03e8b5c4361d5d1a589c0138265a7dd6cbdcc4d64983a25a9a12b5b1d093f68360aa2324a069796e0c87c8a0d89a4056b64de32c23eb131f13b64473f356d7d0da4d048ee7848b724c883974161e9d9fe1e84e2b61591b46184b4b1451402ad11b5c685a371c0c24436e0c64c38ae855384754bbb87403d86279c082e47b1f66cc464e8a001e17d9a2ed6d696b72398a53a5fc9ab23f1918d930515f00bb2200a124bd4fd57e0d93d590b80f76ab0f3f693e544db267b1e3eb33d25f7e3b12d3f6c746aed8d17b549ea2ada1fce062e6a00c6d17d7aaecef6ca767946ce1690b3a4dcc4a0e3890e5f20c4fcc6fa1b9717af88b793e74ce167226df7c098fd6045039a7de4f25c7ada96989a957a407759ffd1f438b24514e9a8d529f7c6c985d22031d366431b33aaa89704868cea3bfe481b858c2a56621182144b4a908fee606b70525c51d9cc31e99376fcdd83533ca1be43a2a9bc46e1b29a08f72862a02b86f7c55fb7916f4eee4abafc76aeadaac68b940d2d375fd1d19458f6443afa96290b5f17648831d7ba0452e96c65c1ef12dad9e2fe90c7c818a6bb00ffb9d5a03fc68b06c775f2160561a01999fb07b2f297f62fb5e245188b0b9676814a058c01f306b9a95723ca8f8f0e7c39d154d44d8ad5f5cb0ee656dc3f9718b871453614484affd1e26e0b7371039ba6be16415a7860b9795ffa88eab572466255b9b063acdad81597e6f0a7c01fd265391c6daa645306e511c388927a236ac5e9ae07277904ab4f1ed879c0c0e5f0753a0dedcfbddf99b424d91abbbaa5b90680eed4b1767490b128da0f530f00f991d79f34516ea156b960b57eaf9bf3265a67a37cf855ea96994e682a1e94a8e167cb41403815483738459f209ca576df4e99fdd651f5a172a1d8310091c7eff8647328906098584b35a60c16b09cd2b019081af1241f52fe2a01ac6692eb2e76532fb82470d083d947753c4916ff9f307ca3f335937324ff9ed81ca247f280165ad602480963364fecb60795003df14c7de9ed4b0a8c235c8276cdf7cddafe9ff6093a1850691a3034d9524b76c060ba277f89f3e875847ed37b2dea4dee03c37ca725ffed37113fb68850a0acfc4c055ecdad6d8f616ebc106cadb88dde9055f8e1901f52b488950db980ffb0f24bab06b0aae12b4d9a39cddabbe5e17377c2ad3926ae0791b78511ffdf25c924cb40cbccb89682bb6c59bde4d75c58451554bea2eecfb3227506b8c908816a2435d515823e2a59bb57f388ab95c4c4975246c11345aa2b38c7c23fccdcb3162f83c2eddb74ded2db4411a25e2a252c7e5a9a43e78d9586204e429970efd1bf50122b23e7c0b4c0b913f2fa14548ae1ecd8e125d2c87d42d57c5cfc6417ee7cb93593ccc1eb0061c5e35eb5e09abbcb0919733e2cf22b433a128e5cb9f1238caa89b64f57e5dc33245c1e4466c5ab14767c170c9d7c97bf89ed55e522007f7b6f2ac991cfe77853b1f76f856cfa2de56090e72e71eeabbd366cce6d32b0dd8115965f4267f2e044a4c558474d17b9ca4984106e65743f0fbba2ca6254e14b20a36078c494aba6062eee2535d437ee2520a229f3f37513442126ce3aefd44a440a0c378616ae07165656f5a2a291cec144bdbf501636c1092eb2d04bbad900bdeb34a2e2c9f4ad4817a86ba8583c215d2eaa87512a7b54e65d6f4754c60c56edc7f368d93f8dd8150c28d415a7d5f026b60115f9727d69511c27627a33ec57680150a9ece4bec9f70013761f60753598f98b6228e1d93760901ef2179391c9b2dad96cca45d81107a6e6a6ccd6ca6c7b7f4739ea721a726855e33b02cf046e558adea62a9f64b057d2bab2d00648d4f5ec62cd9fe9f1b73b3465660462702fbfafe902fd53a8278396a3eb74db56999333fcd64992efcf33c3395aebff55109bfe3831abfaabb8b1815c4f4ed03d7cf12549ebafbde6e5385bc0864354f0a0c700a57585c39c4c90b7fec6fd00fe6058fab7dce993c419c482e85c0aa5deb13b7b81b659fa620ee60e521a8ae47f7d6148e22b0b665cc7665b677ce2ae03eb726cda9d67df6b55f339bfd192814fd9d1cc6f2c4adf01a649ade4161153e63cd1c44e8789ed46422f319d481e060fa17ed5af6e135b2c78c8488638462dcdd4a3db715247d396c1c19e3dbeae72152acb3681621491d49a99a62fc2344ba8b1137cba3cbcefe919a3eb3d6cbb0a87cfc5d30a5126164b9613b246a893ba1b50f679d7770f7e250d40dd2aca6ac0bde8d89d90597ec14b70393c0f11deb23c34179aab8c4d612eff882d32a7fb8f4cb27418ba125c53f903d3adf7772e6bb6af73b9fe8f9c89ce3921e886bac762157affcc2d5832c3f8bf2afd582535eef4a460a0770f2a835242741dde62201501cb062e0fae3e2017d1bb9e11f4dbf755eb6f72fb4ae27f772bc41515a69259216df2635ef50d2cbedb2475250dd56afbd0937a4b977c1fea7292cd80c474676656cac1225ea8d22a98b7b53a3702f6c361f90184d5e5f3f22f23494067f4df7fc050f30f9a6b9aaea0ad397bbe4989de762e7eeb0580c1449985992f9c0ebf8b67d3f1f212c6c9a1c581c805a56eef5496f14c3d389a7c6f6c9d48cd67d3a00052a26d7cf2c1c290c04f1de0bee43a4f21384d272939788ef58b60e521edd7ae4818fa062d45c9051360d7d49e6beec8f2ef62dd51a0e583d363e7c9ef5513c233796f2ae1a7c31d9f0247b4d399c8c87f4e0d6085ddbf9619363666cec2dcaeca521e168eadb9f119aacf0acb0790fbfc23cddfd04779e8804c1407efc4974309f9c320b1fbb82a1c060709627c337da95e47a8d489f4e7c085909adf77992d06eff7c49c620f0cdab50c7311891ccf865d19d2b6f1a899a7a6b2fca6d4656c0f8ccf1c61d62a8e4bb60da79c453c7a7dcd6fcf9ed88acf95092b7004cd4941e1751a722b7d275ec7f2c9b6a2865c3bb1aaeaa3bec72250d445161fa9ea836cd2cab74d23e784e637c515d8164a5dc11e6b1b9fb7c1f7b5806e8ef7bef3b772083bb5283648118c1f2d4c1d8f0fe59fdbed180c3d8f947aedc1cdf461911d437ff365438f7a6ba0cc89d14dfda067494be9167367ecc62a2e0cd0c875eff9013b64b2a1d7a358ec09378f775f2dfd96cb5f5423bdfc35ea9ff5beecc6fac95d20f172f4f9ea212548241bbda6788c8d49c141c5bec19e1104a1a142eb8b37a7d57a0e837f6624af4871a275fbd9a4dfcf08e3805d81a65bffb483f4f4cbd54a972b4d0d3addf970ed0d47767d12a6fc3ac14bec4096f1e4edd2ce4bbf7139819aa2b64bdfe0187fb9c7c6995cf98c87ed847ef084b159fdf78163b2d8cb3806ea0084c10c9bb4ef974d638716720724adced987173af281e310aeab476e67dccc36bd6e331afa797680505f813bf94a59f2375ee9a53f4fd65e2ae0d2a601f3476908daa3b85e0bb0f64e43f30c7863e7015ff04bc9b4af526e899d0ac60fe471811f238b2eaea37000836104916d9bd410c08ed2bb2f4f2e5f43d35d69a9890abaa0ed9c089a5caa258b26b1a0c4bfa5859b5a9b9aa1021ffa8d84cb733ce9bd21ab2529609dde36ec1702ed5d4dbfcc4b59ecfe72048c52962b11b03d12e660e847fde9d472311a5aae8ba66fe7239f3c772582db36936d99327e4a096fcf81fa7dcc3a0e311d2d2a1b91da7ec3721443a7ad0b9c84d31f5d2111371b4f3956fd06a2791dc1132bc3b827069e874c03ab7c5feef5eb9a69a15a68e5c06f5a9fbaa7d0ebba1910f6283d694fd72da5c0305ea0faba6be9ca2d519272ba6bffe251bdb0422300c427b3354c77e9621a2264e4d6318b37713a09e584989d33fc496e7483fe2934808f727076ef66123d84eae8cd8f2af9d164ec8884db42c8d30b5d06e4b1d0c7dbc840c231091bcff8b26e64244850e6625e555ee4b25a695c33885383473af8edf7287097f4552511becb50fc8e1c528b845ed325ef11da2214ddfa110c8b3b591864948d5ff4d090fde33fd48b560593f948b46694fa184b3049f2d7cae771c7d5d88d653bb5659cc8b3978725407a6380daa4adce6e461c5a3596af668be1d96f7641c36cb7d38e404ad78fa8c8d9dd1c8afdbd4e2caaf99849100eaf4bee0dc07dcb4fb46f54293b0a4afe163800527c1f66b0715fe5564d5861db52e8c61bf717b1c5bc79236e7529e0e1ca11def009d63d9630d75ef2586fbf4284e2a397c82075d59d94a87d163a37ea54ef40eb70071ccee4cd6a1ee39565f9d91fcf6efbce81499cfd8b803a642efb25fb3a8ccde4dd41fecf66a5cffee9a5597024963b30cfc3e0182b91bef69120c0f06713d84f4ad10bc399292e3a2b5114d0b3692980dbabe8dfb8a7d36665e0fe030f4e1389426c88f54038f9248cd572f8e7a3edc92c04047f00779b3545535cb90425469fb88015fc773b9a7161d7ba43c06bb015a19d76a31b3eb68cc37636bcbab4a8c32c17cb157b645e25e4fc2299c944e4b3b717ee737396f07fa9122d9516541b237f9b135f6acfb14ae6cd83af27e6adc914c0f7c50f3d62e5c780bbc809a0c9d3f5606d9e37b0ed1080f5c8115b4569c5a72fb0eaede41541dfd286174975d99d2b2c183dab3227df3e2e5a81cfb81890961695852b741995e0cf2c78ad0ceaa5cb640c0f3bf007361ea4b734ecc83bc2a6cc64b0708a70143d602a8fa14a04b11ee5c14f8639a68f729b4d7b77f16a9c6a61f08bbdee440f743d634206e53f069c31b4d661f5fb4689580cec3b3e7976e92ab24310dc41ec5929d4db538f520eaa96dda8fef097295ab6fb03761b8410d251d7898a5eb8628adf7b5b70eb77ff7277446d3d9c76e0a3beb2ca38fceccf0aaabe319677d561bf66c0dbd7662d81e57f44930542290a412009bc513ef47ddba98a59cfc8b548aff7f5ae6052d7ebc3015a2dda72da111dd164f97992df8b7326402f6a6d80f0491947b13bc0d2d0a91fa0a2caf478185690d3a85f7457ec0b28b1792520f84c536c493176bcea9e9cfc4d0009ce7934c7eb5bd3d194f2721db4fbdd59a4a19f7438cf80f0c45c1b52ac2c19a7883bdadbe237b22010692b000acea29d4768a790fe33edbcac76900a36f3f9b315a6f6ecffe051cee5031107d37d16b47ce5872f0edc8bd9b19226a5f58ac63e7179fae0678c31d40f0eb0e2d9bd7434137c6ca0bccba40b755f0e4bc03a7f82c6e5d0c9501fb24b87bc3ab3ab554446f343ae629e82b74ab625bd6f3ac5fa5615fe900abadc23d8d4c4eb07dacfaec37cf3bba6fba5ba6ec6c18a60f2934a3979dc8bdf88a18218490c718531d684174d28e28bccfe398896b539abd4bd6deb64af65900b74178e9bf0a58668e1eb237c4f2b88f3c3ab6c09e9499a0051518a8716adb42e53b162c7d874af0bd0c6f6b77f40535c9b05d8e2d20fbe6cdece59f5b3c6e2db583397d3364cfe2858dca3ce424dd170b032fe9a4d4c21700e30fa8464c190e4b76565a3e0dd286ac04e676449dc557211db5d4fc8992d18dd90c7352e34312e5d410b75615bb07fc432f56ab493fb747e81aa522a591536a62f1501040001000000090000000a0000000b0000000c000000040000000003010208010100080000000d0000000800000000000000a0000000010101000d0000000e000000b10200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000cc0000001d7cf1ac4abcf8e89ea67f95d41406bc252a53edb6426b8a6660c5bccf28603e8bdc8699abf5f7999754f485b617136abca5d9f77396c2d520b3e8128d23dc9b4e2001077b1503818c508ccb51a1da87d88d254c97fb15e19620b4c5100af14cc762b3c85fc23098bc10f85e89a55e8d71d0b3b17b79203d0eec327b35b23660e23849244e365c4199a4c49237c9c7e1aa624720f82ddd325b3be0933b57a8627cf7694028c26db49b2cc0a5fec2312b1eff73d37e9643000b5689ee169155a0b30c56d8c631f2f4517554610ddf3fad964518c6615abcddbaf8075229f207a13c7c38d572931f93c097f5f8ea3a2a23327e615e2b2b070007c14b5c1345e53bb4c9f7ce9ff65d84755372172acf9c55373c5be3fe80d7f412c489e7fdc424aabeb7b8c98b5610e15f94f816fdc19391242323ce4029f64f740b64bb3bbbb36365a0a13869e634da7db6aa6ad88fd794fbedcf030a6488148da4a01a9a6f613d5e5bc69094cc04697f2480847065c54f0a15104f63c03704659670b05de50adace07f6feda8e246fd64ffee090f43805f591f3da948b613df92a18aaa8bddb808f2e25c65f78e42f6049442a855d8de3f210ea3d7d154c9fba92927046bd24a77d77b6ee9234f768482142a20a334cf8d628f1b19267e62b7aba5b9a0bed1ca08737617c62bb577b9e475da314d11f0df7d381b8e359a213f52a09c4226870565e4381980fb743db1f43d8544dbda633424d556e0ca5cc5753d712ea7ba47bc58d25010273e0c7127e2ed96332db0cf6941ea316925df7640955d03fe6e4c8cfda6c75f7bfc5e9fc6046f53a1bf7dd97d3bbe3248443b4712ae24d15a303385877ce685bd7bdefa210b7aef24b95aa68c8115d7064c5bcb48c86ef923159b7ab7e0c0101000e0000000f00000000000000010101000f00000010000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001d93776f3e0ca8d8fb0c010100100000001100000000000000010101001100000012000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001d03d3e77a8bde644aad6f5f2314071245855ee93ce571fc707644b5ee15a88cce94b4c15ee3f0b24baf962089cf44872641be6e5485cef781adabaa6f6bc88f63e591319ddc8f6c167a90754c179489d0d27ed0c94b1a56af138e0a4c27caf9926325da5e0d092ad4e8f32b893b31b0c145bf17335ca9c3f0dd45bc5b98343032d10eb0e91a0f8ae5abcd92a3014692ecb2f5d45c12b2ff3da2af48dc2927c43459dedc4305f0b8f8e6ce3a6409943c73011f976bb5a3362a3d462e06ab4a86bf3b724e35d92e39acbb2705ff135a38056be1ecbf63137e0d47c6a9470fbd5e7583f37fd5172fbf07b0966ade487eb150e09e8d18338ee7077bc7c221d262ccfc716293d9223fd997d266ac7f1c7edd25dd6eb8e8f257e62d6f1870760f8b931b7da918940a956cb98e23ee46a2c4b90948f00463f5a57b9700e026bb64d707d967e67c15c65e249df9465e3ac3483eff9f863ef85ff4f93d4f067e4821f042d82cead9f47541c58d4292825ba96753f66b9cb3a3b73da6a7839cfc86b4980ef3accdc80e5a65797493e09b1cbd0f504ea39397ddd37f466639ffac3f548b81102c5480162dc1e626dcc1230c3e5a4e9bdb07e34846f0b50b0ab3717a7020bcf692f9713d70c7bd32a1f206ffd93b2e318df8229f15def75dde9703181ced3e5944f16b71ba269619ec1e21e0ce54c1142227dce4bc4106361ea96091bb929d9c6b242aa28a1e2b71a15172f7bb3efc7ecd91990a9ec8705ae2a4329cd833f258c1d74bc1593cd6fbf775bf4523cf693c0c512b91d74ea81c05eb256d6dfe05851606299c5e45340ddd9decf23897826c5a50a1253f8adac35a232a6c569b62333ca6303a283a32f93bb778414a7304de2fc212dae0661c284eb5f5d75b7914f8050201000900000012000000130000000000000008010100080000001400000008000000a0000000a0000000010101001300000015000000710600000500000001000000010000000100000001000000000000000000000001000000020000000000010104000000190000001bf4789fd26f7879db390b54fed609efd4c8d86a1fa772afce357d14ce2e2f1887ec0cc5c0c2d182491d56a68bbb1ce464f24e08d72b203306b7e408e094670cc29a6e66b97c1c36a66ad077c5dda4efbe0b46aef8c1667182016eab91be51b62937307554f65a67a153b25e6da21399e2dc9c3c51cd51eee4d4c7ed6595d76dbb891ac6c0b2fe66c0ce953ea5e48a09abc06292e65e1eb314606c9b3641ccb484c0d01bfa72cd9b40148b1bb89bfe5cbffdc17a8b4a87a3d5898203a0d686e177a50f02060ea09b16bcb9c4a352bf27d36e3307343d2c32e7e9cf20d1ec00fbe6aa204c64b74cd1c0c845b2946137ef6ad164f5adb1d5342c5e7e90c17f7a490497b16740129df4673ad7d358a4d5b676f57b60334112c9044affa1eef3bc239b31b53540748c7a00dece931c43cf960cebdb61bb16e2adaa00668cc59897a3ae7071055b102dbc02372cf52867328959aac0e5a4462c64ba4dedbccaa436323953b4eac9bd3cb9bccdf5681b393e856333876420fb3938d558294e44bbfbf08b9b19807cb74ffd2b2e1f62d6412cb3ca5f58dacc438d1976f321b8c99f5f0e33758ceede31c7f17f6a6802782f1f4d7f0f6012d7a8ba2ac307186b9bc8b5d8ab410fb0d6fbfb3197fc40da06e94f0dfd0c121cbe8d910d12e9b0dae61b36789b9fa0232d0c809eb9ae5d0ae5eddf96ee29008525c1913e61820777f67acf3032c34932ee7ea51e358d2b6bab556d5c0d1372ba60f53ea8f5dc066c7438ffaa8b92679b4ac37228c66c93bfc43544ae1005a8c15ebec0597ab4bd99841bee5a112f14175e931508711989149d1b830d6b61b9ac0568e32e6f5f6468c5b7666575385a0198c8a9f468b8cc6bae7f269eed1c2cf360686a70ad05c05f98441864bc8d0861bf5bb0035dd2dea2c5265d074f2b4d78f3dc21451d199ac98af931f018581be4ff5f65462634664dba10f6775ecb8f83e68aadb404327dcba72897980dae05838b97bf8522682a33c43f36303827e6ba7c6b3a37371ed1181ba589c3202ea9dd54208b842d170fb8c587fe8b0aa1df73cc5fc38a71028707c214931eb683a176f071025adfbc0b79ff7309e1d8d8bf3c354c5ef38327f81d1d637b15f9288c3a20e54da56aa00ce374356368e02a7564ec147c96b98773c31a646756cc2ec25d49e6f7eba581ac7c23c926deeef4b59adcdb9fdd411b2b4b98550f490d8dd2219d4c58c86e1d9b285e68020fd5358b51780ef19b7afda988c096605928c60e5698955335ef3194179b87eb829efe286cbaf8ad8d52ceb08ccd9d60d50cdbc5bdd9af678ca2cf1bf5039dd70644308882a3cc476f237369e42c41d61fd162e49b1f55ff091e8ceb88a5e902bfaf79b1bfe602212c0826074de74d0ef2dbcd1a97f03516f05fbf3c7a470b2d80a0de0a230ec068443ec11dc770126a039ae5a5b6851a23c26eb942e0087453ff28093178d98da93c4a45d76f0ce049729cd5ec7d359469ac9b572d1e60cefa34567bf03d789ee6abf355d5d3abfebf417503a6145415705563d07351800599099d1d55e0e2aed7c70b40f2f418080c72e310bd3f2bf68e8699e79d979a0b2b96b14a6606a21a7b18f09dc3a920b8aba907c7571037b869add4ade0381a4e8327adb866cfdddada45571d2fc7b48c95cdb176a84eaba48d065f57a98be6c676a73a4ab44f5c32a69820968ccd752bcd16323f03b99640c50754d60a11a62103d564c2c43c917388f0f430eebce7f75d8b19cb1abcf15147ca4680275a1d0d00f0f18fa49a5c63547d65e6f969c17712de5893a48274949227990998ea2775fcce39d90d09a98cc0fc988e7d31f0544b8811079bcd6eda61d48cc4b272969f30b4b8c6ae2997875b3cbe225858aac606d29620aa2011d0e71afe7b33c5ea8e363a9a6c4f477f576f81d5c3e17b898f7f44434ceafbbd9dcd8376b64cd59b6decaadae1f7884be890f043bf6e136bada39b9b8c7392d73c62edad3b03b7679febaf7e1640222116145ab41847c6a1e6e8e4ff96d32549b76681ced9dc4f72cc780c5ace52ff91fdb50e3f312bc324801d3ff27b357598aeacc36b388c9988a85a8df18c5afa6b82201b21f6e963545629cc088449dc2f3245cd1b18ad43543111f737fe2bfdb320335ab3cb76e69a2debe3d2f3b6d8e836ef4edac57d45232cbf667804b2924fb88e2789c0bde3be47650f9ae4ed3d4fcfc757ef96a0f8f8a1af826e6abac96b6b3913b6c8bbd3b7177d581c0101010015000000160000009f0000000500000003000000030000000100000001000000010000000100000005000000020000000002010104040000e30000001ab830ffff18600000478dffffdf6d0000920700008a9efe27f5a118297da84a69ccc8940da1759c7c02af930dccfb6e3a50f7ceff892e0ac82c1c5cb34a3bf2f8d27204564ad81dc443a0239463eb90a48e332dbe39e965d40f3ddfc6b5f4f025dab9f5322ee24b8aa244f185e3de0602010016000000140000001700000000000000010101001700000018000000c50200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000180000001b4b558475d9107810c92528594e7e942c4175784210a7048cbb06ac537ebced6a33cf58c0e27da710fec8913d91c6c53d7e997a5f115fa92f39e3de9ec57f1a0032c145c888a7c67b454b7f8156d9ef950ff157e1b4fcf88ab9247a63106494e9c089f9dd775d0bad87bf52261ea31eeec3b72844bd5bca2a9e8212c13783a3b95584ab940b601c22cee56f612ab47f3c3e0415bde6d27843b5c92b27dbfae591c6f9fbc2e37ed07ab5ba3962b97f98c258923784d99e031a98962e73bbb4a342ccaf3d64d092d8136ddd939f9f0daa23391f942e39c21d41e823dcd4d4a444271c600b7431165c210c8b36897b725def7fd71a50bd5dac750b4dcf507a71597b235707359e974c8adf813ea555876d356fa25c176390ba9341744c9554483c9bdce6b6a31f7861d5d037e2c9b6a24887384bc8371ea4c41955977ce7a354777200ebb606cdb3e86560b36bb3b0a1e810cee5eabcecc4f4b71914f8ebbb998f2efe2ef5caab5ef67d7dfeb45639c4db77728c08dab79fb4cfaa9e16c84ddf37e9f00bba438dbd17047749a6e08beb4983572651b53c0674a7142d3059c7fca91917058614dc704b07a133e1390ff3a903aa36742fe17dcfbd49562017665a5051b053b49c92f695c3a83fd3ef2869610b09dae295a0ca196a1df6931ffcf193b9cc8383fe9e9912e041b03e6752dcb0c03fdc5a2027ed157361899b178c0fa01d16269d2af9299707ce2f31a35ccf244816512da911cb0a69ee0056148309f3c5488516cb0cd8187f5fe4e85b2ebd1878e1127d45c7d6252142101c82d4b9fd6dbbb7528d7b41e055b7c83b509462ec9fea6e7459ccfe97f1910eaaf75022091b94e7267a77819b03f1d080e331aed4321865a4cbe93943e5eeac3d40b30ce39986cb65d2ce66fa79c4548be50745a18a6da872930c01010018000000190000000000000001010100190000001a000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001e2e6f675296f81c510c0101001a0000001b00000000000000010101001b0000001c000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001cb625891db5e3cb0ab7c65d3e03710dab4d8e60c32e4f4ea3e9ad02112b9309a2af67cdf23cc0f7dfae8182eb240cfb0760bf833a5e09019df68f19e7b7b4ae3249a001a49625812ef71cd2b8d824fc10e9c4d4fc8f9d9c153c96b1a521d81d071caa80514fee698b1bca943c8b7a30cdce3de88d5d2bf4910804aeddf8fe093346fe705032ffe69c0f471e547e75a55a2137c15b53945419e3e70ba9ddd558ab238d7c335cae1a412b3d23b868dae56ab75ed511cbecd63efd736d97589961869108fb5d1078eb599cac76cb3484cbd27f245cb08982e3d05cc599b96d0d9b93ea558ec29eb1508d20c93d88f0c9aad8cefdcb4f9739211782b8921fcb32e04a1550d974e20208f20c3dea4af32fe50377aac3b52a485bd3cb1d0b44d83172b1d787a2e603ed32f7beea1be70103e213c98bc50bfc0a7a858e475d16b345a66fd6f280203edaab69851cbb4f2c8e3df8cdc55a5d050b3115cfd7249d6a1e79eb9f386f3def3cdbb4edba12708e2109d961039515171796e32ae9be4cde0056643fb137801bd4603ec4baf1408c11377cf8fdf16af90445aca7faf5ce48ee1d8cad41e1a79ff9ca3e264746d664f7bf4d86ca5db7cb0fcd40af2f4def023484971b622d97527e96da4b3c9d7798363e839e2c9ee4eb44e06150995e98385239b761c4a99b703eedcf93b537df3fdaf004adb8cf7694d1f9dbc2b244322d7881be442f9cc5f3b0a94d9c012ced92ebe5643076fa0b2bab0823b68c69f2aa5f62f576f0ce5246f4827e52be3fba6ef4799f38de23230fcb7be29dfb51947ba316d0ed16a1e55b79d4522a455b0734af3d22309a52adc7bc3030a0f98a2e5fcd98cfc31791e7ee33972a4bf7fe3541874e22cb01859227f9a885d999e24b7da92fc5050201000a0000001c0000001d0000000000000008010100080000001e0000000800000040010000a000000006020100130000001d0000001f00000000000000010101001f00000020000000b10c00000500000001000000010000000100000001000000000000000000000001000000020000000000010104000000980100001f119fc75651f40ec992e623e1d582f24bd76b3d6b178b669e1ac8efbcd0b900ca770d90a8a478f51acf2ec48b344ca3a8621ff94b179bec43d64c5a3445d066b48aed2dd5f0ba986592071808990a2a715c2d4f879fb6add78d42c7e1c2fb073436cb02c85e35acf84006ec7fee4e1ae88f0448d82fecfa443eeb16e04fcf845dad4f5e4156de0e3c56c380db30deec043d85c4896ce6c82e8f2ba91e541e8619d13e1de252cde16f171d6d3198010e79f04674b1620095a0f7f4d024071b4407762a4e29deea907038e79b13b6db944af82994f6d3b7b6f0360356b07c157dfa26700131fee4ff46e08d46acbb64204b0092ce225c22ab3b7be35f50ec876ad320b1ea5cfcf191cd433d3294d3067de0981f3836fa14413522a4fccff8b2cb2cac50dd5e018d3c022a4200cbe2e2a70a6249602d9c87049f2f71e1e9a4ef721fd5a9e0d56162d1e4ef5abe9295647a4537bded2d7c8e5b369b9174aaa901b8ac03a437290df61038fe32652f211787355512aaa8cfcfd7acd1e9d27e0d5140f1ac096dc8fd004f02782c5fb5e622e707f09bc562f495c3489b6094fd490268d5ace7d7a83cd1f8104548fb9394002d9f77813d1d86177bac034bcb14ec204d9c386cb9b76effbe350c5174bca19c1b10484997bc2a173419d1d19c4bec5910d655991c47aee88656c52d2206044270f4c531a5212f936387a5999617aa485d50b41ea4e3637d74ea48be88a30a5b5f04e984909e1972af2f6b9c76b6844aaea1df575afb9a678b2ed2f33b57753ce06363e8610fce641447b2ee0e189416a59c9dcc578347dfe22dd5fdbdcbce331cb65df94efe25c24b52f7f5d721ac945a19fa305f8cdd2aa7ba9f02844a4f9b613ccd6740ffcfd06347e896355e0529d9d4e0514385a0a20cccc227a6c48f6677425010742c4771d2208e6e93f0c20bca6799d8d8e3295cdf88051f3728f4d3670b275a14a2c137290c5ff240ffd5aefe45a5b64f706a3bed02013a0778c5a84ec1c635cfc435ffda30e3afeabf8836647a9ef3e8b76b86e31ae0cb677dd33b8f6e55eacfe64f0905f509cfeddedf39757f135e5e6d9d56f06219013a93a873d36766348a5a8ef0670bbadb8bd2fa022bd10dcdbe07716db74fe8e68c7a8d4b89e0ea1dc030939a8f5c9fdf2ba4f7a8d3e489f7f4f798ed8436fc8b69d18016e7e2360dd22ccd565316db6b60a79a224ea4adbfbe17c9f3f6e15b05d70812cd266784bec6d0ec189350cb207c00054f9c6ffde9c0a5bafed76a1b57a10db67cb24119c5beb214d1794b98ee4a4010b1e643d0895902d0759bf30f9ce25d6345f50ab97e7f5a22a5fec1d99c94912a94c96163b2cf27fe1469f848027269744c351eef5046665342adf4a8c6d6a25bc4c978a683a6cab88e89d1a6337f473909d00748e4cbd1ecf4fee7cebfef44543aa78a31d72be00062242aa3eb7e83dca35c56ee759f43e8e10b2f5716792385add048b04a33af6af3bb9f55beb536d2c5d58e136f41aa8ac655ddfeec237f915778825d66f22c713fcbb79e477cb3872b5c6f5ab771e5775c1731751fb9aeaf1ea36d1b24249936a50ecf4726eb595763ef0201f8137ab541818479062cc34b39ae4bc3c17efa90ccd7c69daa37d6ceca4b030287d9107bf6bc0ef2bd3a637916a63bb3e91ada8c7df4ceee6cd6bab80e1c6e8e5a55e872c610a5103ddd4af304d7f30a0ff82ff03259d7df2ecf34603025c693007e94cee530918058a213c9998b9a02103137c53127da58099767c8e63ba2111145a8df4c7c88fe71365a7320ff7d8869a039bffce8b5faa44e45c4a9d56496565331f2380460df60a49f772d0c2a0b24d6974e54346733ca1a9db601ae46c27b2acf2c59b4aa7c869c78ff4da31e39762c6965ff086bd9fe8804e302c78056290b229289bbebb02f2789f832b7fb2c6ff3f7d7594a228522cb919e154a2d9166c2ee2e7bd1dc91b0a414a2cf928b009ad9a49811233e871af3f70abfb6f10faa48dfb37175416cce4546cbb5a32db5106c94506c9d267c5d82e4c7d1b1b76e7642c5c3569da3684d221cb0acc16714053f250ce472575c3f15572dff07041a8b8711a054580c67addfceb23277aa98a741bd2e44f68ed96286c42446bc86c4faf826f31bd96ed41c8abec9b143c40a8267208a9cfcecbb1653d948a6bd067a03a80efbea8b59c6da883dc086b7c8116793c154f5e803a208118c93a29b7d342d3de859ddfd2beb422036d155808dd76d832104efbe49e0a60d2234c50867c91872dc8495522e06118da4e92611058288ab560910695e99f935534ad9897f4d8d06ad580a248f251bb72621454e608c91a122278992c24496b98a934921ee1bdbf073ce075e981e3336ffeab691985d89c2008138d9ec158363c384ef64bec17729f4231462e2093ccc635cf3ec701089f64b47eb7c9d26024878c1c224a6d3b51752d4ddb90bc769677e17338b5a0e206b7e0396d03db830685ae61fa4ae6358d7dae49c577b36a2b7dcb15ecd029fcb5e56b9baf7c743a52a691b6c5c1cbc47d102f8044d9120998e13961b2d1be5f035dbc739873a02a7550b9037f353e803003bf9f55caca3b178affeb10fbeb0b776d7f47da26dd20a5ee8b2d282d130ad929bbc2981532e85b95f8d9928f53898b423c228f540de049eb0ffc6e0537205af8b0c44fa88598f0f017c2d2e7bee98aae046b2896542159951abbd76dc56f35f0ea7a658735d8a9f68c485bc6601bea50d085bb7dc72968b0ba32bb4485cfcd046dc0daa6577fb9b4d01d660e3d2d2a41dd14e2eb119ba767c5a3d07776a2f2edfece11b54bdc9a32ad970715c565d3e5f0901c481b444d73df87573f9e6b1b3f673912650798722ba72ee40c5521011ba3900f4c213f813b58deab51ffe3cb3c7e38c3b05bfe68e39c95c1d7ed1f485b20b547f2be738f6aff97e9a75c3e4bf53f1cb4cdc87d9ba47cbf74f15215f6c7c900107d5cd9403891bc5ad560f8ebc4a15da2c25eb14f60a9ea7a015f4f80b1669876d89a3a862714498101e28312e0346cd070831c32d76fed4bdcd1c7f449e361d3ad8890e7082a757f5ac1f1d88c1ca8dddc64003c985e93d48a1a1c3f133e024e669b202f1f55e46ff5fca14a7b5b1b19b0b8cb63da0deccda97ce5aadddb4d6462df66d2f245067f9178845a789c1c6bf76de452fac0225143168b2fcd1c48da699d6647879c139d3709eef9c1d11a7e68f77299cdae1d012b88b201e070917974a127c12447a4b19a0aa8172ad0e87890b360fe8551937f26f038a1feba04561913c6ed9409e919132774202bdf0243fb4748678452d58d37407e833dcd56e35666880238314f71d294075cc1d0e8a418346554be5e5fe0208b48e41cf8941021815eee56432cda8754b8867e60c5cc8d137755759b14f53796a5ab7bbb302fe4357cf5ff9f0b3459de0a8526b833d52b4b8ea494b2e333ff0878bb53ce525fe9c53d478857f88ac1b8c166c8f37636514e6710d138f458dcb617c7c1ec53c71f1cbc13f4e6f0d5c64d4a5e379e96e80ccfb02bc13b292795659e44c38a211093a708cbbd1acf2271d856f28e41a0c3b168c29848137c6d36c8b8e491773182530d04f2bde99533920126f33e9457742cce5657bab4402aba15a6f99965c8305e8a034821876cd2e1faed1742cb73668a27ab24fd01a8c0f78bf9d5c8afa093ec544bedba953e40ed78c73930d0d236af6df9a6e482eaaf3be41ee62ce327d1578d73f5a2330fb59451244178f72f236e3c813e75b77730c8b2d1619ddb84cb164d2819770710b59985d6bbb9a2a9a812566b6fb9f20dbd0bdc858fbf93bca2b9c313a5761d4c4207260cf0a363c5cc25e3dcd16a430b62772fee38bc45773ee128efa082b2484c50cfb8e9ca857156ff893c22c879bd26e19a892a386940c72e05a5b142657d45a0d2d482ec3c80a02cd830104cc11dbff022aeb84e0f4cdfcde98e99f2604c79f5e4f45708720c6e9b10b9a584efebc5b273c67265cdb20a9a01fc7783f6c4efd546cffe1912183b3aae8c9e8f02f34a7b702b98d543962f285dd2b949ce990a14ad5315c43ae13cd21da93c926b519d42d404cfbb186d20ab529a2da4fa3dc4b435257f44ead977057b9d08608c33b6196cec859a516d585e4dd4729ef201dd031f9015857f93ae1da3899eb33c11f38f1969b1aaf818d2d4400a2d7af87c783cdde1c2cb21a7628398083aab3c003e27003e780a45ff395532117712ba5b99661970a9d5da58bda4296841a7b81c9a23c9cb45223040c1f6b36986953cae346deedfbee07358fc82db1e727b5e2db6b672249be6c415bba17da0ac6ec43fb7194bdb5aa60946f4a49319a881820dcadea630813df7216a5991c9ba241cafd456253bd1a80b799df08d55babfbc6cc3d5b510f7e30a8684d5a6bdc99cbcccb9a0bd9405248894fc3ac4b900b2891d916b1b20350f3b9eec4953596099f2f26acde045a96810a00d94c4b091c534a673e870101010020000000210000009f0000000500000003000000030000000100000001000000010000000100000005000000020000000002010104040000e30000001ab98d0000af8a00000160ffff9366ffff3944ffffca01132fb0be137a4c1ede07d446ccbf135720104b7fdca16fcfe20063762ea0abe4c708b2363ef31b2fcc256399cacda0c412d0893b7beababaecfc6aad9ac94957a4eec60b60d0c5db227d67f3f8f0c5da916d52a4c703e00d06020100210000001e0000002200000000000000010101002200000023000000c50200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000300000001bfedc018d45d9ccd63b15a26110fa9aa3545fbcfedad587a71e99543ed8d56e156c071dd0ecb4dcbaaad6d438899a9e70ec3fd93266e6c64783095cb8863fb1d6f9f64c486d3c6bead5346aefb778b5af008a663d9760ec3a6cc4921df64159efee983d6e8607e88f9b8252819adced4914070d42e05c1e00fe7fd434b122914363bc15a69b5fbeb93b3f931b2b7a3066389189ab447c481de5c06a20069fe0900097b55478c4ac7cdaeecdca7de8818982d4786f21980178709322044838624e6c9c972e7ca5e3bea17173d63e626e4d206f6ed286c00bcf606e529197b8d2b1b0bbbd9274569bc2d3724f30f5ddedb01ed573605a69504fa0aa5a4888dab958d4662b66e9f97b1d01b7bc54a2bd52a22459fc9ec381f9bc9b3ac8ff9a346131d0277b0d523f0738a7e682a9a1636687a9763cb3eb87ca92f2ba0abcee22a1ba4d3b72f99648110312aa313c707173f854079bebc2e6ad6c8287adb35a45603d3dfe05b9f47ec706864cbc17d4e51ed162bc53cfbd5f883d37cf0923d75be299a1e60f982b3e52b90f229eab4d07928bbf1b45b4d43e746370e81e41c35084823721ab47f4af1a5f1a9334bd5af928118205d4fe73dd698ac61d1f11db1aceaf0d084ea81fd6e16860b71a8b3b5761998a85a1c9e2d3ed53e26ca4625d803c2dcd5673cd3b7be6ce556e43994f1bbadbbd3fdda5d84338b233a19d46c5ecc97fd87afed21a45c50f76716acd3e3c793cfd9b79daa87d62bf12092a6f1c03017bf6e059b1bfa6aafa548ada06b1c248bbd546e8b84e5bacedc50f4cd55a23244836a7ac74ab19b3ac881652b8afd5b2816270f43b0079d9007cd8b48f3e052e4b0dd79ccbe5768e4e2eb8504f9795f626aebc73d34eb4c3ab933981ecfda9bda2632f4182f3fd9b3cb9ceda9b4abb200db059cdb90c010100230000002400000000000000010101002400000025000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001b339c85dc2e46f0e40c010100250000002600000000000000010101002600000027000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001c97616616fba2d77882eff5a35f55ca49cb668ef49305ca19b8e2dd5883aff05ac3b5ad0777f4b38d8874913e9cd6384982c1214a68d30f16286c30b6b38c24423de7ce3a14f60841c06f783c83bd9691ab8d6dfe80ebc43a836462e4222668377bc2938c98209f0100c4fbd400b17c160fab6173428fbb2a4cf5567aa67bcf68dafb4618fc52cddcc83f158f113883b3adfc14a37e2f9c94abcd3a119023aaf4443cea321356bdbf7ff891d927c04f2c9f34f957c422ff326486d9144093e208e2f3504b0fefe5f937cd8ae61a4eccc7f7b664f78d936876a774f561dcd5a202f6b14dff511c11b02859a6198a2f602dfe025c995a5798333a5eed42642601d22fa3a7c31aedd47b8449432a0594e98d720cc44aa6f074a50e1e4c8547ba4a4f4731a89a6a8b84e6c58bfcc395d4adf153adcb07a4a5588a3e95f3c8c39b12531cb2ff393ea6745d4486c176855fb0a0617a48a574e9c5c847c15183ca9192330a988544f02ef871bbe1a23f73933bb160441e69a97e6abf7b3a1ac0e27c8439962ce224d071b3adc892a5ed068c365803833a73ba15c074f5c55676bfdb2df9c6f715ba8ab7c2ab95569c3c10764a78c830be36759fca2c98e48983634f82dce8ff84d560663a6b5a1eb6d80bbf505b2704a7df39cdfbb3a9080eae2b452df15ed7f9e6d80738b3e93c7d31eaff9951de81daf7056542c774fdb263c9c8b77ec0e86f0ad11058aaeb512a3020059e524060657366f40c264a0f7d562eb9a02989c3e3899d5e99bc1619ca45024b5e902c6b9db2f116c5e4b2e3cfb57c5e28e4f11d6674ce737d736b197710752100b75b12cd723d039167e44d13bb183c19b12b823dc1f0a1e134751205e73d782ff758720581b312b2706ae6bb16ab49f88c050201000b00000027000000280000000000000008010100080000002900000008000000e0010000a000000006030100130000001d000000280000002a00000000000000010101002a0000002b000000f11200000500000001000000010000000100000001000000000000000000000001000000020000000000010104000000880000001e0aacbf4d09ddefcc02c61b8e3619a4bb2d55b13d677cf54322a0673f62fc16999c00d93bab8c24732d51384034a26e1622ba5b734efec58fe5c6582eb20f1b0970a097b983ae49c8567a974467548791f0d314199aff10f24d281b2f6eb3400edba7506266a5c0f379080a95aa7b6208fd7f4fdd44b5704d771b45cd91aac963acf20fc236cd6a11f05e3b24c9deedc72567150885ada22da2d6467270000c35044f18712e13e51ddbcfcc5785fc5af4970671a5d4ae1dd0f2b14740497751fa5c3cc69f13313f3e11a5dc66391e884b23003d04f3bb473450ace9086748571b9ffc956e42665a4b0d520caa47ebb0350b4dc8ecf9d45ce09284e98e89881163489dbc574773e06a2b66130d21548b8b16fe1e8f36e143ba3d2d25d051d796cd855aabd99864d2fbca65769180d5c0d361626c5229ed776070aa96da07f93a4fed9ea67215f80a8848e79f421365b4ba8282cd3ae31d7d46124c0b2709da4f1c62dd5e39a9370b9be1246161a918fc403d9d5addc9ec95976c1f33db103fd864171b580736acde95233634dca46c3ce5a0d8128c916bc91e37286b32fe1280979288861c22bb48dcba5601cda44703cd3aa6843ecc2542ff2cd85d166b3e79b1d4b5fb884e509c5fc5efd71af7a7eb80615953220d36a35adcd885c720f19487a957ebbc9d910ab57361b3d3b4c6e6248cdd11c96e849a78a7765ca4f13f8030bcf9dfd72988f2cd2984f3e3ff4c9fb4e04b8a2f925d5fb746de3b4f18ddf449590015408a31f9a0d1858d50095b5c55708b922a49c0e4164147f81dbe964d8c0f06d63772ab2804c468d80222239a8f98ae66b6cb8a13dc780eb16acdd5a46cc8f3dd171d9ecf09bcee015236d311b764ee03e54ac5a1c9e9451510c5fccb1dd250dd02b10ed7283315c4bff3d9b77d13fe62b97e906320c04c73783660e4e5a9558ce406987133d9716c4ab6343fe7b90ea9c7fa4a1126fefc9321e16e04a6ba29ac99bd5948272411f3b6e74cedf6410adfe5fdc45d031bd6cfc743fe563b96e3df79938fbc0ae9c2d7d613a51a103df1939739c6f7f648d318148ab220e46a6be5b67c44140f7d3de581589d45ae9ac4b5fb204db365d2b11cb1c0c2b2e373a90cdf8ed079942b5babcc84df9471e9bc601a131f94d91846dc2d7b3590667ff397c7a3086ff7a81213802b581a166e1371682962e051823e1ca50c05a985af25c086f2b7c68a911ec3bf17f247452a8621004d1d283157b246544b7797b18b08cdd2b16c3d4884e822e72b7ea28baaa03aa693826dbbaff6690df806cb3c88038d490083f8568a69cd3ac7e79c48e4f2b9388b1aad6e88f44d3e74d45de7aa06550b4185336b8db1d3ba98713a7f79b8235f1d726a88985cc826e5c8158bc6a7596dcf251ad61eb864c1ba2dd500f6e23e274019f0e7763a0b8c3510cf293c9ebfae37d6ecbe68614e1acefd7d0b836c73931ebfcb2b16eaee99c7e32c6a2b34167e336b601091d84e94b2578e71d686ec5f5c4bc6ad6099014d5c632e29fe1f83034a38f3a7b984232ef0b654638d1bc6356e23efbca8a52b9bd26843d4490675cb247050d63811973f2c85fff167e0e0dd11018ad84081826b95ede0172dd612e3b45984601491d6d1331bbf9307e7408b7ecdedbf44dc817961c5290ff5b05a18a4b8e1e69fa09722ed3a359b7f06740c4f4ce73ce7e1e8a6a74ca52dc21fde2a7ce13d969c921eacd410de2456340fca41d6f07b654bfb41b1303a8219edb74963c6aef14c1be3d61dabe9c1bbe846b8f9f0f29e095ee12f814643303b73d22724f625ea3e787b39ff18851a7aabf809c13be7f479f4bf7e2a6ebe843afe9a88f86a8ebd7ff871f6a59cb508d6554e94cb0f7fbecf8f987540e34a380150797505696a48182931f1602b82e88c86909eec56ce986366be573c901202470c2fa9f4d5874b87e2f43a35567de0f00c6a0721f7b09d3ac603c7c9f2def795256057c791928409e35d0a17a5e8c162f43f8c0970b571aba7380327a13df46945ad2eb95ce101cddceaf4b47a3becfbde61e6c3a56a0bd49e5767c1b02c8231c60e315d4b557f3e04b698ab7aa416347563d0fd205372168c5ab1314db8c4ba477442350df7a426654ef7c1d372debd48a3b8b96839e25ab9cd054a2a94084e24867b8987524cfd30048e51f70d64a3841d7c5d3d8c2d25c1e6187d6b7ccc2388b2aabeffff8451f3cfa48206392c14337b344f241460a059b214d93ab7f6857418bccb4e8b4927e7d7e14c90a4927037a1ad57c7c822fa330dd4f6b51f5082911c27db272552ef8958745a36292489f996bab31d0383529a7af375ff0e061c413e8892d42a1b371974fe4fc88ebb9036facbe49250feaa4a960a7659e4ca3740a677436074d60e4d9eb2a27d788db29631f02ab254269c202cf3187580ea406adce75a7d242daca9cd138a32931b85694c5a0690290888948a6f52a1d919d9f44c95eb0ea17a568cb395a2af53a95caee19ae815e227217cc3e427040426c999709adee5a11e0da574d97947ab437aba31f4be9898c57f0eec661d69fe6bbfdc7ab6471abde3a98c3417502f7afd6b59735f8f3196860ea677a77d1aacf1291bb297114d3e67b817f99ee91713e51102b3d801436e1e533a046cc7a793d0d558a68d9f7fe742bd1f3df0410ca95454efc9e31e69ef1dbbbb7159191f78c4022ca764040cdff65ac49c755f7b663e2a98a1958a5fd8f1d71062eacf3e3ab725699804d74d4b25b4d2bff0399266fcdbccacab7ffb8f8bb1c9e7b4f836b0877aabc87f8fbea6086e6b785b4aa5785cc0dfdd87501381c01eae3717426c3800074c1c09b80c69e8a3746777e89493e8c451188ebbb42b49254697b92e953f9bac5c58f567ef05d0a34b9a9e7bdbd874f2e4ff78a3d2d052d8fe52124f5f45bc9d96b04afabb85152b41793ad733b9244b970d96c1879acdf153f0166816ec48aedb3402bec518df315c2412f3bf7e9accc6be8faeae4e5108dceb7404d894b2f4b265dfbfac13a1706ab3172bbd6b77360811328deb779850ad99c2fd61807b9fed41908b74788c2d721bbe89ddd36f5f79f035f2248d06f0310c90860cd54882c9fb04483fd0f1432d20c0cab81047eb0f529a80fbb695ed3407e0a39fec8adf7912332e8581e1a2014a4ae8eaf3ac7a36ef2f101270c0bc8255094ce72cd1b7e46f76567919efd343a36ad5aadefc73310f11483c9c5d1130acca61d5e8f179522d055f4501d6a91eb1f9fc7948cefd29cef9bf00b40969d1be7ce6ed7cc46cfe71e5e7f49c32cb8c7376bffbd9de501a9e3d722b885cf024d74bc05819de49a72e0c4be72c29db3dccee08bf36993b757e89f556e7ac17eaec284cb5ad7b1dbfa3baeb0d105768ff0b9314bee0545974196a349e4d64818f7042266936c5084381e5592f5e153f7ab75af744ca9e54639c4dda11dd44165352161120dc8a3657abff593984e81c8f14376eb8ea24a7c28afa02378f1c032b00688f05d620477a3ef8de01bd70058d9ccb89f340786b9af63747b51516501dc02fe9766e64ace4419fb67438d85f30f19a46de2e8d088234659c82a78eff89b0fb0fbfa0120e181e73e8bd8a6401bd2553de4294589e2b2886a8eb80be90a3bb8713cc0ac8fc8b0110479147d5dde37c4b1e0e448833ee07afe959387258639d54a867565671227aac9e81b3dab7f38ff72dc0d58b011deec95f0d9ecd760385c3622cc3619fe49eca5233f20b2158de5a60b865fcf0587ed39e5002ff0eefb03346eb77e60958e85e5cfff26fcc1d31086b09d09e21d0e652777bfc484cca665b480843dbeeb5f67c9095a8652635d81b8a2db73270acd6e10adbbef9956580de04a9adb2e9db05c2f8eb941b75a42f7ec47bf1cacbad33852727eced98a1c4f01e8c971060a547fe6d4575d262b07ed58a568db4ce237185f0572a220b6c185f781bb33da525dc3f9d9567cfaac7a328c0b42f3319fd36be30e1c738c5c10345400a6ff781c50a8a5cc8b4bc6f1aed4403d310feb481897ff53b2b8b7fcf036e99d22d5078dbdefa3e356034e9cf886829e8e6e4c118b4ee332f771e98b21e725ea88bb1d561959689fba96bd981a09cfa5bed8eaa22499890981bf1f6eb70cabe56a31a8f4c952b6feb6c0917e47fe08e5d8e794c6a12fd5eba5524ae7ae7806fbee63e01403a4c1daa0181eb6476301a99c5fe1b1ee67f8ac86e40c7129d457bdb07f8066eb2b633fda8176dfec695acf71904d5d9c9e1690b3cd779ba27125294f163e20d37052148e572427ecea5267c5bc4f1f88dd08e89b3660b8a137aebfeaf474b429eabcc61d56510a6188bd849bfdb8e7d16968caea2d621768580547e002adfdcdb63f98566247ee3bc9a930671aa74d91a415c23d72b578311503599ab77a384ea5fa0c4cdb41a9527c9e47f7cfe7324696f9615253a80b05c8a409e43f5c68e5701e33fcc7c4169221f0de9992393a34c63fb9aa73cded6b257954433409c0e1570303cd28181c9dae4f13b9fdf5aae30126ca5a0cda7f4b982d9ad03efbc18cc6e86eb721a2d8c8ed2e2f5d512e3e8089c5689e18b5460129cb1a4a1390d54c1fb8d4f716b56ebcf5a427501d70df82986135b32b95a23559a270ea94f0dff7dbd7a0090c262a0cf054c1c61dbd0e92004c5282369467d5299929356dbf5ff1973b63566346a8f9451c96f1eda7dde0e92c22975658276c2aa96d6e4fcf59a8e716b01831fa8ef3339f1b8020b42a5527851ee4476027a657d400582a711de8f69f264a2a4f697f44d8ed050febc98547563654e2ca8a7259b7be997f805585a6ee622b8967ab88d03d0645d6f312a3eccafabcbaba12f9480269fde9a6e54c5e212dbbc1498ddbdcb1d29e253444449d945e3aeb1255d8074784c05d1413c1963ae62a6b1b291c24cc10fd1702b29974e2abb3c429bab283d256a8df86511720e0ffc205987ca10ea946e1483c6b5c6ada8c0662520e44034a6ab8cc053905c3b6984a7cc63be73b5a4641107d5cc6f338dcfa0bf991d8766d25f4852699e2473c882eca13a1b8694419e5a223df464c03d385c37cddfc4415dba89d8a5e5fe2e2e532e361dc54d119c78888fe50503149049f651b08636d6dc16c5e697e16401367ca13781e6039d27b9d7780405dd44102e6ddac899fbfc0ac61f44a7de1172eb9903f1fce0843e5820d0f37139dbe3b92e5008220cbf5bd5327ae1f705ab309b27810de52fac6ec55dac465e94ccd3c4b7ba73e5bfba847fcfc44254b084b52988c91c3df20524b3f107f6775b5449d96a709b5222db0a0e826b2b7ccc584acebbdc2b9c4f0f9d4ed674250dfa0193d97767200c1db82484c5d9afdbd4df89f3e8853ab3f7a025a892b31f8603099bfdf06fcc3785d22725962b01d56817ff152b6f5e5238bc7dd140a402a5596045a9017dffd43889a4c5b7dd9f2cde63ce1dddd1673e454c2ee3b8a101ad96414072c94ac5222868d6fe55a960eaa71d6675c78e929610e71ceb76d28458ddca8401a25dd692a4d61071543e2151c20f5b074513f9f4bb1117a9ac298c5f320e70ad3bb3dfa6e6765e85b288b0919e1cd5d95a57a73d67b6ad0072bff3182ea5ebb1397bdfc02a007e83b84a83e6d052041b1b2fed4d69ab51d5e4ad5bd8213d20b69c867204d7c88f09cf9686508039375458b8a0628ed6d5a54c64ebe2aa748bbeeea83258207a31c635ff86056461a9a0e443d7d2ca1da73d1927ca9984d4e5653dd70ca4d465b53835c312a4ef60743a043e5346f12e1c88c28d4945f98905cd99ae9706e973bede8237899133787df0e8f94b783d1bc2c4ee755935e3dd5156b8c5f280dc7fad45c36d75d6ad712109b97406d187e03cbc5e4d55603861e817dd158533c56939f1928d7091b50e09af1589662a0a23f8d8664e93784ef5c30b00212b03832a3fa3face76f12597e004c88f239f1d82e2ff1d11a422f9b1c220175ed9cf6e2c6f029891087a50f2c304b0db4d4d133c8d30bad791a247e78d1fb174a3ed73b0d29f98ffaa9d98575a6067f64a986771fb5413c54865af76ab0e49c0b32fd37d922e3a8882f3f902f1b9c16a20632b1eec3331f88932ea84e643b7b48f51ed4f06329f57275310e75ff8abfc7da0881e6f439a00bed91d7492cebdc083def0076aa9fd354c33960b4050aaab5c3d9f4858b8f8c779ebeb785408aa707bf60c586b2e5998ccaa200dd4fd03db01a79e37b649f1af4f05d05616c581ed356392e21eb87864ea27d89e4304dab42fa5b75e0947129b9c8547e121e1f29fbaad312fb3183c3a4a28918e026a50aba8fa2d216df1ccca76b31534b545b168ef7ee63e17674a7c8927e14b78e0a2cdabefb7814627ac6a5ca30238c6feb80964db8a8be2ba13d06a6b0e6be65f89254c1ff1b437bbd0ce5fad1da914c7d592d2e0dfb77fab5b49da3bf2ad22a3d9de1d26e36c1b03e9ce7b2aabc40020f0e0084f0b4cd1bc151ae3b8939bd652e78960e58383e2c11209e3b9c88e45a27ae601a4ad2f50c906749dd8ced2dd8206b700f83ffd3c814846277c0c91d8c9ed4c45fb4f652a8c45f4f28d6db3cccd0268c0aef5923891ed569356856c315bd5c63da870e8748a094041069f7072bc9fff812809e766af7503c01e1433cdc0329beaf3037c8b2d1e7ab5de4614daf8e7f9d83a9aae476c2202798efb01c52220d21e994658c3a31c2a80917d345daf4da1e179d6c9409e70fcea5ef116e24cf821c1d5165eb1b07c9540010101002b0000002c0000009f0000000500000003000000030000000100000001000000010000000100000005000000020000000002010104040000c70100001bbb320000505a000088adffffca73000018c4ffffbb9af5c9b0ba0a7fc0c25f067351ea848def70a02430eb3ac7d55e1cbb4f4c3c9dda23fbbd567b4d1ce13e717b9e25ccc7546c69df70f6c1f4d42f6a1791fc94a04883a4d74df346f781804e1f453670d9f3ff8d75a7dd4a8965060201002c000000290000002d00000000000000010101002d0000002e000000c50200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000300000001ba66360eafadba06f6d7b79912294b00376aa7c22b9bd1ff6b3a01c4d111358fefdbbc3feab76551dc376fef1e0c351840acb54b03e336d03995eb0e34bd35ad6ae7bf592bcdbe4e3f2bc5d9ca781817fed1701367b70ded9494ce902d01ca4c303c9d2372b96dd0711bb5b23bc02438268621c55cef57d2acdf39e3d6ed807f015ce95e82d7c86e79b70aa9ae56d27899bf38b8a66bb785a29cb9846bffb3468d9958fd21799992982bfd4e7b91e18c766c629584d291d14786d671a8728767a11d7f1e2631eeff2f6fff10dac119062fafb387ae3a54666ac92a0f73ed32f52b0a9d3984825bcac69f013d4e57de0b415308dceb5027aaca703fa77d227d3e330e9d63c718ca5e051448acc5426294678fcee1fcfc9ee1d6df9a44b0311450d9e43a7c85a71e2f7f428d7af04acfd7a5d96f349947a5fe9f11e51a3eb4290641cddc2def1ce12e0c2de11c703198772529626f3e5727fff0c699ec93d2ce96a8e6d16e86677fd10dab021162b5d85bb572e52713da47b2bc6e9312c9ef032a6f9a99719d32ae3dee968f5d04ca170dbd0912542f7b80540a7ce98a4ff531fa3abe48bfcb12a2536203c9d03e445d8fabf0cab956fddc2546044dce2982d513e2adbd0ff8a0b877524bfe631395c446c7a7d14be9ab57760ff1cbeced42f2409fd3073b7b454ac9f7c4d67874a8698944928a3d03bb8a083aee29fa5c71b3beb6bd7e2541d1d2ecf46ce4c68d7f340b436c7f80941971c9f43755ed37fe04b822feaf526b51c2c885b332efca2ba47f7fdbaad39f6d08d6f84936ade63004a865491806c3b458103257425b13b3ab18ce15c546c48f0ff1f556c9191ef244a8bc34d667f61505a39cc63a803249fb7c82b9a0e437f03911476cf08306715a5d9c6f07f1b11507414b61d792fba0b2e2139dcfd930c0101002e0000002f00000000000000010101002f00000030000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001c41919935831f1a840c010100300000003100000000000000010101003100000032000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001db58dda4b276675aee2fcfc14d0cdb25fa669422e723cb11afb921468a3c57eb3262c8e942e359d891d1b8619722e16167ca256323976526e0a5626f58436e3448b681de0fa9776b678bdb035b651da0be7753ec25042395223e8172a9c8822e4d8a94d876cee8dd37ddc450bfd9e132ff9ce98b34fdc39179f49fedd8b91fb0daf32bc2a42fcc99b1dfd43e255e31656523dec6bffb299f06138805fe3aa207768398ec07738535e1eec0b75b03802f3b2978e066c0e47392fcaf467e7149c87b6f1b36a63976e27ab6c9e9f71dd061aeeb65b1c5354b3ad614ee7bdef1e9b8f4843b92a284b6725c86391071db842c8ed921cde96e1f33fc34e7dcb731bae7dd6b4c1291dd9e7174b83bda551b598c7be70f5cba15ee0a6273a06e519e590b3f52aae86a2cbc7cabf75f85c21e275ddb1ea0396886d184ed8e2665334f13e21c7ef88bb4718e4919f68e2fe394d28f7ec198f4a28fd3eab279a63751c7ff4beea6767b8943be822890fae0064edfbcb673f2cb1f2cb84041bfecf4460dbff471dfe55191de3e925dc63e6d6701b2001d151a7edb843d9c2dd374e6300f48895d26960b4aad02de730728d995ad4c5f55e864c81c8673a54e5ec4f91099f0b3a95fff464dc292a73387de1ae95a2b67aa568fbc9b840a14b5f7a86ee3878762361a6332c91200938986919ac4cf67b1de6507d29c2073e1de2d21c2300482b85333608a413993f23f42d34b3c6b4e1b68f4f3e04b97f22ca45d1ba8e400a2aa187bfd77aafe01ce470b1f002c1322cfe5c2efc9570ac6e3b845e45ba6f5b20719fe4843f0f099c60d7195adf8058ce502a6f0b7bc98f86fe8562b8243d0c7d9a4343f071e7ee319116d22fff796c8e6665d67c2e404d807e4697c8d0a4f9cd59050201000c00000032000000330000000000000016040100130000001d0000002800000033000000340000000400000000030102","id":"lower_jpegai/jpegai/rec_y/4","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"refuse":"field_range"},"inputs":[{"data":["33","5","32","0","-31","-31","15","0","-31","-31","2","-31","32","13","-31","-31","-31","0","32","32","-31","-31","32","-31","32","32","-31","21","32","-29","-31","14","-31","-31","32","32","32","4","20","12","32","0","-31","32","-23","32","-31","-31","32","12","-31","0","18","6","22","5","32","-31","8","-31","0","-31","-28","26","-31","-31","19","-29","-31","32","32","-31","-28","21","0","13","7","32","0","14","32","-31","-16","32","24","0","-31","-31","-6","32","-31","32","-31","0","15","-31","32","-31","21","-31","4","-31","-17","0","32","-1","-31","-24","-31","-31","24","0","-31","-5","32","32","-3","-31","32","-30","-3","7","-31","32","2","32","-23","-31","0","-29","-10","32","0","-25","-31","-31","12","0","25","-24","28","3","-31","0","-25","-28","27","-17","29","0","0","-27","-31","32","32","32","-19","-31","-31","18"],"shape":["160","1","1"]},{"data":["300","2","300","300","56","-300","300","240","-249","-258","233","-300","248","-32","-43","300","284","-300","-114","-300","-300","-300","0","-134","300","-289","83","-300","300","26","162","300","300","-300","-298","-300","-217","-108","-300","300","-300","-300","157","300","-300","0","-4","-300","76","300","-300","-247","-39","300","-125","300","121","223","-38","0","0","-300","-300","-290","-124","-300","0","300","-300","-95","-300","-99","300","300","0","-45","300","-300","300","96","223","0","0","-300","269","-300","269","281","0","108","-300","211","210","0","-268","-69","300","300","-300","-300","300","0","-123","51","300","-155","74","11","-288","-237","-300","-300","300","-23","-219","-300","-300","-300","-300","107","300","-149","300","-208","300","300","-280","300","-300","-300","-300","0","45","0","300","-300","-211","0","0","-171","-300","-300","0","-300","0","300","37","300","-300","-300","300","300","-122","300","210","-300","-93","-300","-26","0","-117","0","-300","265","300","-300","-300","-111","-300","284","-160","300","-300","-37","-300","-103","-300","300","-49","0","85","0","-300","0","0","-300","107","-283","-300","161","0","269","153","0","300","160","300","300","95","0","0","251","0","5","300","300","300","300","-269","300","-300","300","-77","-241","-78","-36","0","26","0","-122","0","-300","214","0","-28","300","109","-300","-163","-32","-70","300","-300","-300","-111","262","0","68","210","-300","300","196","0","-300","-64","17","0","300","203","0","300","-300","300","0","300","-300","300","-143","-43","300","0","-300","0","300","300","-285","300","-20","-300","-300","300","-300","-300","-53","300","270","-60","78","-99","4","300","300","300","-300","300","300","300","-300","-209","226","-5","0","0","-300","300","300","-10","183","300","-300","300","300","79","77","300","300","239","300","300","81","-140","-226","-16","-300","0","300","-300","-300","100","-300","300","300","269","300","0","300","-300","-185","-300","-300","-215","-300","-300","-293","-300","-286","-300","300","300","-23","-142","300","87","300","0","-300","215","-300","300","300","-300","186","-65","-300","300","300","300","-300","191","-52","254","132","247","-300","0","-300","-239","250","75","-288","300","169","0","223","229","-225","300","-300","0","-98","-295","243","300","-208","169","-156","-210","-300","300","0","116","286","300","-80","300","-153","0","300","300","300","300","36","-300","-170","-85","300","300","246","-196","300","-286","300","0","-19","300","-300","-300","-119","-57","-286","14","-300","157","-300","-251","-300","121","32","-300","-300","0","300","300","-117","0","-300","-300","300","300","0","-300","-284","-300","300","-223","181","-300","300","-172","-300","-193","0","-300","-83","300","-46","-300","-181","118","300","-210","-300","300","198","298","-300","300","0","-298","140","0","-300","300","0","-192","-201","86","-242","300","-246","-284","-300","300","-79","-300","300","-222","300","-58","-267","0","-63","300","-247","-146","300","300","300","-300","-300","300","154","270","-300","-300","-89","300","-300","300","-300","-300","300","0","-85","-300","232","0","300","-283","300","0","-300","0","-300","46","300","-300","-300","-300","-300","300","-300","-300","-226","-300","-300","-300","219","-300","217","261","0","-187","300","-193","300","0","0","29","-300","300","149","158","300","300","300","0","0","-300","-300","300","-169","-229","-12","-300","300","191","300","-277","-103","-300","-260","274","-300","-226","-57","300","103","-300","-238","0","300","0","-113","-300","-143","-300","300","28","-229","44","300","-300","133","-300","0","-132","107","300","-300","-300","-300","225","300","-300","128","76","-300","-300","-300","281","0","300","-63","-137","-300","196","300","300","300","-300","100","300","-207","-300","300","51","-300","-300","-300","-284","-300","-300","-141","300","300","-300","-300","-249","290","300","300","300","25","0","300","190","192","-249","300","300","-300","300","170","0","0","300","-190","300","-116","145","-300","300","300","-300","30","-300","-249","-267","-300","-300","-49","-300","-217","-212","300","-300","35","0","300","-300","0","-25","300","-300","-218","-300","300","0","300","-300","-300","0","150","0","-30","253","214","0","142","-300","-6","-300","0","-300","0","25","300","45","-104","144","235","-300","-300","300","-300","283","88","-300","-3","-63","-275","0","263","300","0","-300","-120","-300","0","-300","-300","300","72","59","300","46","300","211","0","206","-300","300","-300","0","-134","-260","300","-300","126","-300","300","-158","16","268","-300","-300","-300","175","300","-276","-300","-300","6","108","-300","-300","-300","300","-300","300","-171","-300","-300","-300","-139","-300","-83","300","300","300","-81","0","0","-127","-300","-300","-300","-300","200","-239","191","0","300","300","-300","-194","300","300","195","-160","300","47","-300","-71","-300","300","-300","194","-300","-300","300","300","0","-289","169","86","-300","-231","0","-300","211","-64","300","300","-299","-300","-300","300","218","-300","300","-233","300","58","300","300","-167","-300","-300","-110","-300","-300","134","256","132","300","-300","-17","-89","0","300","-168","-300","300","233","-300","-300","-300","-300","300","300","-300","58","-300","224","-300","-300","300","-300","80","300","-300","-300","-126","-300","-255","-57","300","-109","-300","-300","300","-218","300","300","300","300","-242","0","300","-115","-300","130","300","215","0","17","-300","-300","-63","-105","-300","0","-267","0","300","151","-69","-300","300","0","0","300","-300","300","-159","-52","-201","300","0","6","-278","0","-300","300","0","96","-300","-154","0","300","-300","-251","-166","0","-64","300","300","-300","300","-300","172","300","192","-268","184","193","300","90","-66","-49","-294","300","-48","300","0","295","300","-300","300","-300","-300","-108","300","175","-273","228","0","300","75","72","151","300","0","-4","300","-300","-295","0","300","-174","0","-237","265","300","143","-300","-234","0","0","300","-241","95","-14","0","34","-300","300","-106","80","0","-70","-17","-300","-104","-300","240","-300","-300","300","41","-8","-300","-300","-300","220","134","-146","291","-15","-164","300","0","219","300","-300","80","62","38","-11","291","-300","300","0","-300","-135","-300","-300","252","296","300","300","28","175","300","37","300","300","300","300","-300","300","41","218","-300","300","300","300","284","-300","0","-300","258","116","-300","-300","142","-300","0","300","147","-25","-81","-300","-300","300","61","0","-300","-251","-134","-300","300","96","0","-236","-300","0","0","300","-136","-278","300","-300","0","126","-300","-300","0","-300","300","0","-300","173","300","6","0","-300","300","-300","300","55","-300","300","-300","0","296","35","-210","300","300","-300","300","57","-300","133","300","-300","-300","-300","-300","-218","-300","-300","85","300","300","300","-62","116","-96","300","-300","-289","300","0","-257","-265","-234","-300","-300","-300","107","-157","279","-300","202","-300","300","300","-135","-38","-12","-300","-100","-32","0","-300","267","0","-300","-238","300","25","192","-180","53","300","272","300","300","-300","20","-161","-300","-237","-300","133","-300","76","-300","-180","-115","23","300","-300","300","-300","225","-281","224","-300","-117","-238","215","300","-300","300","183","-300","300","300","300","0","0","186","0","-300","-300","260","-300","-170","-300","-300","0","300","300","-300","-202","-300","17","148","-300","-98","116","299","-300","-300","-300","300","190","52","-45","300","300","-300","-300","300","64","-300","-300","-13","-300","-300","-300","-300","34","0","3","0","-226","300","-266","300","63","117","-100","188","-298","-150","300","26","150","300","300","-196","270","300","-300","-300","300","0","-300","-300","300","-300","-184","81","41","205","-29","300","-300","151","-300","-300","300","-163","0","-300","300","78","-300","-227","300","-300","-239","0","300","274","-188","-300","-300","0","0","170","-243","58","-300","300","-248","300","-300","300","0","300","300","-249","126","-300","300","-154","300","-187","0","300","-41","-300","-300","-300","300","300","-300","276","300","272","300","300","237","-300","104","-300","18","300","222","-300","300","-300","-20","-300","-57","300","-300","-84","300","-210","300","0","-300","300","-91","153","0","283","0","-300","300","262","-274","-300","-300","-1","237","0","300","300","0","255","300","-300","-59","0","109","-241","300","300","-300","300","-269","-300","-300","127","300","300","-156","300","300","285","33","9","-202","131","-300","-300","300","-92","300","-300","-40","-300","300","222","-12","-300","300","0","-268","-300","-120","-246","12","-252","300","0","300","300","300","-300","272","-300","102","154","300","300","293","0","125","79","-59","300","51","36","300","-300","-300","300","-300","-300","300","300","172","121","300","300","300","0","-253","181","300","0","-64","0","-300","0","150","-282","300","300","-300","0","-40","300","300","295","-237","300","0","-300","28","300","-300","300","-147","-300","80","127","-300","-99","-300","-45","-300","300","-300","-97","300","300","-247","300","42","0","0","-6","-28","-300","300","-300","38","0","300","-300","-300","-31","-300","67","-300","-300","-300","-300","63","-108","300","-300","300","0","-300","-107","-19","300","165","-94","-106","-300","-231","-206","122","257","-57","57","300","0","-300","300","300","300","-290","-300","-208","-20","0","300","300","-300","-13","-115","300","140","300","300","-212","-222","-300","0","47","-300","192","300","129","-300","300","-300","300","300","0","-300","-125","0","-300","88","300","300","300","114","300","-16","300","300","0","-300","300","50","1","0","-98","-300","-199","0","-300","300","300","0","-300","87","0","217","-300","-300","-300","-266","-233","-62","-300","300","300","300","300","-6","300","300","-300","-300","11","-204","-188","-127","218","163","-300","-35","291","176","0","254","37","-300","-300","27","201","300","-300","300","-300","-300","-300","-300","-300","0","-87","300","-145","195","-300","-178","43","112","195","300","-300","-58","148","300","-300","0","300","300","-177","298","300","300","-300","300","-64","-300","0","-9","-300","6","-300","-72","0","-187","0","-300","-126","300","300","-300","0","-245","300","-36","1","300","-300","300","119","-80","0","-300","-55","300","300","300","-60","-300","-300","-296","87","-300","300","-84","-300","0","-132","0","0","-197","0","0","-300","-251","175","300","300","300","-254","-214","125","259","4","257","300","-300","300","196","300","300","300","237","205","146","192","-196","168","-274","-197","0","-169","-300","-300","300","-262","140","213","300","300","-300","0","-300","15","-300","-300","-76","-11","-268","-277","113","0","-122","-225","300","-300","-259","300","300","-283","0","300","-300","-89","0","177","0","0","300","-300","221","300","-300","-49","0","-300","-130","300","300","300","-300","-300","-20","300","-144","-248","-73","-300","-218","-110","0","-150","300","-300","-39","-110","-300","217","300","300","-300","-300","264","262","300","126","-300","0","0","-185","-300","87","-209","-5","0","300","300","0","-62","-300","0","-77","-300","-108","-300","132","300","300","300","300","-283","300","292","-269","-300","280","300","300","300","300","300","-300","-300","0","-34","-147","300","-300","160","144","276","300","0","300","247","174","-46","114","-300","-114","-300","-300","-207","300","0","300","281","0","-300","0","300","39","-99","300","300","-300","110","-300","82","-119","0","234","-300","-300","300","-300","300","300","-12","-18","-37","-300","-35","-232","99","300","-92","-171","-300","-300","283","300","0","300","18","292","-183","-300","300","-264","300","-165","-144","300","-300","33","-300","-194","-300","240","300","300","300","-52","37","256","300","-300","-258","-300","-257","-261","300","-45","33","-17","-300","300","-300","-300","266","-300","-196","-300","300","-300","-274","0","300","-300","-82","300","91","-171","300","0","-276","-239","-300","-68","100","300","-300","-300","300","83","-173","300","300","300","108","300","46","-300","-300","-300","131","103","-113","107","-300","300","-259","-115","300","-300","-300","300","300","-181","-284","300","-300","0","-35","-300","300","160","300","-300","233","0","300","-300","259","-18","-300","-300","218","-300","65","-99","0","0","145","-300","-300","-145","-300","-300","-273","135","155","-215","300","300","0","300","0","-259","300","-300","-143","-300","-219","300","-300","241","300","33","-300","5","-300","-265","-176","-300","0","300","-300","300","300","-32","300","-216","-183","300","-25","0","-300","300","19","0","153","46","-93","-300","77","-300","-57","-61","300","-21","0","146","300","157","300","-196","-119","-300","-294","300","300","300","-300","188","294","300","-300","-300","121","223","300","300","300","113","-300","300","300","-171","300","-85","-300","300","300","122","-183","300","-86","263","187","300","-39","0","0","300","-289","0","0","-300","168","296","-300","-300","0","0","-129","146","300","0","141","148","-175","-281","-91","40","300","-300","-185","300","0","169","22","-239","-41","31","300","-300","-300","300","95","300","300","-178","-300","300","300","-300","300","-234","-300","300","300","0","300","-300","-100","-294","-244","180","140","-300","-7","0","64","243","-142","-300","0","0","-300","-300","0","300","300","300","300","-300","235","-300","160","84","-161","-277","133","300","188","0","300","-216","300","102","-300","300","300","300","300","300","-300","-88","-300","-24","195","-300","-123","-300","-300","300","0","300","300","33","300","300","278","-300","300","-93","-300","107","122","-300","-300","-90","-276","3","-300","300","281","-300","-200","-189","-300","200","-300","286","300","-300","-62","300","300","0","-95","-72","54","-300","-270","-300","253","-300","-300","254","300","300","-300","186","-300","300","-300","121","267","0","-300","0","-181","0","-300","-69","300","115","-300","-300","300","-300","300","300","260","-300","300","-236","300","300","19","-300","-107","-300","4","-300","300","300","-300","0","-300","300","0","0","300","300","300","86","-201","-300","278","-300","300","52","-300","-300","300","-135","-132","264","154","300","300","-64","0","300","187","300","-300","189","102","-300","9","-300","0","300","-300","0","59","149","14","300","176","-300","-299","300","253","300","300","300","0","-300","140","-300","85","-300","-139","268","-251","223","121","300","300","62","-248","170","250","300","4","-22","0","300","-300","-275","250","300","38","-126","176","300","-44","-118","0","-290","0","-300","-300","0","-247","300","-240","-300","-28","0","-99","-300","29","58","-300","-300","-300","300","-300","-264","-219","138","0","300","-300","-300","0","300","21","-204","193","300","300","-116","-300","124","300","0","-71","-300","-39","0","0","-300","-300","0","-300","300","300","-227","300","300","300","300","-300","94","300","0","300","183","-300","-108","-259","300","-300","300","-300","-300","-300","172","-180","-300","292","11","-27","181","120","-300","-107","300","265","208","25","45","-300","300","-139","-85","-71","20","300","300","244","-295","0","300","258","27","-187","300","-5","-300","300","-300","-300","-300","-300","0","145","300","74","-41","300","-300","-58","-102","0","-9","264","-300","-300","140","0","-82","300","-300","300","0","181","-300","300","-300","0","300","-300","-300","0","-263","0","0","300","0","-300","-223","300","209","-300","-133"],"shape":["160","4","4"]}],"scalars":[]}],"graph":"57484731010100003500000030000000020001000000000000000004000000000000000004000000040000000000000000000000000000000000000000000000010000001000000010000000000000000000000000000000000000000000000034000000a000000080020000e1ffffffffffffff2000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000800200008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000a00000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000050000008002000000000080ffffffffffffff7f00000000050000008002000000000080ffffffffffffff7f00000000a50000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000400100008000000000000000000000000000000000000000050000008002000000000080ffffffffffffff7f00000000050000008002000000000080ffffffffffffff7f00000000a50000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a00000008000000000000000000000000000000000000000e00100008000000000000000000000000000000000000000050000008002000000000080ffffffffffffff7f00000000050000008002000000000080ffffffffffffff7f00000000a50000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000a000000080000000000000000000000000000000000000000201010000000000020000000d00000000000101040000000000010000010101000200000003000000b10200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000660000001cfb7c9e5f60de2d6d8f75d7758a8aa1b931096ef1b2a7b4370c8c1a716613b133a2243f561bff9176c30108646884098d5bf14cc3ea4b5fad7f1a22a143c0899f4351d37d8a68df02f2a82cd92a0a3d181a83bfdf3abd0c4dd1a1d8fa9d3346178cd2c3608e457a6af796f3e71f418ae5a5122fa7a03c096169056974ecc2ad2a7f19a19c9f3b890253e664471af9f3fb41d470e5a2822fc52b2de17c27be9e07688703e8dd9a67dcb9a14c2ebd61a2d20314e13a07d03dd7d31786af809e8ffbd82846ce231c5b5117ee1112046d6faed6f9e545094119f873a4ea51be205090a7da06f749a58d3b9391ce9abbe5612cea6528e5605612b1f3d565dfa5d0003f4263a38bf61b34b0fe62db1caa99e12a51ce0040ab6dd0792ec786aa88e314fc6311c9b6d2ec4a1697f810675c8a394d295c37c6b8c475832be8e3aeae33812d4f7eecf16b737082897ad00d1def886708bf49daa0749b5a5b7b16a04cad25bb8c7e4101c86fa98f6895b877c116a6160d82555dbbde0d13ac88155aebe2db367ec706280ac73f8cc0188d63ef8bc13f26bb52f74595a38a3fa66f788495680066784963b1010d6f10c0bd6810eef2e4492b6ed0bd45dfa8c6f4f4dea773df16e977df457486d9695ce960f1bd965d792ecabc5285cc6bb56d4f2d0c9b15e87bf10e8b929544972fce2d7bebee2e7c54f0a92f477b7b86259e365fcfadcc95d6c45a6b788f4601c450a7f8c2b24eaef495c42bd5431f125d3324446c63b6d8021854ed9a2d090af1c73f7c97f72222fccf72a9bda9a6de18e3d70d8817cc66b991dc5f67b630fc29929172947a00f1ad7ee83ac7ec0b47f1626bc5bd505b8e51ea3348e82bd9d5676797751bb5b6ac7d9f828b89f6e3534db4e3c42cf9268175110101000300000004000000bd000000020000000400000004000000020000000200000001000000010000000000000000000000020000000002010104040000000400001ea4d90000e35ffffff54bef6437161ba86ac268c77023d36a9ea2936b8b2206045981dd9f62182f816753b6fc96d08d5e28f320fb08a920018003c2c8c467334906be28a40652e31d261acec692b8a2ad16956db129fcba82dd52d78f77432edb0c9704e67b7ccd8b20e0ff4e87a54f4da1500a7361a23d040e6a7b1560d914b5ceb2bc5999253f290b01010004000000050000001000000000000000000000000000060000000000010101000500000006000000810000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000390e00001f6a7affff87ee0000db17c0769e52ff9f9d496cad964cb4d62b70ab6c7c96fbf05897d2657321183225f3e6fea27892467dd2f7bdf91940b86bbbdb35f172f4d9e146f44d8f43de2b0d15928dadb17c610b01010006000000070000001000000000000000000000000000060000000000010101000700000008000000316400008002000003000000030000000100000001000000010000000100000001000000020000000002010104040000710000001a3889ffff7c9d00000b79ffffb8610000f864ffff7f760000311b0000e6beffffb44c000090940000e3cfffffda6e0000b0260000c14f0000aba800001918ffffa80cffffddfd0000de39ffff5232ffff5e5300003e0c0000baf5ffff5a72ffffeb76fffff108ffff8aa40000d3c5ffff5de100005789ffff3d82ffff1926ffffffe20000d058ffff1b7000004d63fffffc4a00000e62ffffa538000041400000306a0000e24e000050d90000c6d200002c6dffff6a5bffffd8f7ffff3ca8ffffb9caffffde4600006868000050b4000036eaffffda90ffff3a61000067a700004b2a0000aa9effff6ee2ffffe73d00009a59ffff4909ffffcea8ffffd192ffff2e88ffffebe2ffffda810000a12bffff460dffff44920000dd2e000063bf0000f4fc00001e5affffb611000058d20000dbf30000120b0000103cffff5480ffffc3050000bdfcffff6cf1000072c8ffff04f1ffffd6fcffff2a1fffff0fe7ffff6ab0ffffcd0dffffba8bfffff58b0000997a0000ae6fffffe86cffff254800006754000052f10000245c0000bc4e0000b6ecffff2b9effff04340000a473fffff2bbffff391300002de1ffffc36fffffcb33000060cfffffbbe5ffffa4590000499bffff55dc0000f3360000ebe3ffff36a30000684a0000c91b000007e7ffff562f00002fab00007577ffffe140fffff2c2000076e9000053a6ffff57ba000023a600009957000080870000842dffffb4040000cb8500004b50ffff96d20000fa8affff064d00007fe7fffff62c000040b8000012eeffffdfb5ffff61f1ffff760700000e4600004b7cffff903effffa31fffff563bffff3007ffff4abf0000edc50000d24f0000546b000055f2ffff2317ffffb954000080a0000060e90000949c0000d248ffff619cffff1a020000bd240000f008000048f90000c64300006ac00000e154ffff94dd00004cee00007ff3ffff3ff4ffff9236ffff6db6ffff48d8ffffadc9000051adffff15e3ffffd04b00008a1e000026760000f32d0000b92400004c83000021050000e841ffffafb10000dd33fffffc930000ac440000172e000058e6ffff2d350000cda50000b1260000cc37000068cbffff6cdbffff52d800007134ffff3634ffff4cbaffff888efffffbb20000652800002005000008feffff479b0000101e000016f400008ab1ffffe35100009d750000f8c4ffffab8dffff8062ffff149f00006be8ffff9b9effff4159ffff5b450000e10b0000bd41ffff22720000ec1fffff5f810000e8960000f52effff86220000df050000caddffff5286fffff40400006fc50000ae520000c9d000008e7effff4f1effffd2d1ffffc56b000019b5ffffd517ffff6901ffff65db0000b5d400009ff9ffff6d1c0000e944ffffd0cd00006125ffff1c0000005aa90000edf5ffffa6300000242200006a6effffbb98ffffddff00004da4ffffddcc0000bacbffff264a0000e2a70000b7f0ffff7b9fffffd8de00002a86ffff74afffff110efffff8e3ffff9d78ffff79fb0000a1afffffbc020000c2970000c6d8000039400000d265000023680000865b0000d93a0000f9a0ffff5c68ffffa749ffffa58500002045000046390000f99fffffdc9bffff14090000768bffff8d0500007e740000b676ffffe255000024930000ff28ffff552200002b57000023bcffff2d67ffffe125ffffc77dffffbd11ffff08fcffff28a5fffffd63ffff7f48ffff42b10000eff7ffff7421ffff7621ffff151000008a07000025ee0000504fffff78b10000a34dffff93e5ffffa2fe00000f93000051460000585c00001d16ffffb71d00003a4b000009e8ffff94670000fe8affffa93400001fedffffb472ffff71b8000060af0000fd6900001fc80000109effffb8e9ffffb72a0000004d00005e1c0000e901ffff13a8ffff8fbbffffb6fb0000a4baffffef90fffffca0ffff0a1e0000be8800007a700000003affff8a760000618cffff6dee0000aa700000fc170000c4450000611c00005fc50000aaedffff34a8000019720000a7c60000bca2ffff23810000470b0000e59f0000107b00002f150000b188ffffcfb3ffff7108ffff5c9a0000be4dffffac06fffff368ffff72750000c72cffffe57b0000bccb00002117000086cd0000db7e0000720400003db90000d66d00007f30ffff17f300006541000025c500002df2ffff57040000fd62fffffdb0fffff44effff1d21ffffb29effffbc7200003642000057b50000373bffff383d000050a500008ab0ffff23730000501500008207ffffcc84ffff183dffff3a040000631500006cba0000d64000003a3a00006efaffff088c00001f37ffff16faffffc5dcffff12e2ffff39baffff91c40000f06affff5af40000c7c50000215d000039b3ffff63e8ffff5e46ffff7465ffffc6640000c634ffff969affffe8900000bea5ffff4226ffffbfecffff460200004034ffff90fcffff01ddffff3b750000dcb1fffffc37ffff27c0ffff91ca0000b39900008126000014abffffd3480000bb47000001cbffff332f000051e3000060a4ffff726e0000ab190000565c00006218ffff46540000f4210000b9acffff030700009faf0000ee24ffff28f10000f8a20000aaab000006bb0000024dffffba8c0000ff390000a636000028120000bd60ffff521b000044270000dc460000db3d00007f2cffff3ca90000532d0000727d00007601ffff8fa4000019e80000e8acffff70d4000068cfffff9242ffff68bfffff1851ffff69d2ffff0abbffff9bc7ffff8376ffffa78500001b68ffff23ad00004b310000da4effff8d9affff775effffd3e800001ac7ffff9dc20000763cffffb9bd0000da89ffff7abf000099af000076cd00008f78ffff47ed00002965ffffe0480000bfa6ffffd4c900009e5d00002ed3ffffe0edffff67dbffff6ae600003e02000063dcffffc34c00007710ffff1989ffffe0b3ffffb7420000752effff1e2200005ed1ffff8d52ffffcae4fffff5eb0000c3aa0000faafffff20ebffff23560000f9fd00008a1d0000e2a00000388effffb3b8ffff6f340000b85c0000706200001cdcfffff8210000e4a2000047f0000029330000e0e300006abcffffab7e000057c7ffffb844ffff7474ffff86bd0000fdae00004d620000312700003b770000b999ffff53abffffadb5000060c50000e93bffff8660ffffd0c5ffffe512ffff4a650000548cffffd77a0000283b00001c3f0000e365ffffde72ffff4d0cffff6ae100003c5800006ef4ffffd3acffff146e0000a3d80000249d00003d06ffff8cbcffff75f8ffff5fb20000a062000029ae000064e2ffff6a0b000046e40000990bffffbb630000c21a00004542ffffe5a2ffffda480000ee340000aaedffff8deb0000b4fbffffa22a000035d80000d5ee000033b20000384f0000bba6ffffab71ffff5538ffffec89ffff5af6ffffe842ffff334bffffefd1ffff71ca0000725dffff2a030000dab4ffff35d7000042210000bc7c0000aa74ffff95cd00002bfb0000b591ffffd7ae00002f17ffff67660000d91a00001551ffff43b9ffff0be4ffff6171c4ee68b49649b8fd34ea17920d78d42a12fe284cfddf7205d37e2377b356664b0e4881a9131e38e9b060cef625f21571f94960da709971d971fce21a08bf7559a3dc97ec30b6c9128afb1ce02200b2d04d868fba52256d4a0749b2978f55cd68ec5eedf5ee80d9101778b818f354839265f535023c10b2a979afb42c0cb4b62f7cd672a717569358b333ae6f9e185d6af1d5213e2a22a63c3cff0549ceca284180de94fdc42a0f0e612f6cd697aba2b6a4fec5da8477ab837a26cc18066d100c544dedc682ededd3131098153faf394300771271dc543a7e80b9ddb7fb1b4d5cadcc40597e05e430070e24792c60cf743c48e6085ee46e3ff884414a2a873bc879225f484059b587cdaed46fefb5411d818b1a7ddd346c54bd34a2ff44a17e01d374682d0d9f587caac81451ea346638487d5f845e3f51b1ebd7b4657fad566052024be1534ee16c27c0be52f13e74bb6e34174a900d4167c02870a8c4d1feb0c7262f7130eee727399031179e0f3f72302c9b73c9eadef75aa17677d5ed2e0b7690a3afe0a11a3ff2e6f6794ea207175eeab1f8dd4616a02410c9738cea73c07d368f4a36c636999e8272e1883f32d3a812e7460fe26e8edeed86113688f5f99f16573159fd1dddc6f043ccb3c8c8170f713d99206deef91d68fecfcfec0ca0fe027b7d633f533004557736b00799663c09aec5e5b478f70d47de30c76ed8c8b537968b90731eeaba5ef2ee44ca4012bcd1e436ff32ba8dcf6bfd2cebeb826ce3a862cc1c7af4b643599515b591d407e99151decd60de36f4ae75d00f8ae56326e640de0a487160384b205a2eb6f8511a20e1dbae5dd522530063bbcee6be312a23da34476c858dcabd63bf09f1fbecfe35c9a6244302837fcb3ee270d1d2a85a5e4c7122c60995684ddae420fc3d863ff2f96d80f8598e9ca0ff23eda4abc91ae499295d7a5708a590776a97b228b6e0d6627ff984d18272427fb44dc4f70023ced7511df39aff9e4623e726cee0195a3b01b94a5d98f2a46cd435aab4c93c93653ec4e30fbcd3d0e2ed960be5b4a7da25543272ba078e0e752b3710c8dba3984b6b03f78f73e1eeb0e0362ee30b3b1d429e7f13067f46387f5a7e1c905e79856f99b5c71ecab0d79a2462aa3d72e5bbff29095daf8b526acf424447f067e12b7062dfe669e21dc68a6145c79fcbcd87c2425abac0259b4ed74a8f65bfc36c9eb9b6cfdb9561e983dfbff56114a21bfbcf00b117692745ddc2a1d85508d2e47e22f954b30ead1b50880c84c7533f307701ae2a037a69bb633ed97e240f15410e77da3bb9218977ec3a0bcade95c87cca4f16b97b2aee2de4b99433c5e13fe8eac779477f59b1065a2d25237eaae57c94c41c795a803319bcf96bbe8b82b5a8f4ee616543ecf46e6d8927bc01303d0dc3db335be260e406e44e37878d6204ff181c34d018342d0c1b04fd4c93077c17932293737843af2eb0bbb337c498eb3d69ba496614959c1aaf9fc66924900125546d816ba34bdc086b3faa3c48301fa4b35153ac23ed63fffeb53679376780907b36dd99f9c55386164637f254aea824e430b0c640093725826651c6340691b227e037d75e0b38cf363153368fdf046d54319e4d97d21d718c0fd06c15b90d13462ff925ac7a548ac09668c7a8f1c017aa67fc3e03afb4ed4721a49c5669b6b41a4af0e76e934f99a751d5372126640686286618e308b91dd9d229da1df5d6c1e3be1b038d706f38a6eff309ce6a5c7d04e59d9b7cad0a305e3d27ffef15a35e02dc7d7ca3337b41ec6fd24c7ca4bd2130b968151db998e9729272cbd0b1170c35b29051dd7dd417b130b341d0d112458419230202b702faf3a7ce9a7e176d3ca6d4217a12c529ce2741596bce364607500be8d55eb18eb109993acf17e334291fae0740a9f91294ac0d8344c82ca761f5909b26369283b86cf299ee3e7aa680564ea40b898e8a84a1af3339278e41847dc9e96714930d8ea0231823a5b38169ad5e242e6459995493fa68c05574cc78bc1f2fae7f79d0b04e7b5d9638f0496fcb22ac5d4cd25034232c3d807ce08dc0952bf1eb45735778d205141e8f5fca84027c287793e6567001e90bfd554abfa63f5777bd8a13137b590d7e463d698ca8c70455f10a2f0aed36bbccbe16be0bf7d12f56595083fec783208eaa1517274fa8ecf77f7f9dce60d3e270285960a57897b10eaf6d7781842cf38fc36abb0b3c879d053b7cc9eaf8c389fcafae20daa2fa1b3f73d38d257a9dc1b614f3b5a6a611c2e7572e949016afb16ce33b65e6160c7286125c45d4aabea2ab9c9f24c864382ecac24469bb120e601540e5adf440eb806f53282de3253d1dc20a6fe042edbe3a30ba2e8a043706b9e0c41cb4401d7fc03e40681583f465ba4e61687b83db593e1c6eefa0576ff1302ae3cd8b74c0d175e1be1d8e37e5bb3de50e7becd29e5035fe8e2e9b63959fd58c0f07beed11731281bc192535c568c912cc4750dc64fa20c679fd43e2f9b21add5072c9e3c0944220bfd53f2323d1182ac665d83558a4f800a0130da33ceee6c4c587efd7875f53e96cfc4c40b6e2ff66dcb8e3475010eb0cfcad3bc8ee2da1d26f5eb2d32dcc35b7143e0f577d039741747e81d0ff66daf3e60d4553ab961ad79a4efc6ed8f52621bb8b4cbce0ef9754dcc1b657fac83400b733a929551f5e57afbe14b2c0adc3b383bf8032bc2473dd4ad44ef760e20f73fe4b7d727db9f54fc95fb84904b94201a8d2dd1f3a79a47308ee6ea62ac5b54a6bc25da99dbbe70c9c8799a69c03250377da106b51f111f3590a4899c45223c28cec4432622551d7bd86449be21592707ecee44c3bdedd4cf62f4c57de0f95d7d6c8de08d20115376802c1d791af308f31c322d1993b6e7db670d9059e5d822e8924c71b00c3b7940541a5a8ad845d11e681e449b5bd29eab7cd21e92cab322d6743d59d3778deadc6c18a7e23ac9e23ae08cccd6ed12bfe2384a171c23dea4663135ccdb358506b8bbbfa4eb60b5f9a1b7b69991e5ba8fabc32e19677b4827332f2826b6d7676cb11d79695c3ae55135e2e96f1cfbcfb0b272d5986d9fe73e366877e062b0ea4b466199ba60edadd9c36bb52718b38f41f6f9efb6eaac9c210095c6a15e732aff6203be30d515428a79931227a629f48a66460581e1ca80de21ec1e81f0ac13fc1e0736d51933470557bd3bbee60950b9bb4e5781b12ce7b286ed20701fd689fa81c1658acb316a57e8c5a559fa3152c7791d579d8f4d2ab6f91bba07873b28c56259b7caba977821feb0c32b8f57f57b2e52aa3482d3bd4e29f70bad824b21d7e566a0509219e3c47a5af8bb9aa4298fffe4ab3572f3e9393b12a3e1edcbb04df3589802e0154f1b507ff61d990340e1393e6fee6b9a35e653780efe9847cc72119a2163d6112d20187780824dca8de0025004a75c7e27bd6b9f0929ec1ea4925aff7f58e8bd99d7c652fb700c450bccede85cd8d0a1570794ef126b97a5117bce6f44847c8869da39620c64c444cbe6ca95272049d8a8ee2a665b36051bc7afd0c276f536a1dd1289ea2ef4eba1a26acdc6cd8a904a8f0fb7b56d667c2f7a342bc61285a5149199ee48a4f04f52ef0aee9dbe5e48afad9b0f6cb60e529754d4ef43203a284e60ed30eb6009fbf4625c9ff16d9d3b51200bbd4647c240714c0cfb5eb6d249cd133d31de91437f7608e869725d9a794c09f5343c197d5e651487b044c30e6c6e34b4b920658bad8809041738f99602d311caa6c960eb69190d0156c71b12d1ca571dce6f7f1b24c2eaad8948be7c80a44bc47c60f2de5609406151f1d483f25823bb84c59cb0808e18e59d621f0bb757fdee75b2de23be7b55568bd3b9b28356e1f12b6caa577a8d8fb9da6d7564b873927ea3cf13c951b00ac70ee5fa193eb53be6d9b3df2092263ef3d71d9ebb11abdd63fc38c2a46000dca90090324ce4d6bbc2d51022ff78fd47b9c5f4851fc2be4ce46140f781438435424262346b036ad2e749cf7a707dc103a11870f4e19c625e60b2f733c3e83b206a742080211d2daff82978533481d2221f537653fc7bda88bc260fd48611fe0e2cf884c255c18c39d9492b750322da4daa8943efae79b7de950e013582c20962f9635f87f6cf81a3798904e7d6b3d5737627f13e010af78bf84ab43b9001fa04dadca568ce9ad916d0c9d954f3c27988b59796bdbe6b9fb398d7e753620fb224d381e77b811a55989670bbae20886462a645afa4d13b6725330985c29596b7c2bed62cd229701be9c9876c3635605b9ffdd08d21f27b4eb65cbe6b9519258c7397c4542fb89a68c8024f3c4d6223dc8843fd3f359bde5e5f38ce0cc0d062c0fe24c2703c6e9370b6f60ad75d76d6bf041edf019e21ae5109282f067e664f1f4a1edd573b07fc9b8d577ba961f7b9aa9f68800688cfd41efc8342667a4f713df7e63d04e5e07f59f99b8678b703dbfeb9b2ab3ce5685b45552629b816a9ce8c933b85b2d5f18fac612d2830f38b5cd6cf1b7647e7777780f6512e4ef884b121487b9de90ae9ce527811d39e1ff8b73e32a2156cfc77cec3d530ff0da33b362e8a0f4e9aba05d48adfb468385607e947e7fa54ded4ea04bfeaa5d75077955b65186ddb883d1242469027b3beae1cf055d0b20d6722e220a0cbff012a60be0ac7f6f1869c0f5ffabe5199b3d0c9a54d29d25cdf41bd9592b9d86ffe67d9a96007efd42e8acb5072023853b8cedf38150b9a41fa5a6811473d7429842e8f95ec22f4da6d412938539cb40e20acf361ef29beb2bd9d2c8ef9182468fe745a43df5338280ff2087b326ba6f21111bb06a99288f2b3b3a99e47790b54fa3425d8da72cae67c814f84cb7951f23f7e0bfe41c9924af07d24245aac4c863a3e5aed0a89984c1ea0251d3c8440cb7f472eec6f18cd9d730e1063839733a70fa2156adef1f794252472ce52ea5577066426f13c2ab71e017f8bc7c6eed7c671cb222d3310952d816cadf6c7560a9613ac621f98542bd2f078d60945a71e9b9878075c1f4802d7b1a5f577bce25e6229aba84649004976ef1969a04b53c4946def0e13bf5e5742a12256bc30d1249a5b6240f030b346060d96e47f78dae757efc8bd1fac8a95eacd0c549a4f8bf1c8748222f100bdd958fad77e3458cd199b38e77e345cf7f29319459ef993fcdab59ebffc76b86ab3d966a4737fdac92eb92865bfa46b68cdcf17b19d2240572d0431ccfbf22e35f8b7152fd0948e19d6758159d5c595bd93b7875b3272bc61586300416669457f9b32112e566a07d7781436c44d81ebb48dc1bbc8693d7c6dec8b545e87482b96276c8b7991ee9729c8e6e26446d8517243b85f0706299b2b1230733ae5a7a6354b86f79e769884736f688b23f7c06f72e1b8499f434f055a77a5b1eba6312a34983a1be484ac9012de88429f0a64372f41c6d31384026135b2882a104e399779a2d0bf19a757fec10cb917c29d92682df15cea6c667f8c43b3b096656aece59a051ccd23815a45a7f4e0599ee7e2f712176f4fb799cc15fd94d971b4c7803df09e9f5228b613ce5442159db363a266c0480e919ff1c2f34c01194ed0a6781f5b085fe10fb68cac810fa65f1ee44cda760e70c2ed5153cda0a355cfb862852ccdcb2dd0adf4cc1ca7c26ee193eb526ca30e461291f3f2e34fef08d7baa560dd86b21bca309d303f73253d4aa6f2ffdd210e917a6a8725d19934f5906cc31cb6fdb5efad7177a721e47d230401cda36c1806709e6d93c5d5262d370dfbc2fac9ef46524608a34bd66d57842764270e6b8ea0a917c483472c85c044e6cbe1cf5b2642f708e713a47b809fd2789782ad4f61b82b18720578529691cd3ed9353a8471211a214a269757bcb9ab12842639235ce06e8c0235be9f4e588274a5cbe79122b6b99659836ae6587adfc60444250ebe6ceaf4d21d4f958ad82f4b82a6e6952345873c7a880e06eb6a56600feb825472e8378e1c84cc53bfb112ed3920d95ec3c53e31c73398d64158c330b2b4b249c5809f4ffafbbc0bfc4000d4b1e3b1f363336d491ce56723994a3571322d2682b64411acf4178e79a0a9cbc24b9c0ed22f76a4215bef9fc79c46fed05aca9bfd866f7573d2787504370ad159c1ca7d94b844a110b53d73e9c8cdc4f5aaaab67e7301e96bddebd95833d7f6f92303388ecb9fdcc53dd0dd1ea65a074a660ea020dfa0cbd0751e856b858272ac370da0346e5f475888ca326cab9015c21918522ab115e53fcd6014b8bb543794ba329b97f40e0595e8cb66f509ab4b5faba9ec4dd3a486e6906763c070378a3d60705e736ffabf05f2e410913b082816d7d5cf21e7844d9287a9da333ed1893c5d6bdf33f6764ebdd5ead0c949c4bcfeffc1a3700887091518ec44b4bf3e62c0e7c836cec1b46643d4c3126ac67ea6a497bfbdb73b0aac261b30cd39da2bbc54d3ee60c5cef144958f61997e202d0af46e75b0a40d310c88926334dfa11f90516c65267bae303581515ed14588de3c39f142766bc998d3f32dc0a9431b1c1615d0e4d4721c5d4761a705be4f62d60c2c7d341080f32879d58931e099cee527f249c76a6becd519b6063ef7a830d720bd28dba9590a00bd35af88c8fdc652278db41cac6821859c0222ea52e3c9741f6f09f63bd96e842750c5de2d9be90612bec27028b96f6a2af16f71d8bbeabf50d4f478241b6991363b4188e475c740d97f98342bfb9947f4153d45640821fb43873caa89371d85dc59053fc15d2f5d9be472f9cb50553c24ff675bacb58d1a5f13acf1000adeae516117da22462a85ee78dc6e7fa54e6062700703b0338689c46732606d2472c48a91609cdcce3c0d86fcf5cc84f938deac564d40109bcb38dca4b9d597a000edd569954ff094817d5ce912db21ff5ee799cc23a64ba0ca0e69aba78572be40918f5566f2def7cccf220390bd844d8fe0b6a0543a2cc964f43c70f4c0d3f4797e27fc35df891dca352914f33bc9fd526a160968db7cdbef777d1b4e8db05104d6c8213bae52d2fe5169fb5b21aa429c3c6bc2170a56060b25c7a519a6589cde83d939a522f74f1ce557a0a41f1f56c619fb22cbe5769b12e826ca895868868b3c8c2bf5b0ecb752f6e93d2278578a2eaa3df2ca72daa120e1332fe63b016b2a1850fa00a85043183cbd6d3df3f70214eaecdbb288991cfde6bbdc9409aefe89fe056757d7cd2edd5d86ceecca21166acd3f4fa11f4ef64c04e322d6047f75145cdffbb2e9bba8f0bf66c94c300c7e2454f0ecefe9efeccf9123d2b19fe10c5491f633059344191dc516025887a9256bd037bb63123b19cd98d28994d9db1af7a7943183d60bae724fbf53a2d8c4f855344beb45fd2bb814cd3b846880d1ac8910e9e3569c0e5d1c479d23e99abddad3d5b53edde0fb72f205390886835082d58487551c7d58a69b2b3f8c2cd268ba321173dc7b3042ac3a7d4f3ebfdee96f371fae2839124609cb804fc0a145272a4e1e256b94b66b0930ac2242af5b432f69d24013bc855ccc05b2c81ade46935ca99eb42488fd1c3ed07583f9f78c5faf8f0ec8f1efcc5cb4525893002a7d89d24f4751345275e13eb5138d1eb3e3dab8fb7b07f4e5340af8bd51fee8caa39f47c695e955e91ce07af96c43ff2d2554bba9d847eea43bbc6283339f04a96be57ea0e5276d5b7289ea5202038a426b53d3249d905c8d4516e52f23542e2c302960a4bc483122778f1671dca2524740de0e345c0fee02e774ec5f85ca2105353ced567a4979c2168d7da743cad7f5c0cb1f97d2842a0d8420f59435c2d76b11d42d3187ece5d8de6c533d38007feb916ea3e5f6a81e01453969370493631c6c9ac55c1539794e4422bc2fbfbb8769644cd53e4512de0f9e3be14d5c59b377dbb9a04f822ed82ca3cb31d94e97cfc2f2f15e3998e894218d6367c8b70b0549d4262fbd279aa9ef1063fe1f6dbce3cd0e0b01cf51461fc677773a664d2f58ff5d930043759b288646a0fef1ded6fd39ad71dcd74b8896bfc49ed0f64be49466783ef3018324a683ff95f696328d295a4fbab0edd4323b60572206649a797e545d799bea4c499e66c06561b6a47ec9fb302bc0bd3413883d6d2ce7cf1d27a9359a6d695f22ac2930ac84f90fbf888304abdf6a45f849d4b7c94ee26afc8b9fa483b020b8f3bacd727a5660fccd2aab8084a7e63d64b8d62480dcaa92f324e8df668a721925da399b64d4e49f7004de01a91dee325c87eabd7e2c509649be71e41857a1206b5154b2efcf9a77ff383014f887861aeab94ede274473fb5929ae3f6a23fabb2b1d932c19be451cc53191b442bf8285d9589493c7d3f4623fdd6850ecc1fa139e0503915240aeb26e895b414a69ac9b7f70078f13470c3cb16181913435a5c1332890778644033a809597b4cacb0cfaaf8496111653ae2d07fb9df555d57cb845dd057b5c81af2b9d132e6432770f32b824b5ffa569c19205e74dfbd8ea812c39d8691d32f584c5ccc43d9b5d7ad1a75bef95d471db9f7ab9d1ae7b4e7ba9c5b74f0b6921a0bc8d755d9c57b36ec2c10fedd84e12d5bb261a3103f8e39455b1c4c44dd0972380c61daa3b998a0dc4e9be80f5c4b11d529b0e8163898e4ad367a210e63172aa0dfd455253894b60f6cb22a883ec711573d0cd60dcf65397d086c516c6d1f6350448340f9cfd888750dcb540c11910b8a969c5edebc864c25fb4b49a731257799b6d331a4f720ab3c876c13aebe984aca30266f9b497109bc619f1904b7e374a9ccb1ae10b1c47657104f7bef679807e38be9ac86269f0defb26ef5b3c1f07f5a68ab3fa4396a9f79029119e1d08e385218b9273488ecfe457a8cb631aea19521ede619372b47944b2ba5814ecfd1379f6fa41419a2fea8e24ab627266791aec60a9547a5a8d3993cde0ad77b28b6db07ded8fc6f55a0215b4b8d1663f6e0298962606a2d18501ae3d24abeb05e294dcad959550d2e8361a50466ded44b016afd5a50a6c4cf103afb9b3670c45de82a8898766a7b7b2c316cd695ac827909e3006dc8ef4e3b55065e9506a0e390bd19d043630f44eac9084cdd0a8c912bd6f78cb791325572bdd576c70b2d617b24ea110a63bd56d635c220e7c12c00bb441c17bddfaeb6dd27eaeda15b435baed8550dcb5129610b93da622674319ed7ef77a3c76b457a53a8d65db3dd49c0cc1c27c3c41159c69c9ceefa5a3a9996645ce9024858ae8357813aad0b1155386abe4084a03ab57b06a83d325564d406234c7168947d4a61a0b3b8fdbc1b6b06ed08e1651a7c310737053c00bdd9b97a86206c83fd63b7f15a8f3d1f83f6511b35b4daaa370b7aaa89e6bd89ae2ddc725ffd74aa19e1e54571517c43812677a166ba3cff7320bc0af9b459b292bb23534746dee0a24721e8575724bea0fd39213a9effe6da47bbc9c60a16b251af9f2743e32cf87f2a8caa2f88d860eaf24eeae890523fa6805650858f3bd001252fdc6ddff18408609406430c25be365955c4cac2c88bfdcc15b0e42754f81fe2e0d3e2b417ea8ab044519dfe00a4df82b0518dc7b92e4bf9b7bdb570668a376f64e732628c1abeefaebf2a173312effc438f41f23601bf85b846a5bca6954647bacc9765bd0ce6bcdfe81338743cbdcb5ee6171ffa3e00dd95659307507002881622863583ec3e41adaea60d070f5e410abea6d9b78fd8d55c30a5ed9946161d6a1d9350e1ea26d156c3c7dc7a7edf77d5bbf945911866ada81485da6b2411dbbcb9d5a54e0826869aa5f66b39424da99a37435a790ce99d0ddc185ac7fe63317c2b272350c50d33ed447496bbc2274087a8c03edf1bc484cb869fb8237e7ccfec1438b998090f69f56384aab17211641caf84aa4ff4dc0153115b33fda6d1f3c7d2d50ddf79f64249c0ad9535be060a4ccc2cf9fa345d120b9a1069d4684fc11e690fae65c9481b47159fd09ec7487d9530fda62f5d926f9d0495e7433536e6fc0ffc248a6edc8e8e4f2b624bfe140d04cf8050c297494ea85bfac03dc5ce1172d74c9c89c47b4342d63d72ce00295d9c64b5e75bc4aa4dfe5c8b442528939ec8fe0833956e956ceb30d3bd0492924fa82dee1ec1442aa43ad8c9875b478ca1e9b19eb0e5989784aa987dbe4fb45349d270cd958d6b547b501ccd1b06f5f8b5097243b3a7f332773e975135cb15258e4697279cb0e24fce2b2c226e995a6766d2a008e5f1302b6aa828b596f2c664db1c7a8f1f7c1c8d27a942e006116ed11e34c45a32f996ec7b3a8a8eae7d434a78134c0ac6b5c399125cf2079d5ce43c1ec9f68ab96c21a3e11da4001ac88f2dbfe3168a1ad7917c48146cd97b6f1d5dbdcc139f13e49699f336accd9bea0bc07895cdbceefa0683b1a72ce2d3cebb1a052fb9a818eb7244cceac37174e27d4bbda299deca6eed517f83b27b65e402acc47c1f511c8e60933622cad1e3ea96f91ab2b6927590bd989f4178cabc9a36985650638c9c3987f415edfcffab60471a5f7621d2efe046a246af1d6ce8a925080fcf73344599963852a52b93e424917f0db675c5baa8e38b5b2acda882e082c170bb85926cbef44e9ac4ff84e75b2bfc7154d1835be9c3173dc77aa4ad8cdce8ccff7071fa7962068b60788bdab073c24a687b35b052f3e52e7a9d65abc5d489ba8c26f6cbb53f0f3fcd34d9ee0f60a3cb8794586490e3ce185695efc01efa29a1b6a358d1f4bd2d623d8260bfdd79c3e3327fbf43e4bfdfc9eb9f862b5dee327fdae1f0cb6ee4ac9bd7d0233f39ba22b6f69efa3634d68ed406bd633d0514175990d02b6bad1b616a5214f9d79eb809e4a26ac735ed5c80baf5588492d825f4547b1d77585e11d18bc0efd91ddf7b0357e5089d21812b8b105ba8e6f614c576e0d8e2a83b5d578af361bfb6177b7ffdc6cd79ffe8b22db33cc1417e568e2e24c6f9179af7634da6c99c80e80ffbc07a6bad3b731ffae483d4dc4256fa9ca9e0127163abe175479067655468bc676b97e1e80a5613922abd6a1e9ff4326fad8ab326b876547f9ff83ead23e8a6b2a666a6f74af201a6fd27c06f46e72ae35d3469b761b0b5b7fc9d567c7dcb6cdb791a6a6a1c336d1f2e152e2652c68e729b2b6ce7c2358457a9b7ac150920c9756f4d2c3e06af703ae6f5c6a5a32b2ae3c19e2a11331112b9e589a3fed5450ce9640db49765a69b687fdc486b006b6d7cc759dd40d9cf54c2c2b2079ff998c4d99f68463d8555a6fd0892c04fdcdaff15e624c456519385101653a3735079f9a59a41f8a6583bc59126d788523e122c4def91f1ab45213f425400f6e3238840c66ca55dc6825f0c37eb9bf92f1c085da0484e00dcb98e4711d481632e0738f15e057ef8fcc7837754050613fd8559e342f0a05f9b4acabcc210263e73838295aea8ca9120f8fbfa4de358f732f100d0cda06108b3ce8553332d7cf54e00feb3a163dacc7b1a37fe6d954b470826b9702fa5270e4f28b98f8186217ce323c7118be559302b7265dbe95407fbe1b741f3917bbb7354f3e27fcecac1fe8f3c7af2e4a7930cd0c6e8d0bd96111685d2a9bab948a1cdd591a9f42e9022aa7483145d8f5914020820639371c5466a5a435e93e975fc3caa890d204fd7c6e69efcbd525f6f5e30f22d13862a697a2a6875fdcf032acf8b3bc59db87bd7824645b141dca999054b93fb0ff5c7d730cb908192d0ec98257e678a8ed47e04f6b18bb784d4549d390645e49993e35110063db6b28d297ead99257eda185ff1d896f5107600b163700d18e432fc3744c7eac8abe8666484637eecb430ccb3f123bd03dbb82d2a141acf29316df08de26aaa7a1cf297e5d8309438ab1b94df3b29c4101e7e4bd598ee330b9eaaf28b50a1c68b8f64fdd02e537e00169943393fa5e286c74a6110c2ff2281a758b86ea277de2604c6b90ac54b08e0b9bbc02f7caa80486244d440cd4d86637cfa89dc82e449ca4cb5d3cb560e6f893473192398fc90cb0e9c96436c20a75a84bf4794323678e0b843cf0fc0f7f24e057af615aa7594a58fe069306caf7f34e8f5eaa2864d3838b708f7a9f85e285b234e1dee8579d8d5f2851d3fb8e85b52736ad542f6ca2f17b08d3e18b4f5dc7f83635549b9e2e7f55edb13699b6c6722f9c60c2b7d359ffa4479d7608f965ca109a540e84cb1ee005fad971c209b55175f5b75a32b98b8d0e4c5b935c292d138413dc6163afbbec734edef4c0b28fa49a9118f26a18ee8a5d490513a56365b9220e331254c62818de8438fc4775a1b4f7668a992f3364780af17142f075e58e38d437c6bc3bcad741c9cccd95d03e8ed3c5f666b54d5022e1ef91ad6925927bbba579760abf01ad1c0a18ba03b3cd798002390d50d633ea9f9509fb266a5e28e125f4d35795e69dcae75856c0d3e3969243a03aa18073bb307d5a6136df6e6e87441193963390e7a767bb14088d359b203c395a5d3490145491ad43046d4a6b400f3e6ad6cabc3186fd13b2fb519f5c7e3c37886c7bae557af0d75bf48d444ffa15ebdaf572f73c8cc8eec610371baa5ccaf396e2f1fcdc85886f4d29247b7ef55b8e715de5f76d96467441dae3104c66e180d3776d1e8971b75668c64644b99fdca40558404cd7a0cf7047c5c9b6d987b9814a9576d05e86064601dc489f97093b10ba66eb7a21dd583a07c7677cfe8806350f88ed6b3b79e705fa477029f6484ac1491eaf4b375e6587ecaa9f577cb2b261df736bb73e7fd3cf0fb3d18f36b8f15ed9c255174f146f82dad6001aeec22e875cfb4262762c24a6700dd38f7996930de3a1064f9082213b31cc40ea93155ebd3d29b78e1a18a325301c5b0403cf389e737693e8c8a62f1bc2b4e9f922dd4010af988f0623ce18058d36dfd2b993457d4ac8fded563f6c169910148d6e847510ae1c954318321031ba2dabc1c2b0985bb2225ab293fa38b777b2470bfeeb12e55eee6d975f539c0f3ce4eac911b50bcf598dc3a155d2bd8de25e341070145aac1af36ed31ec03a3942f44098fc457401f49fad62abebc286d6f6910213aa75bb54a3fb00bee543c75dbb0f004314d5e27cc3adb8e839407c0b237178b7b5b10419cd7a5e095c42e85cc592e71ac5a857b2f3fc470a69686028bc8b64a3163c42ee97a4bc7506d9996c86b79041d8b7492696feca2f7fd4b3e6d21738b4def3d925e811d43e36974328e434c9a98f6203f8e117112deacda6ad05b3e20f160a8dc57a0bf2601cc5cee224052f592b0723aca72aa72f518f45db1f5ff93b9857e68b5289a31807dff4118d1adb1e6bfb94b862c074853410c534a7fc22d53b9f0ba44f0d0530aaaba2bfafc4cc4b8014e8ec7e384fd88ba4270321e5887f0a6d24ad03df47ae4b23a8514440cd6263b352d4f6eb477a4a8c4b8e7202f2c6a767e7dc36110d3500127bb5f9a410a81bffc3a22f233bdd95f814442c1341f607bdb7c940c34c5b83542fb5f41d7dea165c121840bf97c277ed43e90bbe5e4a836e74526fbe69d4ec1f50f28f1ad2963c613c4f12943b9302f33ef89cd0cc1c8e0df9fa6488bd4ff3988e9a28c873884a1662057cd5b9834cbe5191bde3a8e91239bef4abd4204c2d76e0715dd00a2f5644305b7a8a493bd30fd98cf987759116a4474560a161267e6efb187dccbe8cc39cb0a052cae94ff0dc2ea9bbf022868a2536340edeaf216a051b17a268a04d627cf5217a286cbb64d18ce00621af1a0fa3c774d1868f70a3601ad3ae75cf105917760c1bb828f57b674287ab0033dc95ca3e9fd38afc1ec2aaa45eb4e5074451e253d07ae0389e702064cef25cb82c05de99bb583849f5ad8802a3cd5a966811167798b7d08f236bbf75a1cf6d16c5bab727b20467bcb4b7243f38aea4f6a130f0e528195706cc8544a07029e1b5b16ffc22b6d1173a28b12e78bfd3987414bef20eb8f3a62ffaee100101e6c4978e259dd74c685d2adecbeea3f7c7960112287359ee7387d8dd2ffbd4b11ce579150493e5ad078892c0f4e4d4226733b5adc719e854e70592125970d5c4af3a7e92a22bdea9b11c47ef7c0d322f21e5a261b879ad7e1450028eb69719e0732aaed9c0120532d42ef7895d62f301eaceaab9e2640804417e5e730cc6e7badb9e16c3e7b8f68001308bcdf63a46b6d0d31919e4ef656b5309ee25a1f2b5a133754d4e75ac12fd8b18e0745e4d3577d5b96b83d5a08af70497c8c30c67592723cb9b5def8594e6e46de75c9dd59695a509dc91bb01c52411bf73d27efc6c62006bf7feb55ac5c918edb63e740d912ef9b5de1daeb928d6d9728687921b971ec5ba8ecb039cf0dc0a03f91bed2d2c357ed5e9544323565aa742b98b675acea757177057d69d32fa3b4526d7b2cea8d267eacbb2fda3cad9260fd489afb1d718733b041882f4f9b09ea83124fb2b52bdf40ad3fa1380d8568c962c7ed0572e87c2da8fed1eb37252c82f42ea4d6e6ce5b2167830b49721ba7a8f10f1cd9cb494ef39d78cd39aff32ef10b85ddd7c7e2027aa93fd781498d2cc32924a5bbada810b015daae32007a08662cafaa6079bf382417a1ff2a767c3b08efe1fb8d6478896545d973f5b4bb41f87fabac854fd355c6561cf3c7092e5400c2af3c85b37049b3b36da5f2db90f52a768f75eb0d37fabe4d7d01f7aa8e0000df8dbc20a1c730b635a6dcf26655a19a83225f678a30c2c0f4e87f6a780a1b404882b00f120a0499b47bada800c37fef279bb3a76d55401cfc0e843210c4dbe5cb2ffc583bd884027e40b2a1c96b327fd919f99af4a0249079fdfea634ba8856de5d3f503233bc853a722826681268385fbdef36b4851f060f5daab886095d93b5f2f721edb53d2aa471350e110bbdf703e6d79dd6133bd52636fef13cbc4c2db56aa236e8f3734dd0b6b18744b67c136e29b17b49ce17e3d2a59ca2f16b12e0c3f93a3c2796f074d3537d798b180eb2f87c0da70ed0d0cadb4b1a7ab91bdfc2b3e2c87c891ee17306128f5207d6b9c7b197f551c0c396235f1d961cd87241524a49c47dfe869a14b04db77aad3c1bbf0a0a642c89edc568ca98f42ddc2f03d632240005f281a8c5df9d5ef625e4f799bf86b4a2449f15dd020a8850a1323ffed4bb126edc364c1ffa8ffeed464e4599a3562e4252b412115e4bde72979dcf2c5037ebb418fce084adc2fb3c45741c55a7b23311a1c3ae1295da0df9bbf1dab305c97aad568a4230308780a77bc91726ee98b736d67a5d6ebebb3d3fb94375fe1ade18b5a199080bdf02a67007c2c45401b3046d2b95c63ac411deace0957c335fe5a7ae70bacfe92bbcebd6a47d356876cf4c1105609d6db6c3c1e3e220829d3b0fc85684de8caddc351ef043df05b7111376626cf06737b721715fca517effa931532cb3fc274593db3e49b7a810d2b714a6db242e8c4fee6fa6039581149c99ce07eba369cfc889c289110cf99f15af2be7f13a96717bafb724d3911c534560b18be600cc455eef25d87807a48d57f579bb34f83a6364e5b481ac4119879d7b13981145e5523525962075f426781e71d4bd144b167de9becb4783510eb0ceace39f1aed981cf67ed405dfe7a75e169ca348590de17d40cfb76e1e801b10f3d926ee82658eba6a8e562ed696470390581e55219e583274901e523de172594188d716b1e769ef80a9caac8e035823d6af58f891a5968ee4ae8b251019583579a6c000085d13f91c8ebccb7fc02a816941e1631e30495d969b0638753b7f4426788b9eddb4d1e1bf1a59962e78d5416f6a89ce35d557d7083e9d695bb7dd2a321647b69a2b5ba0861ae8bd6659fc8bf1b570e063ece9eaced284ee5a22b1c92669bc161908f3be9c70e82698bf50056f29642b67f689c553039befad381f3968945cf7a3c91698fb349fb28ea211395cd7c8ffbde75bb8e12fb1428cc2e7cff87cfdd6474fd4f587db0461c95333e78ba6d05d6812a98711e763933645a363d31af903b86703816df6e9dca20f0e9d8f57a78330c16ca35b03d254a0fa4f8882ad36e199205415a14cad792f3f4aebaabcb3fc099b538f8c63a696c9edb1f274cc18769a1812d8b2e41d5b490e18d432d85a46c431ca49b0f0e712efb5e27d6c98a27821adf3fc31a57cddd87724128190cf1c635ef025bc0f8700836ab76ab0324d83cd2a649534d5b3a1336e2111b91362e512fa8f5fde0fedc556ec75febb3c95341fc0b7e83bbe4a15c5c31993c20076c69062b0147317e14b1957c97fb2b8b9f33c2f926eddb316beae926a9c5dbab1ec5d8562d9ae82289fa88bdfc3305a06708ee97ca0d0eb9b645736fb4de97e909a9f1be5d01abc4722e489423732e8eafc9c7eb50cdac4a8ff4c7216116be67ed07b5229533a29749115cff8678d8a6341d4058df2da772ead9ba96d483641c1f15e058241cdd6d3d57b45e8ddacb5ea3964a3d1b368ec3c52a685d64e7148fdebf0e78a7dd0d5ce37986ce0cfc77f815be6806400f4900f8ec5a86f9231a0424a176d050ee130429c2c31711915f68f40b7535e9156faa77683418b0e6e7bc5bddb57b3e1e78320680dad35a2fd6db3f0f47b0b2f021192a34a171a56eda3d9147041a1526f1711960d6263455b34e4948ec52bde2c5af2fb8499b83736445ac9e26d198278ff28bc87556109d647b6dbcbcf1608a78968c44931e67a808e748a47bc6d573c93dacb5be1a590b72559f0f82fe6ee2008505cff8cb437134183246753098a3be43380028520874595294fbfe31a6869a12b877200c67c5b42e6e739e8e6e09aecb58a6ad85c6784e1873c00a40d8a098bdae1e1e541700a5d903d20896337a7ffbd5d2a1b40b645484eee3bd3c72c97bc120de90427e3925a098e6b4d94109c3ac5ef6e57adae257281662d46fb7e35758219b971c27f834dd74b913ac2326376f5df332be5e4ce5f12625c2d660ca6e8ae9cce54135c9da33c51c215e806343e3d8af15e6f403526532301a20b44fbfdebb375af15029190f9d9516cb2011749a629a7fde3f79135ee773ac3ef4fbc88aabf8f12fbf9fb86b386afe0ee299c2e65716436050f9d459ef93c85c7c1ec2c76742879f8faf8bfeeb711acc82ac260b19ac542bd3e7967ceac9650ccf84fff6286b63b13b0a8fb7b1ed640aa302dcb60c9e09b93f58f85f525248989fdf349e9e6a1027f2d214cf6ecf00403b1b4c4132b644a31674d89b8c5096ea55179449b90f1d7fb906f5cbd4c8467fa56415c259b03757540203646d0bd54ff02615f6472c0530dde009b19d268b78672412ee9a551d17df8c050ea08bf5cdb91f4c69d3a43e8d7979fbfe32ad6cb41d1947e624aaebf13fb67780f5a1ec3ad5a696f8a1d0dad3d5112b42634655b04fed4f1a476adfcf54cbb3a932dcacfcd05519d4e33358db779fc243003ed6fc0a4df7ce8ac0fb370b5d771da37e8960eadfa39b7ed574609923d043d7f03210b7526a82f7bac5f2d8e89cc2181138f2417c006237e1234d16e5bff59e678f997902419281838ad5418fba8357fc83c78f0ea9b33e8305202362275ae05014b42e178d5f0d71c9497b6ffe91c082de7e5f6a64a32522e8ab7e08927bcbd93fd116b61fc6c9370fd6f192ba82118641a4ab17a6b0e1027db8afbeef9ae5c081d128654e47afc46d76dc6ce372e5217097113864f7015852dc85c2b1bfb107aafaf0504caac0db2966cdc3c16254caf2b8daaf8c7dbaf98de9732626f4cfbc4f7a8c798ef7db255c79f78ab63c90a6ad06636d797f0f0c7c0e15c0670801548dfb8af09f21f1eebd1c8573b521428b9419712aa66bcd8c5d4a7c8577ef527883decb40308b0f9b2ac6f957f77b603177f068d30524a9e1c74778e40e11fe8025e61128fffbda1435eced3978efa0f124558f97721285b6619bf07fa16c80994739759e93c477102b78d9e70cc4821717b42bd3bd685c1c4f0ca8f4a3a3651cfaf5b990a96aae6e7c4de651c80749d8d15a3a2b9cd52cdb6b59d2344caa5d4e49654231c8d7a6c9971c25965f82aa23046e6f61b89c71c70db7c21eda67b26841d5cde47363094f8c8f166a3d48de1013c7ae3e6a3607c896b9fa33704e15fbfa47102b15c4ad38099714656b0614ab7cf79984d23fdb29425d10422e5876978156544840edff51f8c4b1e649f7617a946d76859e007e794c363cc44df9e17bc71e18dedd84e0518960c60345cb0d9f69bf13b368cbff5bcc736e727ca26a96a161b7fde75cec8178644a66d0992e989554387e205ee29d64d70565f762dae8d24b771f9438536242422628746ed20f1fce68206d8be94044ecf8bb1e06247c7e475a380daf1a068d27e3cfdd16a9bf3dd7c263fca980ea7cf4a8d2caae473ee374dc78d721041cb7e1709a60ea9be006d82ff2b56ad0b18cf6b26d66b65f265acc26811655ffb223f409119e9a18650a359f9d9d2866d65b56220f94fd94cf754ddda8caf1e355c916a3173631a71b5687d011db10f4d9cf2721e0274280594fb3d62f7eb012dd0f610d863ccc75c0dda75257737296a12933485957ff1f75c60cd92bc71a133802a8336b6409df19b84343cda428468b32875ba4ba6f1318c567568679cdcad6a6f603c20220914b1a4eef6d42294c33fdf5c77e9016517dd07d5b20fc1dc67840f64d7ecf704fa44c7729e0d35cd0d7682fbb01c6ea2460ae58685e22c68fa89180ac1fe285d0b9e61b4c24dc291d3b47b4e43328deec30e0ca7e7e3251223cafb7d43d6a038de73c3b36408634785db0969e656a1f3dd9e0c93ce238325f1ba6507c089e543a884ef2c8f05f9588340d6f6aa91fe29c59940298bf1274c2ee98dc3bf3ce33ff4f93d8909b4a77a1b5cebebf0ad7ba55203ade5aeba976a1c5804d3108ddd0a6e77355a52d086b1b7f605a582f44332ea1b1285d0151db6e0b9f9dcbe681c4c98bef16141bfd7d19abeae342090348509cc58bb6e7bf5df9cb4202d24b5ea1f1561553e1d3da241f286a9533da6e24f1e7f0f5eb47d849ed13f4bcd442f8578c417443b80104b35c25a2454080b421733972fa7e44152e9d2b8a74860c7dc41df55eada760b86dee3d4ee742b7f516120c7966f1447b2b45a63eac97120f24f3768145e32ad055534bf7274e4975a759a7127aebb5fc5e38c44d185cf99aa1bfaaf27c1b3686c0a789c357eb606099c4a81205004208c435436d20d99858915dbedd94de3ccc7277085951f2723ee56e80c7f6e5f430cf6ca591ebb4b32ce5009f4cefde574acb18b6c622ad080815d120b5a19b24bcefe99b87aadcee52b4f9abce804d2487dde4a34bf17f750343ccb2ae3a3ca3ab886589c6a6ee1bc8ef2ec15158d1a7b68014a0b6000024c0dbb7814ec8d2ecbdd595a26f7a3aa7853d2b6c6f6955592ab4f6e2cd6f8d7f24f05b8481bf2fe0c8f3b144aecce2b6a98c3bd2a313120e3738ee9938c8581f561c48c2b5c01c99b02b2312ce6b0e3db9257d0e7a8e5ee9721673845c919e52cd1c241017f5a1486e043e99e21bebd64b8091188b7e8708d686a726eb3ad31c9e620465622195870a5a2ccba6138f15171e31d12ec433ad86b18f13c87d5fd13dec209f690498526a08065a46b1121b6b680c9659dbc4f8b8b6775b7c171bcca4d9d29ddb04f6389161738f712f3eba0f491d1db8356e4e80874ba7f542ddecbd4d1dc44be7fcb7a9344e7a0595fb3990d331001d9ebff0820e3bb3ed7d6f7b71c5327aa8d59b05556fd5290c66e1d60cd3d39b9fafa9f661dd7e30e185da3a3b58e6dbce0929b6dac578c5a6e67ca04e3b5e75ff3e6fc7761a96b269de3b6bb92468b4aa6ce8c8819b837116d568d0a28b551e27fa6f6942869a93e78667f4264b98dd2eed1a0337535fe2093e7e08ca8ed9fb74234fa4e64be25bc76a558a250a507ff67e3d88e6e00df7affb698e043cad08e3b55cbe0aa233203060c296383cdccd8947c49a59b2af7e9ff13ae0982914f4b6286a76f02d9551c7ebd117350806a64ecca11b141e7e5f42e5d7acb7d1de518ebe0a7c7f712505ad994005d7c67545af36431ba33f06d125fd98db56d7cb62839342d0e5357bdfcdefa243f2a50eee5e2649e1e59512bed9fdfcef83ab5f06ac7da944413463ff0b618c95ce15de1461c4db59f0d1fd4a41380e8a6f1c7d5add9886ae3dbe1d431c8e8c8971806943ec4924448e16607f1b88014286c9f1929b5fa2f5da1b1e55d363a91c22d35066a527aca9fbb271e3b091d7e19f5c176e1bfdfd416ffec633605bf3cb92391959ee8ad3b84ef3b53b7be40c19a8c6ae81429cd0d819a0fa9de9ae90b82dba9b1ce5d10944bd89fd758dd0e1fefbbedf4263bc49cedbcecba44889926c841b390e9242ea0108e99996dd714446436d03522383682729624720429e6139e739557d5dd9cd5a09c0fabb1ca26bf40d0d778979e8e2ce4e5814101c29cad2ee1d58930e025389b0724d2bed0784de65b16c12367065767f8a6b43d2613070a8c46d1c82980a2ee7e85b9867eca3dd6f41f69e75b663f6b26fc412cfefdb82e7565b1c5f95ff4e9792d2b4576dc3b046b74cae41029dcc2a4cf581134d39ba7a0d82fec9d8846df1c933c0c5b2868be283c03afa269159b2302335995a705b24f94fa45c017569f0b438f224914ce39c558e1cd1d962cae0705e3d9578fe8e2c3ac220c34b0b08ea36ff94567d97ce7dd1eaed7f17c9f57b1f3178c527f451b5fdfa6d17fc957509b4e86ae7e00594af6fbf33c0164e8fafa6abb29238d733a71707aadb957a06cc0568cef962c0c8730286a0c30c175620f7af611c26d1cf84cb1465a8e66add93536700fea78335232d4aa524b5f8cd52373b8c29c3ed0e747277106847663b8f648ae7cf551551fbc779d3d059c2e13e352e5b472f44b4e8f3307915d48e9254d31e52edbe64ad442ca5a07ea3c6513fb1f476f80135c97b0650a80044c0c4439ffc0ad5081f471415af974dd02661b68b604a795d7412246eab918e978729e6d1b8f7eb11a81f6337d9dd59c120cf9c4e4237ad7297abc88c8fac42915541ac32643d613f88b9ee23c3ab95d6a50900b52fc43d545b228d1a4d3464d430de33fb564f2b31334f8fda1b5a35995413076b2ad4166b20149b8580159edbd2a833db4162953de6340c12c346c4db0b1fb6d00c04f59d64a7fa18e9fc49b79634d20081d694990e8e649a85a13090793a339bb9906f8519c5f53544e62a08b3b1e08fbead4248da98307fd8013d1e6f9a1bae1d85ee4821ad9fd0f2fa744294387f585b0151785095a6235b33d153b6fa14f8464d40f24902a503c2490b1e065ea39781a1196d5766bb4f4fb3d878f418555cee103dcd4dbb7f4f29dc7d25c4bb546e5253f48a1c5812490cefd5618d678beb37af0f377cbb7bc9d4df3a01d7b3c2e3be3bc9c14611c391a20cdeb2242c0151b3dfdda6822737a2c95bbcf7060bed9fd63a371dc476acf231bd0e0b3fd95ae1d4a8ca06f7407892576b81366ae0ac7fc44c125b6d5512a1fc7c1bc9ce7424b7797a50e8009706a84df6313abf1cd1a38814341a504d69bf266dbc1e26a6c5c24690c4181d7f7bf25f1ed2494fafe971a5a5d69c70ba9ac836b8b8fdc908ced29b3f183dbf6c43070940ced4c446f995b2cebfb7b8f1e9133131da89a33c53c2105d21b62284abe9e180ce4a8cac18d6cacfe7ce88d016bf2991a84b7704e80affb0a5962ca971c40a0bce9bcdf27b6ba7f43d29aec1111bdd9a18083cab9cd92e1bed9b7612588612825ad152faebfe0ba431195ada8d6206c5d40537bd58658212095fa8f34db5c2ff688a75ba857a2360e273eef8c95768797e8a5f7aef2c5c4bf2e111eb41f69874ee73a089ddcf58846b706fa4c89938f8333a0e448dca6d9b2989ea2b9cb866961734260b59b14967d70140168fd56d6558e91149c93bb9f4a977fa1e7bd0e5fecafabb61489e31efdcd336f590c9a3f6d364ea2979f6c8212f37f6d71f304384212603e7d7ea01dc335e83c8a2513ab79fb473dc022517e55067212bd559bc072b887bbfaa21baab074ecdf53b2a27a7975179d0d31c4de6efebdc9edd423dde25d81af5f4ad4a735b1bdaa3ca0b323650034fb8255963e45a331829ca0dc6f46c2b50208f9e9f467fd7d29f5f5968ed58bd521464ff26263f75b8d45bd4de980fac842f968003005deb2bedfa802550efc833d7e44eb4ae4c8e38d64e6b468ddb2b406e55658e883c54e5f304f5c7b81768d7210e34255e7e97d21c6ec7bf5d9ad4f589135dc777aeb2ee50f79e71e1b1320611333079eedd975861e7a7dc6be1c473517f9fc7b17bd87c429c459f4bef9f8254b83af39aa1cdc79bb1e69349f2ec03e359145f261297609fdf09398283a22e40d0e44a6d5e0b919369d1aa9773726ddd4c1922bf05329484f412f36bb93048004157fdfd34152ef9d614394a8e5e9b5d4bb1dbc973ed2227834618d397c3f5dae1946b50becb182cde2f3dd8f737a81275d3c472a09c70b8964775ddbe31c34229c3c91e10e5854e27074bf69587a18d90418d1ec06a9aca33f046aea71de5a648b63d1c4fd3d76abf02903b2cdd8149b9cae6d575bf38f735b8ad31f10d9901531daaa99fcbb8e6e6e7a4b45537a2cf2513c6340e8326fe64cfda1991a16926ed7ad69d62af2ae87e26d92fc39415d57a2939cdbab4361717753132a3f424a01d2405084e81c8bcbbbbbc69f0a8fb4986157350cfd1a2dcad3dba038ae167ee0616c447ea16ef67c294db152e7c843cc6355752df92f4bad704f7eb1606fa5e6b24ff8046d9592a908afe2731288fc4f36f341cfabf2625e1677fd60fc46d0725933d114e40b6b726773fee8dfc5ecdbe08bb3700fd4340bdaafba24af3b2281551f59ad21cfa490b82fece8b011e65411ee2e47f19df83c847bfe8cf8775a300473ccf8bfdd6bd2d6f5a5f196f6517c7e9d5757c0b67b8f5f6a761c84f21afb8f9fd6a7b3ad72817f9cbe423d522b74630060497db8df516baee2e98810992a62c9ed5d0bf9290d7ba63061876d51180649c8d2f9b906dfe0e7b7aebab8cc78e81af3ffd15134971c14d373758668241d52142ae5cf7fbe850ffe7e3a1a7f3321be04071c3811dcd4f1422cfa061f769739fee883ec401e4450c25494ba80e9866290ecc04b9710ddf8a3d3aa63cd0dc87f8f4768fe75d1bd70b750611630041691eadb0a44ebd5cedc352170daf2513f8df0bfc40b51d63f883699c45f431eff083e0c6e7abce3c872d3eed72d5226a0b0e0a430975df7597fdb73c6ddb497f4b6446b297f7e64decfd94ea34cc7b006b80a5ddd36ab30cf24464677298837eb5d30cff2e27df8ed4845e4fffec5a2a34a22da34bdd09035c1932dd77904c4d85244fde3ee20f4f125ab49dd173162dff3556feacb9dd08f50b64c71ab672b9c59f575b09f7837edb18e7602e6f6b446c347ae7159345222bff8c56f5a5c510d3e8433a30bea857a2c742c97fc1dd2727f2b50d3f12113b477c2175a83bf10332f87fdf3f7e1b07f7a2bd92f0688769576bdb45083bd6ad828f2e77c49968f0aa564f26c50be3e660f68750f81eac376050e547015c99c719b555c12b0b3f0d54920867d0045737aa8b20ef5fad4f44b190ae49872ff75463d6872f62d5d2a5aec4636904051762b6be8a1b15833fa4502929ebcab282856dbe3287d31f8b9e040325e6e3534fa85a4e164a333cfeb5031d138954008ae0d406352829ae56b85bca9d7f125c7c3a79197f22659621988fe26c030e38921a62b3f7d5b0bd3345d638797324f5f9ee225c20c10d3cc506041d054b02212f815fb32ac2ec869d887a2fb6e21985093f4beef8fd9984c88c66cb7b57446fa78c55de7d65e484bd45b6b61a481fd3d92957b904c63b94d4c100df0b697d46dc3fd73f566f16a21cb56f367c822372e5788ab397f6761b698492d5c9e3193d8ee456bdf0f93749257f5eaed33929345e210c08b6050c7c7ffae53d8c4602cb3cd37b0c6d9d58c7f387a5db645c5b6a7f87bf0f4856518f3f5cca528f7443309b22dd8674b8645e5d2043dab07d98ceaefe7e7ccab32dd92f119a918860e594710cb0ce4ccd1f38c25177bf08ab2e537782b0ec2c4b61d1070dc3d9c2a1a977a1d1088599a5c2a5d8a51d57999ec12ca46ecb2a2a6499f39d1cc0251367df2fc1f3c2757df29ca501dc45aa773dfe63af65715a1c7f9ff1a9b177abaadf42b8ba30da3067ae64d9eae3274a93d28ed057d8eaeac196005682aa8db49aa971225594b04d9598af1f169272695e5e6a289eb285e659d24c2d54930e027cc5c1191111e3f703d6e80f1e4c3e6d321d99b3c7ddc9c5226ee3f66c2e21fd105d324d8a2c4b8060d7fe71885fbec588cd77f4a9556699f2c923822aa2866f6a0b7cde8bdf11cf089e3188f96b72e8eddfbdd3e2b4cbc5ac52db317d5b2529ab252fa6ed723cce8ede7c2d8ac6b6a5957c2cb35a141ad49e65ffb22ed2ac7cede3d5c302d6b8eeb69c596d9f66786da77ca40bc3c31bd9eafd15cc3042181706946448efbe65c35078016f266b823dd4847baae721970bcfdbe3ee9651d0ed81ef0c88926a2caa9704738b1786361b73273a5d58d3304c52581e116be7bda521d1a20fbe138e64a7e91b734f3b3ae7922d47f7f8e511925989473a570474b9c05d850308e30499882da5a4f89491ff11af8028a97335a31fd09b7101b27d1ca917e0b57d9153516d803bf312b7fb0f3bb418f51bac72f804d475004b7bf41aa79adc46fa7d56674f61bededbbdd10ae98a4c390a1db36ef413f1767a3358e641b024845de5fee43394d6d6a81d6901278484aa9bccb3339b420328e153e8ef91ceee6b65751c4d86f0459baeee232440d3093830fa159d174a52a63b5dc2e9d65be51092051c63eef67ea0d72e4f935a2f825cf119ccc76e39b47ab498cb40338faa1e13b9596adffe6b5cb3ca720c02d2a97958c8ffdeeebf386a4b478e06fcd32e674dfd153398f9db71a0f93842700689bd9cd2c711052d81875b90a4b33d116a35a61567c06bc32e70549a43a98ca43b8a0a6ce50e22748f4bdc6a6bbdeadeece62ebad198c8cb67216ca1f6728e22db0ae323979062a0a1533515a423b44630b8236733006948fe4d9749966678e523da4f65f7f204ba9e3f44c94026d108ca060abbeb0f4839a036480b7053246141c90a1deca94a96fcdf7ff1467ae1e14b53b02a7d47998879a5e10f4e00cec0f65ad72440c90bfb9c1963d0d4efec35df135181ffaa3bfe00af4b79b09008f90cfdbebba5f097893802c397d91bf14185f0c4ef1efe6d7aec6f701f54640ec171f4ef5232f684799f9a34b178f58c1614f2d105b22918e58dd9f76d1f7946af10f2bebd40bac353a4e708a6e6024f2bd35609ab8812eb905d89abbbcef630275251b38f7a505f32a6dea032217425ef1a1bf159d6340f8d3a4267118a49a9855fb365dd8cf24bb1a69aa3046e2a68c979771ec1926a1ae29215850f8a07c21836e5adc51dc5391a0b1d390113c4b1a4b6884131de33d5354b0cde138e2975436f5e2d2be557613e6b105fd2f5da853357de6eb9f7353cd097f17c8d6169742b8df63b7187aeebd16bb50eb35719b12c459f5fcc353ed2245e42f14bcae5e8748695cf4020d50d7ffb760adb4db28481c9dc3d6c1d6e8f06ea82a3a3a7bb611f5d4028daf4683a88a4a35411400a543f5b1f87ce13043ab53974b84860f8da8abfc76b5af3f075e39a12966210442310ddb8851fc0a4f881ffa245c3bc1a49a5ffdbd70d9af831efb254247403adbc7f3a0db4e2dd7cdf0a62086f8c7e109ba821c1431265fa382811171ca8c9b551f0a9e85f5378bbd77b481fc6d26160a263605c0f735169b0c6dcda2be4cbd8486bd54fc62e3600597db6df4b62bd12910db941b27e30af281e02e51341612afac9a69c7dc3aa598df299370f2f15ea5d919adadf06022489bdec591f5da096b74105ca715a1b997938331432c0f7948cc0f5bdfef00949efe45650ba9164f722bb8dbf3b9a2588241f8087691f265042d7ff13714971784b9937e7714eaf7419c08a3c1575e24eb3ac2908c28c2fc5c352a6e1b3925e8d4617b7e480292c193a8216f36c1f0d63abc25cc9273c84d10d2458a7843a2adb2d6ecc00c5826558e58d9409f10826787da3278138f102366a8b59c4aec8449949e17a928338f40c25e203ce41adfb315fa06af5512508f6cf26cf5f9355f25d019a8698eef1392f9804e717cfa3544a7184a5bad1e9a73c7c6dc4a8df13990d911732e17c50449686222a9674da895c59ddcd24903c78783a958b32f9fab7ce97cb5e22247cb4a866dfe7da51f10d5288a57e4a5a0394a30f9933ff1ddd67f75d32e9b0b0f2c0c942ce5b5be12535c1db193ab635ea00a7daa13774a50039e6ab96e18556b80a21bdce6c5e50ddb317eebe8828e1293c398afa919805d6bc5feac267d2b0e7720090367c5646de8bf533f3e37682deaa2ead5c91d2e91b65d4c8f9ce74609a226ba5ef4889e44e8d8f8664f64ac99eec546bf33256bb8be02ac37bd5a82d62c5d29a1f789906d0b3d9ffabbf6276af4f6cedee0bce6b7cbb45629d6b1ed351b21756f7f9ae885dc42a45df3a84336798c193ac0059f0a161145a4f8775ff0bec412b7b641d72e6b2d666ea75c2af28b569ae65a66cd985b66e5db97f446c5bdd70d711ce7ee579b11bfffe204c5d40dd1e32d3adc7c86dab64c4d2a5202d28d675df82babdcb64043adb3574dbefadd1a7b657c3ce8cc7c213aa814436cfb7cafe120cfe337dfea9339faffd9ec1a275499e448faf6e68ad9fee779ad8e3992c28b79f1336979001db77c1c12c0cb7a0ba0f23b28d601125a89a6fe04b964d674f700dc8e6561c963f6e7404395304938ddfcf5510203bb2188a7ba74afbe28ea03e344632fccc8a50bd6a8e79150de1ef79b6ce82b2158930642b26247c0b49caf90e4b00c68d9f0e41072502c119fd03e8b5c4361d5d1a589c0138265a7dd6cbdcc4d64983a25a9a12b5b1d093f68360aa2324a069796e0c87c8a0d89a4056b64de32c23eb131f13b64473f356d7d0da4d048ee7848b724c883974161e9d9fe1e84e2b61591b46184b4b1451402ad11b5c685a371c0c24436e0c64c38ae855384754bbb87403d86279c082e47b1f66cc464e8a001e17d9a2ed6d696b72398a53a5fc9ab23f1918d930515f00bb2200a124bd4fd57e0d93d590b80f76ab0f3f693e544db267b1e3eb33d25f7e3b12d3f6c746aed8d17b549ea2ada1fce062e6a00c6d17d7aaecef6ca767946ce1690b3a4dcc4a0e3890e5f20c4fcc6fa1b9717af88b793e74ce167226df7c098fd6045039a7de4f25c7ada96989a957a407759ffd1f438b24514e9a8d529f7c6c985d22031d366431b33aaa89704868cea3bfe481b858c2a56621182144b4a908fee606b70525c51d9cc31e99376fcdd83533ca1be43a2a9bc46e1b29a08f72862a02b86f7c55fb7916f4eee4abafc76aeadaac68b940d2d375fd1d19458f6443afa96290b5f17648831d7ba0452e96c65c1ef12dad9e2fe90c7c818a6bb00ffb9d5a03fc68b06c775f2160561a01999fb07b2f297f62fb5e245188b0b9676814a058c01f306b9a95723ca8f8f0e7c39d154d44d8ad5f5cb0ee656dc3f9718b871453614484affd1e26e0b7371039ba6be16415a7860b9795ffa88eab572466255b9b063acdad81597e6f0a7c01fd265391c6daa645306e511c388927a236ac5e9ae07277904ab4f1ed879c0c0e5f0753a0dedcfbddf99b424d91abbbaa5b90680eed4b1767490b128da0f530f00f991d79f34516ea156b960b57eaf9bf3265a67a37cf855ea96994e682a1e94a8e167cb41403815483738459f209ca576df4e99fdd651f5a172a1d8310091c7eff8647328906098584b35a60c16b09cd2b019081af1241f52fe2a01ac6692eb2e76532fb82470d083d947753c4916ff9f307ca3f335937324ff9ed81ca247f280165ad602480963364fecb60795003df14c7de9ed4b0a8c235c8276cdf7cddafe9ff6093a1850691a3034d9524b76c060ba277f89f3e875847ed37b2dea4dee03c37ca725ffed37113fb68850a0acfc4c055ecdad6d8f616ebc106cadb88dde9055f8e1901f52b488950db980ffb0f24bab06b0aae12b4d9a39cddabbe5e17377c2ad3926ae0791b78511ffdf25c924cb40cbccb89682bb6c59bde4d75c58451554bea2eecfb3227506b8c908816a2435d515823e2a59bb57f388ab95c4c4975246c11345aa2b38c7c23fccdcb3162f83c2eddb74ded2db4411a25e2a252c7e5a9a43e78d9586204e429970efd1bf50122b23e7c0b4c0b913f2fa14548ae1ecd8e125d2c87d42d57c5cfc6417ee7cb93593ccc1eb0061c5e35eb5e09abbcb0919733e2cf22b433a128e5cb9f1238caa89b64f57e5dc33245c1e4466c5ab14767c170c9d7c97bf89ed55e522007f7b6f2ac991cfe77853b1f76f856cfa2de56090e72e71eeabbd366cce6d32b0dd8115965f4267f2e044a4c558474d17b9ca4984106e65743f0fbba2ca6254e14b20a36078c494aba6062eee2535d437ee2520a229f3f37513442126ce3aefd44a440a0c378616ae07165656f5a2a291cec144bdbf501636c1092eb2d04bbad900bdeb34a2e2c9f4ad4817a86ba8583c215d2eaa87512a7b54e65d6f4754c60c56edc7f368d93f8dd8150c28d415a7d5f026b60115f9727d69511c27627a33ec57680150a9ece4bec9f70013761f60753598f98b6228e1d93760901ef2179391c9b2dad96cca45d81107a6e6a6ccd6ca6c7b7f4739ea721a726855e33b02cf046e558adea62a9f64b057d2bab2d00648d4f5ec62cd9fe9f1b73b3465660462702fbfafe902fd53a8278396a3eb74db56999333fcd64992efcf33c3395aebff55109bfe3831abfaabb8b1815c4f4ed03d7cf12549ebafbde6e5385bc0864354f0a0c700a57585c39c4c90b7fec6fd00fe6058fab7dce993c419c482e85c0aa5deb13b7b81b659fa620ee60e521a8ae47f7d6148e22b0b665cc7665b677ce2ae03eb726cda9d67df6b55f339bfd192814fd9d1cc6f2c4adf01a649ade4161153e63cd1c44e8789ed46422f319d481e060fa17ed5af6e135b2c78c8488638462dcdd4a3db715247d396c1c19e3dbeae72152acb3681621491d49a99a62fc2344ba8b1137cba3cbcefe919a3eb3d6cbb0a87cfc5d30a5126164b9613b246a893ba1b50f679d7770f7e250d40dd2aca6ac0bde8d89d90597ec14b70393c0f11deb23c34179aab8c4d612eff882d32a7fb8f4cb27418ba125c53f903d3adf7772e6bb6af73b9fe8f9c89ce3921e886bac762157affcc2d5832c3f8bf2afd582535eef4a460a0770f2a835242741dde62201501cb062e0fae3e2017d1bb9e11f4dbf755eb6f72fb4ae27f772bc41515a69259216df2635ef50d2cbedb2475250dd56afbd0937a4b977c1fea7292cd80c474676656cac1225ea8d22a98b7b53a3702f6c361f90184d5e5f3f22f23494067f4df7fc050f30f9a6b9aaea0ad397bbe4989de762e7eeb0580c1449985992f9c0ebf8b67d3f1f212c6c9a1c581c805a56eef5496f14c3d389a7c6f6c9d48cd67d3a00052a26d7cf2c1c290c04f1de0bee43a4f21384d272939788ef58b60e521edd7ae4818fa062d45c9051360d7d49e6beec8f2ef62dd51a0e583d363e7c9ef5513c233796f2ae1a7c31d9f0247b4d399c8c87f4e0d6085ddbf9619363666cec2dcaeca521e168eadb9f119aacf0acb0790fbfc23cddfd04779e8804c1407efc4974309f9c320b1fbb82a1c060709627c337da95e47a8d489f4e7c085909adf77992d06eff7c49c620f0cdab50c7311891ccf865d19d2b6f1a899a7a6b2fca6d4656c0f8ccf1c61d62a8e4bb60da79c453c7a7dcd6fcf9ed88acf95092b7004cd4941e1751a722b7d275ec7f2c9b6a2865c3bb1aaeaa3bec72250d445161fa9ea836cd2cab74d23e784e637c515d8164a5dc11e6b1b9fb7c1f7b5806e8ef7bef3b772083bb5283648118c1f2d4c1d8f0fe59fdbed180c3d8f947aedc1cdf461911d437ff365438f7a6ba0cc89d14dfda067494be9167367ecc62a2e0cd0c875eff9013b64b2a1d7a358ec09378f775f2dfd96cb5f5423bdfc35ea9ff5beecc6fac95d20f172f4f9ea212548241bbda6788c8d49c141c5bec19e1104a1a142eb8b37a7d57a0e837f6624af4871a275fbd9a4dfcf08e3805d81a65bffb483f4f4cbd54a972b4d0d3addf970ed0d47767d12a6fc3ac14bec4096f1e4edd2ce4bbf7139819aa2b64bdfe0187fb9c7c6995cf98c87ed847ef084b159fdf78163b2d8cb3806ea0084c10c9bb4ef974d638716720724adced987173af281e310aeab476e67dccc36bd6e331afa797680505f813bf94a59f2375ee9a53f4fd65e2ae0d2a601f3476908daa3b85e0bb0f64e43f30c7863e7015ff04bc9b4af526e899d0ac60fe471811f238b2eaea37000836104916d9bd410c08ed2bb2f4f2e5f43d35d69a9890abaa0ed9c089a5caa258b26b1a0c4bfa5859b5a9b9aa1021ffa8d84cb733ce9bd21ab2529609dde36ec1702ed5d4dbfcc4b59ecfe72048c52962b11b03d12e660e847fde9d472311a5aae8ba66fe7239f3c772582db36936d99327e4a096fcf81fa7dcc3a0e311d2d2a1b91da7ec3721443a7ad0b9c84d31f5d2111371b4f3956fd06a2791dc1132bc3b827069e874c03ab7c5feef5eb9a69a15a68e5c06f5a9fbaa7d0ebba1910f6283d694fd72da5c0305ea0faba6be9ca2d519272ba6bffe251bdb0422300c427b3354c77e9621a2264e4d6318b37713a09e584989d33fc496e7483fe2934808f727076ef66123d84eae8cd8f2af9d164ec8884db42c8d30b5d06e4b1d0c7dbc840c231091bcff8b26e64244850e6625e555ee4b25a695c33885383473af8edf7287097f4552511becb50fc8e1c528b845ed325ef11da2214ddfa110c8b3b591864948d5ff4d090fde33fd48b560593f948b46694fa184b3049f2d7cae771c7d5d88d653bb5659cc8b3978725407a6380daa4adce6e461c5a3596af668be1d96f7641c36cb7d38e404ad78fa8c8d9dd1c8afdbd4e2caaf99849100eaf4bee0dc07dcb4fb46f54293b0a4afe163800527c1f66b0715fe5564d5861db52e8c61bf717b1c5bc79236e7529e0e1ca11def009d63d9630d75ef2586fbf4284e2a397c82075d59d94a87d163a37ea54ef40eb70071ccee4cd6a1ee39565f9d91fcf6efbce81499cfd8b803a642efb25fb3a8ccde4dd41fecf66a5cffee9a5597024963b30cfc3e0182b91bef69120c0f06713d84f4ad10bc399292e3a2b5114d0b3692980dbabe8dfb8a7d36665e0fe030f4e1389426c88f54038f9248cd572f8e7a3edc92c04047f00779b3545535cb90425469fb88015fc773b9a7161d7ba43c06bb015a19d76a31b3eb68cc37636bcbab4a8c32c17cb157b645e25e4fc2299c944e4b3b717ee737396f07fa9122d9516541b237f9b135f6acfb14ae6cd83af27e6adc914c0f7c50f3d62e5c780bbc809a0c9d3f5606d9e37b0ed1080f5c8115b4569c5a72fb0eaede41541dfd286174975d99d2b2c183dab3227df3e2e5a81cfb81890961695852b741995e0cf2c78ad0ceaa5cb640c0f3bf007361ea4b734ecc83bc2a6cc64b0708a70143d602a8fa14a04b11ee5c14f8639a68f729b4d7b77f16a9c6a61f08bbdee440f743d634206e53f069c31b4d661f5fb4689580cec3b3e7976e92ab24310dc41ec5929d4db538f520eaa96dda8fef097295ab6fb03761b8410d251d7898a5eb8628adf7b5b70eb77ff7277446d3d9c76e0a3beb2ca38fceccf0aaabe319677d561bf66c0dbd7662d81e57f44930542290a412009bc513ef47ddba98a59cfc8b548aff7f5ae6052d7ebc3015a2dda72da111dd164f97992df8b7326402f6a6d80f0491947b13bc0d2d0a91fa0a2caf478185690d3a85f7457ec0b28b1792520f84c536c493176bcea9e9cfc4d0009ce7934c7eb5bd3d194f2721db4fbdd59a4a19f7438cf80f0c45c1b52ac2c19a7883bdadbe237b22010692b000acea29d4768a790fe33edbcac76900a36f3f9b315a6f6ecffe051cee5031107d37d16b47ce5872f0edc8bd9b19226a5f58ac63e7179fae0678c31d40f0eb0e2d9bd7434137c6ca0bccba40b755f0e4bc03a7f82c6e5d0c9501fb24b87bc3ab3ab554446f343ae629e82b74ab625bd6f3ac5fa5615fe900abadc23d8d4c4eb07dacfaec37cf3bba6fba5ba6ec6c18a60f2934a3979dc8bdf88a18218490c718531d684174d28e28bccfe398896b539abd4bd6deb64af65900b74178e9bf0a58668e1eb237c4f2b88f3c3ab6c09e9499a0051518a8716adb42e53b162c7d874af0bd0c6f6b77f40535c9b05d8e2d20fbe6cdece59f5b3c6e2db583397d3364cfe2858dca3ce424dd170b032fe9a4d4c21700e30fa8464c190e4b76565a3e0dd286ac04e676449dc557211db5d4fc8992d18dd90c7352e34312e5d410b75615bb07fc432f56ab493fb747e81aa522a591536a62f1501040001000000090000000a0000000b0000000c000000040000000003010208010100080000000d0000000800000000000000a0000000010101000d0000000e000000b10200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000cc0000001d7cf1ac4abcf8e89ea67f95d41406bc252a53edb6426b8a6660c5bccf28603e8bdc8699abf5f7999754f485b617136abca5d9f77396c2d520b3e8128d23dc9b4e2001077b1503818c508ccb51a1da87d88d254c97fb15e19620b4c5100af14cc762b3c85fc23098bc10f85e89a55e8d71d0b3b17b79203d0eec327b35b23660e23849244e365c4199a4c49237c9c7e1aa624720f82ddd325b3be0933b57a8627cf7694028c26db49b2cc0a5fec2312b1eff73d37e9643000b5689ee169155a0b30c56d8c631f2f4517554610ddf3fad964518c6615abcddbaf8075229f207a13c7c38d572931f93c097f5f8ea3a2a23327e615e2b2b070007c14b5c1345e53bb4c9f7ce9ff65d84755372172acf9c55373c5be3fe80d7f412c489e7fdc424aabeb7b8c98b5610e15f94f816fdc19391242323ce4029f64f740b64bb3bbbb36365a0a13869e634da7db6aa6ad88fd794fbedcf030a6488148da4a01a9a6f613d5e5bc69094cc04697f2480847065c54f0a15104f63c03704659670b05de50adace07f6feda8e246fd64ffee090f43805f591f3da948b613df92a18aaa8bddb808f2e25c65f78e42f6049442a855d8de3f210ea3d7d154c9fba92927046bd24a77d77b6ee9234f768482142a20a334cf8d628f1b19267e62b7aba5b9a0bed1ca08737617c62bb577b9e475da314d11f0df7d381b8e359a213f52a09c4226870565e4381980fb743db1f43d8544dbda633424d556e0ca5cc5753d712ea7ba47bc58d25010273e0c7127e2ed96332db0cf6941ea316925df7640955d03fe6e4c8cfda6c75f7bfc5e9fc6046f53a1bf7dd97d3bbe3248443b4712ae24d15a303385877ce685bd7bdefa210b7aef24b95aa68c8115d7064c5bcb48c86ef923159b7ab7e0c0101000e0000000f00000000000000010101000f00000010000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001d93776f3e0ca8d8fb0c010100100000001100000000000000010101001100000012000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001d03d3e77a8bde644aad6f5f2314071245855ee93ce571fc707644b5ee15a88cce94b4c15ee3f0b24baf962089cf44872641be6e5485cef781adabaa6f6bc88f63e591319ddc8f6c167a90754c179489d0d27ed0c94b1a56af138e0a4c27caf9926325da5e0d092ad4e8f32b893b31b0c145bf17335ca9c3f0dd45bc5b98343032d10eb0e91a0f8ae5abcd92a3014692ecb2f5d45c12b2ff3da2af48dc2927c43459dedc4305f0b8f8e6ce3a6409943c73011f976bb5a3362a3d462e06ab4a86bf3b724e35d92e39acbb2705ff135a38056be1ecbf63137e0d47c6a9470fbd5e7583f37fd5172fbf07b0966ade487eb150e09e8d18338ee7077bc7c221d262ccfc716293d9223fd997d266ac7f1c7edd25dd6eb8e8f257e62d6f1870760f8b931b7da918940a956cb98e23ee46a2c4b90948f00463f5a57b9700e026bb64d707d967e67c15c65e249df9465e3ac3483eff9f863ef85ff4f93d4f067e4821f042d82cead9f47541c58d4292825ba96753f66b9cb3a3b73da6a7839cfc86b4980ef3accdc80e5a65797493e09b1cbd0f504ea39397ddd37f466639ffac3f548b81102c5480162dc1e626dcc1230c3e5a4e9bdb07e34846f0b50b0ab3717a7020bcf692f9713d70c7bd32a1f206ffd93b2e318df8229f15def75dde9703181ced3e5944f16b71ba269619ec1e21e0ce54c1142227dce4bc4106361ea96091bb929d9c6b242aa28a1e2b71a15172f7bb3efc7ecd91990a9ec8705ae2a4329cd833f258c1d74bc1593cd6fbf775bf4523cf693c0c512b91d74ea81c05eb256d6dfe05851606299c5e45340ddd9decf23897826c5a50a1253f8adac35a232a6c569b62333ca6303a283a32f93bb778414a7304de2fc212dae0661c284eb5f5d75b7914f8050201000900000012000000130000000000000008010100080000001400000008000000a0000000a0000000010101001300000015000000710600000500000001000000010000000100000001000000000000000000000001000000020000000000010104000000190000001bf4789fd26f7879db390b54fed609efd4c8d86a1fa772afce357d14ce2e2f1887ec0cc5c0c2d182491d56a68bbb1ce464f24e08d72b203306b7e408e094670cc29a6e66b97c1c36a66ad077c5dda4efbe0b46aef8c1667182016eab91be51b62937307554f65a67a153b25e6da21399e2dc9c3c51cd51eee4d4c7ed6595d76dbb891ac6c0b2fe66c0ce953ea5e48a09abc06292e65e1eb314606c9b3641ccb484c0d01bfa72cd9b40148b1bb89bfe5cbffdc17a8b4a87a3d5898203a0d686e177a50f02060ea09b16bcb9c4a352bf27d36e3307343d2c32e7e9cf20d1ec00fbe6aa204c64b74cd1c0c845b2946137ef6ad164f5adb1d5342c5e7e90c17f7a490497b16740129df4673ad7d358a4d5b676f57b60334112c9044affa1eef3bc239b31b53540748c7a00dece931c43cf960cebdb61bb16e2adaa00668cc59897a3ae7071055b102dbc02372cf52867328959aac0e5a4462c64ba4dedbccaa436323953b4eac9bd3cb9bccdf5681b393e856333876420fb3938d558294e44bbfbf08b9b19807cb74ffd2b2e1f62d6412cb3ca5f58dacc438d1976f321b8c99f5f0e33758ceede31c7f17f6a6802782f1f4d7f0f6012d7a8ba2ac307186b9bc8b5d8ab410fb0d6fbfb3197fc40da06e94f0dfd0c121cbe8d910d12e9b0dae61b36789b9fa0232d0c809eb9ae5d0ae5eddf96ee29008525c1913e61820777f67acf3032c34932ee7ea51e358d2b6bab556d5c0d1372ba60f53ea8f5dc066c7438ffaa8b92679b4ac37228c66c93bfc43544ae1005a8c15ebec0597ab4bd99841bee5a112f14175e931508711989149d1b830d6b61b9ac0568e32e6f5f6468c5b7666575385a0198c8a9f468b8cc6bae7f269eed1c2cf360686a70ad05c05f98441864bc8d0861bf5bb0035dd2dea2c5265d074f2b4d78f3dc21451d199ac98af931f018581be4ff5f65462634664dba10f6775ecb8f83e68aadb404327dcba72897980dae05838b97bf8522682a33c43f36303827e6ba7c6b3a37371ed1181ba589c3202ea9dd54208b842d170fb8c587fe8b0aa1df73cc5fc38a71028707c214931eb683a176f071025adfbc0b79ff7309e1d8d8bf3c354c5ef38327f81d1d637b15f9288c3a20e54da56aa00ce374356368e02a7564ec147c96b98773c31a646756cc2ec25d49e6f7eba581ac7c23c926deeef4b59adcdb9fdd411b2b4b98550f490d8dd2219d4c58c86e1d9b285e68020fd5358b51780ef19b7afda988c096605928c60e5698955335ef3194179b87eb829efe286cbaf8ad8d52ceb08ccd9d60d50cdbc5bdd9af678ca2cf1bf5039dd70644308882a3cc476f237369e42c41d61fd162e49b1f55ff091e8ceb88a5e902bfaf79b1bfe602212c0826074de74d0ef2dbcd1a97f03516f05fbf3c7a470b2d80a0de0a230ec068443ec11dc770126a039ae5a5b6851a23c26eb942e0087453ff28093178d98da93c4a45d76f0ce049729cd5ec7d359469ac9b572d1e60cefa34567bf03d789ee6abf355d5d3abfebf417503a6145415705563d07351800599099d1d55e0e2aed7c70b40f2f418080c72e310bd3f2bf68e8699e79d979a0b2b96b14a6606a21a7b18f09dc3a920b8aba907c7571037b869add4ade0381a4e8327adb866cfdddada45571d2fc7b48c95cdb176a84eaba48d065f57a98be6c676a73a4ab44f5c32a69820968ccd752bcd16323f03b99640c50754d60a11a62103d564c2c43c917388f0f430eebce7f75d8b19cb1abcf15147ca4680275a1d0d00f0f18fa49a5c63547d65e6f969c17712de5893a48274949227990998ea2775fcce39d90d09a98cc0fc988e7d31f0544b8811079bcd6eda61d48cc4b272969f30b4b8c6ae2997875b3cbe225858aac606d29620aa2011d0e71afe7b33c5ea8e363a9a6c4f477f576f81d5c3e17b898f7f44434ceafbbd9dcd8376b64cd59b6decaadae1f7884be890f043bf6e136bada39b9b8c7392d73c62edad3b03b7679febaf7e1640222116145ab41847c6a1e6e8e4ff96d32549b76681ced9dc4f72cc780c5ace52ff91fdb50e3f312bc324801d3ff27b357598aeacc36b388c9988a85a8df18c5afa6b82201b21f6e963545629cc088449dc2f3245cd1b18ad43543111f737fe2bfdb320335ab3cb76e69a2debe3d2f3b6d8e836ef4edac57d45232cbf667804b2924fb88e2789c0bde3be47650f9ae4ed3d4fcfc757ef96a0f8f8a1af826e6abac96b6b3913b6c8bbd3b7177d581c0101010015000000160000009f0000000500000003000000030000000100000001000000010000000100000005000000020000000002010104040000e30000001ab830ffff18600000478dffffdf6d0000920700008a9efe27f5a118297da84a69ccc8940da1759c7c02af930dccfb6e3a50f7ceff892e0ac82c1c5cb34a3bf2f8d27204564ad81dc443a0239463eb90a48e332dbe39e965d40f3ddfc6b5f4f025dab9f5322ee24b8aa244f185e3de0602010016000000140000001700000000000000010101001700000018000000c50200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000180000001b4b558475d9107810c92528594e7e942c4175784210a7048cbb06ac537ebced6a33cf58c0e27da710fec8913d91c6c53d7e997a5f115fa92f39e3de9ec57f1a0032c145c888a7c67b454b7f8156d9ef950ff157e1b4fcf88ab9247a63106494e9c089f9dd775d0bad87bf52261ea31eeec3b72844bd5bca2a9e8212c13783a3b95584ab940b601c22cee56f612ab47f3c3e0415bde6d27843b5c92b27dbfae591c6f9fbc2e37ed07ab5ba3962b97f98c258923784d99e031a98962e73bbb4a342ccaf3d64d092d8136ddd939f9f0daa23391f942e39c21d41e823dcd4d4a444271c600b7431165c210c8b36897b725def7fd71a50bd5dac750b4dcf507a71597b235707359e974c8adf813ea555876d356fa25c176390ba9341744c9554483c9bdce6b6a31f7861d5d037e2c9b6a24887384bc8371ea4c41955977ce7a354777200ebb606cdb3e86560b36bb3b0a1e810cee5eabcecc4f4b71914f8ebbb998f2efe2ef5caab5ef67d7dfeb45639c4db77728c08dab79fb4cfaa9e16c84ddf37e9f00bba438dbd17047749a6e08beb4983572651b53c0674a7142d3059c7fca91917058614dc704b07a133e1390ff3a903aa36742fe17dcfbd49562017665a5051b053b49c92f695c3a83fd3ef2869610b09dae295a0ca196a1df6931ffcf193b9cc8383fe9e9912e041b03e6752dcb0c03fdc5a2027ed157361899b178c0fa01d16269d2af9299707ce2f31a35ccf244816512da911cb0a69ee0056148309f3c5488516cb0cd8187f5fe4e85b2ebd1878e1127d45c7d6252142101c82d4b9fd6dbbb7528d7b41e055b7c83b509462ec9fea6e7459ccfe97f1910eaaf75022091b94e7267a77819b03f1d080e331aed4321865a4cbe93943e5eeac3d40b30ce39986cb65d2ce66fa79c4548be50745a18a6da872930c01010018000000190000000000000001010100190000001a000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001e2e6f675296f81c510c0101001a0000001b00000000000000010101001b0000001c000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001cb625891db5e3cb0ab7c65d3e03710dab4d8e60c32e4f4ea3e9ad02112b9309a2af67cdf23cc0f7dfae8182eb240cfb0760bf833a5e09019df68f19e7b7b4ae3249a001a49625812ef71cd2b8d824fc10e9c4d4fc8f9d9c153c96b1a521d81d071caa80514fee698b1bca943c8b7a30cdce3de88d5d2bf4910804aeddf8fe093346fe705032ffe69c0f471e547e75a55a2137c15b53945419e3e70ba9ddd558ab238d7c335cae1a412b3d23b868dae56ab75ed511cbecd63efd736d97589961869108fb5d1078eb599cac76cb3484cbd27f245cb08982e3d05cc599b96d0d9b93ea558ec29eb1508d20c93d88f0c9aad8cefdcb4f9739211782b8921fcb32e04a1550d974e20208f20c3dea4af32fe50377aac3b52a485bd3cb1d0b44d83172b1d787a2e603ed32f7beea1be70103e213c98bc50bfc0a7a858e475d16b345a66fd6f280203edaab69851cbb4f2c8e3df8cdc55a5d050b3115cfd7249d6a1e79eb9f386f3def3cdbb4edba12708e2109d961039515171796e32ae9be4cde0056643fb137801bd4603ec4baf1408c11377cf8fdf16af90445aca7faf5ce48ee1d8cad41e1a79ff9ca3e264746d664f7bf4d86ca5db7cb0fcd40af2f4def023484971b622d97527e96da4b3c9d7798363e839e2c9ee4eb44e06150995e98385239b761c4a99b703eedcf93b537df3fdaf004adb8cf7694d1f9dbc2b244322d7881be442f9cc5f3b0a94d9c012ced92ebe5643076fa0b2bab0823b68c69f2aa5f62f576f0ce5246f4827e52be3fba6ef4799f38de23230fcb7be29dfb51947ba316d0ed16a1e55b79d4522a455b0734af3d22309a52adc7bc3030a0f98a2e5fcd98cfc31791e7ee33972a4bf7fe3541874e22cb01859227f9a885d999e24b7da92fc5050201000a0000001c0000001d0000000000000008010100080000001e0000000800000040010000a000000006020100130000001d0000001f00000000000000010101001f00000020000000b10c00000500000001000000010000000100000001000000000000000000000001000000020000000000010104000000980100001f119fc75651f40ec992e623e1d582f24bd76b3d6b178b669e1ac8efbcd0b900ca770d90a8a478f51acf2ec48b344ca3a8621ff94b179bec43d64c5a3445d066b48aed2dd5f0ba986592071808990a2a715c2d4f879fb6add78d42c7e1c2fb073436cb02c85e35acf84006ec7fee4e1ae88f0448d82fecfa443eeb16e04fcf845dad4f5e4156de0e3c56c380db30deec043d85c4896ce6c82e8f2ba91e541e8619d13e1de252cde16f171d6d3198010e79f04674b1620095a0f7f4d024071b4407762a4e29deea907038e79b13b6db944af82994f6d3b7b6f0360356b07c157dfa26700131fee4ff46e08d46acbb64204b0092ce225c22ab3b7be35f50ec876ad320b1ea5cfcf191cd433d3294d3067de0981f3836fa14413522a4fccff8b2cb2cac50dd5e018d3c022a4200cbe2e2a70a6249602d9c87049f2f71e1e9a4ef721fd5a9e0d56162d1e4ef5abe9295647a4537bded2d7c8e5b369b9174aaa901b8ac03a437290df61038fe32652f211787355512aaa8cfcfd7acd1e9d27e0d5140f1ac096dc8fd004f02782c5fb5e622e707f09bc562f495c3489b6094fd490268d5ace7d7a83cd1f8104548fb9394002d9f77813d1d86177bac034bcb14ec204d9c386cb9b76effbe350c5174bca19c1b10484997bc2a173419d1d19c4bec5910d655991c47aee88656c52d2206044270f4c531a5212f936387a5999617aa485d50b41ea4e3637d74ea48be88a30a5b5f04e984909e1972af2f6b9c76b6844aaea1df575afb9a678b2ed2f33b57753ce06363e8610fce641447b2ee0e189416a59c9dcc578347dfe22dd5fdbdcbce331cb65df94efe25c24b52f7f5d721ac945a19fa305f8cdd2aa7ba9f02844a4f9b613ccd6740ffcfd06347e896355e0529d9d4e0514385a0a20cccc227a6c48f6677425010742c4771d2208e6e93f0c20bca6799d8d8e3295cdf88051f3728f4d3670b275a14a2c137290c5ff240ffd5aefe45a5b64f706a3bed02013a0778c5a84ec1c635cfc435ffda30e3afeabf8836647a9ef3e8b76b86e31ae0cb677dd33b8f6e55eacfe64f0905f509cfeddedf39757f135e5e6d9d56f06219013a93a873d36766348a5a8ef0670bbadb8bd2fa022bd10dcdbe07716db74fe8e68c7a8d4b89e0ea1dc030939a8f5c9fdf2ba4f7a8d3e489f7f4f798ed8436fc8b69d18016e7e2360dd22ccd565316db6b60a79a224ea4adbfbe17c9f3f6e15b05d70812cd266784bec6d0ec189350cb207c00054f9c6ffde9c0a5bafed76a1b57a10db67cb24119c5beb214d1794b98ee4a4010b1e643d0895902d0759bf30f9ce25d6345f50ab97e7f5a22a5fec1d99c94912a94c96163b2cf27fe1469f848027269744c351eef5046665342adf4a8c6d6a25bc4c978a683a6cab88e89d1a6337f473909d00748e4cbd1ecf4fee7cebfef44543aa78a31d72be00062242aa3eb7e83dca35c56ee759f43e8e10b2f5716792385add048b04a33af6af3bb9f55beb536d2c5d58e136f41aa8ac655ddfeec237f915778825d66f22c713fcbb79e477cb3872b5c6f5ab771e5775c1731751fb9aeaf1ea36d1b24249936a50ecf4726eb595763ef0201f8137ab541818479062cc34b39ae4bc3c17efa90ccd7c69daa37d6ceca4b030287d9107bf6bc0ef2bd3a637916a63bb3e91ada8c7df4ceee6cd6bab80e1c6e8e5a55e872c610a5103ddd4af304d7f30a0ff82ff03259d7df2ecf34603025c693007e94cee530918058a213c9998b9a02103137c53127da58099767c8e63ba2111145a8df4c7c88fe71365a7320ff7d8869a039bffce8b5faa44e45c4a9d56496565331f2380460df60a49f772d0c2a0b24d6974e54346733ca1a9db601ae46c27b2acf2c59b4aa7c869c78ff4da31e39762c6965ff086bd9fe8804e302c78056290b229289bbebb02f2789f832b7fb2c6ff3f7d7594a228522cb919e154a2d9166c2ee2e7bd1dc91b0a414a2cf928b009ad9a49811233e871af3f70abfb6f10faa48dfb37175416cce4546cbb5a32db5106c94506c9d267c5d82e4c7d1b1b76e7642c5c3569da3684d221cb0acc16714053f250ce472575c3f15572dff07041a8b8711a054580c67addfceb23277aa98a741bd2e44f68ed96286c42446bc86c4faf826f31bd96ed41c8abec9b143c40a8267208a9cfcecbb1653d948a6bd067a03a80efbea8b59c6da883dc086b7c8116793c154f5e803a208118c93a29b7d342d3de859ddfd2beb422036d155808dd76d832104efbe49e0a60d2234c50867c91872dc8495522e06118da4e92611058288ab560910695e99f935534ad9897f4d8d06ad580a248f251bb72621454e608c91a122278992c24496b98a934921ee1bdbf073ce075e981e3336ffeab691985d89c2008138d9ec158363c384ef64bec17729f4231462e2093ccc635cf3ec701089f64b47eb7c9d26024878c1c224a6d3b51752d4ddb90bc769677e17338b5a0e206b7e0396d03db830685ae61fa4ae6358d7dae49c577b36a2b7dcb15ecd029fcb5e56b9baf7c743a52a691b6c5c1cbc47d102f8044d9120998e13961b2d1be5f035dbc739873a02a7550b9037f353e803003bf9f55caca3b178affeb10fbeb0b776d7f47da26dd20a5ee8b2d282d130ad929bbc2981532e85b95f8d9928f53898b423c228f540de049eb0ffc6e0537205af8b0c44fa88598f0f017c2d2e7bee98aae046b2896542159951abbd76dc56f35f0ea7a658735d8a9f68c485bc6601bea50d085bb7dc72968b0ba32bb4485cfcd046dc0daa6577fb9b4d01d660e3d2d2a41dd14e2eb119ba767c5a3d07776a2f2edfece11b54bdc9a32ad970715c565d3e5f0901c481b444d73df87573f9e6b1b3f673912650798722ba72ee40c5521011ba3900f4c213f813b58deab51ffe3cb3c7e38c3b05bfe68e39c95c1d7ed1f485b20b547f2be738f6aff97e9a75c3e4bf53f1cb4cdc87d9ba47cbf74f15215f6c7c900107d5cd9403891bc5ad560f8ebc4a15da2c25eb14f60a9ea7a015f4f80b1669876d89a3a862714498101e28312e0346cd070831c32d76fed4bdcd1c7f449e361d3ad8890e7082a757f5ac1f1d88c1ca8dddc64003c985e93d48a1a1c3f133e024e669b202f1f55e46ff5fca14a7b5b1b19b0b8cb63da0deccda97ce5aadddb4d6462df66d2f245067f9178845a789c1c6bf76de452fac0225143168b2fcd1c48da699d6647879c139d3709eef9c1d11a7e68f77299cdae1d012b88b201e070917974a127c12447a4b19a0aa8172ad0e87890b360fe8551937f26f038a1feba04561913c6ed9409e919132774202bdf0243fb4748678452d58d37407e833dcd56e35666880238314f71d294075cc1d0e8a418346554be5e5fe0208b48e41cf8941021815eee56432cda8754b8867e60c5cc8d137755759b14f53796a5ab7bbb302fe4357cf5ff9f0b3459de0a8526b833d52b4b8ea494b2e333ff0878bb53ce525fe9c53d478857f88ac1b8c166c8f37636514e6710d138f458dcb617c7c1ec53c71f1cbc13f4e6f0d5c64d4a5e379e96e80ccfb02bc13b292795659e44c38a211093a708cbbd1acf2271d856f28e41a0c3b168c29848137c6d36c8b8e491773182530d04f2bde99533920126f33e9457742cce5657bab4402aba15a6f99965c8305e8a034821876cd2e1faed1742cb73668a27ab24fd01a8c0f78bf9d5c8afa093ec544bedba953e40ed78c73930d0d236af6df9a6e482eaaf3be41ee62ce327d1578d73f5a2330fb59451244178f72f236e3c813e75b77730c8b2d1619ddb84cb164d2819770710b59985d6bbb9a2a9a812566b6fb9f20dbd0bdc858fbf93bca2b9c313a5761d4c4207260cf0a363c5cc25e3dcd16a430b62772fee38bc45773ee128efa082b2484c50cfb8e9ca857156ff893c22c879bd26e19a892a386940c72e05a5b142657d45a0d2d482ec3c80a02cd830104cc11dbff022aeb84e0f4cdfcde98e99f2604c79f5e4f45708720c6e9b10b9a584efebc5b273c67265cdb20a9a01fc7783f6c4efd546cffe1912183b3aae8c9e8f02f34a7b702b98d543962f285dd2b949ce990a14ad5315c43ae13cd21da93c926b519d42d404cfbb186d20ab529a2da4fa3dc4b435257f44ead977057b9d08608c33b6196cec859a516d585e4dd4729ef201dd031f9015857f93ae1da3899eb33c11f38f1969b1aaf818d2d4400a2d7af87c783cdde1c2cb21a7628398083aab3c003e27003e780a45ff395532117712ba5b99661970a9d5da58bda4296841a7b81c9a23c9cb45223040c1f6b36986953cae346deedfbee07358fc82db1e727b5e2db6b672249be6c415bba17da0ac6ec43fb7194bdb5aa60946f4a49319a881820dcadea630813df7216a5991c9ba241cafd456253bd1a80b799df08d55babfbc6cc3d5b510f7e30a8684d5a6bdc99cbcccb9a0bd9405248894fc3ac4b900b2891d916b1b20350f3b9eec4953596099f2f26acde045a96810a00d94c4b091c534a673e870101010020000000210000009f0000000500000003000000030000000100000001000000010000000100000005000000020000000002010104040000e30000001ab98d0000af8a00000160ffff9366ffff3944ffffca01132fb0be137a4c1ede07d446ccbf135720104b7fdca16fcfe20063762ea0abe4c708b2363ef31b2fcc256399cacda0c412d0893b7beababaecfc6aad9ac94957a4eec60b60d0c5db227d67f3f8f0c5da916d52a4c703e00d06020100210000001e0000002200000000000000010101002200000023000000c50200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000300000001bfedc018d45d9ccd63b15a26110fa9aa3545fbcfedad587a71e99543ed8d56e156c071dd0ecb4dcbaaad6d438899a9e70ec3fd93266e6c64783095cb8863fb1d6f9f64c486d3c6bead5346aefb778b5af008a663d9760ec3a6cc4921df64159efee983d6e8607e88f9b8252819adced4914070d42e05c1e00fe7fd434b122914363bc15a69b5fbeb93b3f931b2b7a3066389189ab447c481de5c06a20069fe0900097b55478c4ac7cdaeecdca7de8818982d4786f21980178709322044838624e6c9c972e7ca5e3bea17173d63e626e4d206f6ed286c00bcf606e529197b8d2b1b0bbbd9274569bc2d3724f30f5ddedb01ed573605a69504fa0aa5a4888dab958d4662b66e9f97b1d01b7bc54a2bd52a22459fc9ec381f9bc9b3ac8ff9a346131d0277b0d523f0738a7e682a9a1636687a9763cb3eb87ca92f2ba0abcee22a1ba4d3b72f99648110312aa313c707173f854079bebc2e6ad6c8287adb35a45603d3dfe05b9f47ec706864cbc17d4e51ed162bc53cfbd5f883d37cf0923d75be299a1e60f982b3e52b90f229eab4d07928bbf1b45b4d43e746370e81e41c35084823721ab47f4af1a5f1a9334bd5af928118205d4fe73dd698ac61d1f11db1aceaf0d084ea81fd6e16860b71a8b3b5761998a85a1c9e2d3ed53e26ca4625d803c2dcd5673cd3b7be6ce556e43994f1bbadbbd3fdda5d84338b233a19d46c5ecc97fd87afed21a45c50f76716acd3e3c793cfd9b79daa87d62bf12092a6f1c03017bf6e059b1bfa6aafa548ada06b1c248bbd546e8b84e5bacedc50f4cd55a23244836a7ac74ab19b3ac881652b8afd5b2816270f43b0079d9007cd8b48f3e052e4b0dd79ccbe5768e4e2eb8504f9795f626aebc73d34eb4c3ab933981ecfda9bda2632f4182f3fd9b3cb9ceda9b4abb200db059cdb90c010100230000002400000000000000010101002400000025000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001b339c85dc2e46f0e40c010100250000002600000000000000010101002600000027000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001c97616616fba2d77882eff5a35f55ca49cb668ef49305ca19b8e2dd5883aff05ac3b5ad0777f4b38d8874913e9cd6384982c1214a68d30f16286c30b6b38c24423de7ce3a14f60841c06f783c83bd9691ab8d6dfe80ebc43a836462e4222668377bc2938c98209f0100c4fbd400b17c160fab6173428fbb2a4cf5567aa67bcf68dafb4618fc52cddcc83f158f113883b3adfc14a37e2f9c94abcd3a119023aaf4443cea321356bdbf7ff891d927c04f2c9f34f957c422ff326486d9144093e208e2f3504b0fefe5f937cd8ae61a4eccc7f7b664f78d936876a774f561dcd5a202f6b14dff511c11b02859a6198a2f602dfe025c995a5798333a5eed42642601d22fa3a7c31aedd47b8449432a0594e98d720cc44aa6f074a50e1e4c8547ba4a4f4731a89a6a8b84e6c58bfcc395d4adf153adcb07a4a5588a3e95f3c8c39b12531cb2ff393ea6745d4486c176855fb0a0617a48a574e9c5c847c15183ca9192330a988544f02ef871bbe1a23f73933bb160441e69a97e6abf7b3a1ac0e27c8439962ce224d071b3adc892a5ed068c365803833a73ba15c074f5c55676bfdb2df9c6f715ba8ab7c2ab95569c3c10764a78c830be36759fca2c98e48983634f82dce8ff84d560663a6b5a1eb6d80bbf505b2704a7df39cdfbb3a9080eae2b452df15ed7f9e6d80738b3e93c7d31eaff9951de81daf7056542c774fdb263c9c8b77ec0e86f0ad11058aaeb512a3020059e524060657366f40c264a0f7d562eb9a02989c3e3899d5e99bc1619ca45024b5e902c6b9db2f116c5e4b2e3cfb57c5e28e4f11d6674ce737d736b197710752100b75b12cd723d039167e44d13bb183c19b12b823dc1f0a1e134751205e73d782ff758720581b312b2706ae6bb16ab49f88c050201000b00000027000000280000000000000008010100080000002900000008000000e0010000a000000006030100130000001d000000280000002a00000000000000010101002a0000002b000000f11200000500000001000000010000000100000001000000000000000000000001000000020000000000010104000000880000001e0aacbf4d09ddefcc02c61b8e3619a4bb2d55b13d677cf54322a0673f62fc16999c00d93bab8c24732d51384034a26e1622ba5b734efec58fe5c6582eb20f1b0970a097b983ae49c8567a974467548791f0d314199aff10f24d281b2f6eb3400edba7506266a5c0f379080a95aa7b6208fd7f4fdd44b5704d771b45cd91aac963acf20fc236cd6a11f05e3b24c9deedc72567150885ada22da2d6467270000c35044f18712e13e51ddbcfcc5785fc5af4970671a5d4ae1dd0f2b14740497751fa5c3cc69f13313f3e11a5dc66391e884b23003d04f3bb473450ace9086748571b9ffc956e42665a4b0d520caa47ebb0350b4dc8ecf9d45ce09284e98e89881163489dbc574773e06a2b66130d21548b8b16fe1e8f36e143ba3d2d25d051d796cd855aabd99864d2fbca65769180d5c0d361626c5229ed776070aa96da07f93a4fed9ea67215f80a8848e79f421365b4ba8282cd3ae31d7d46124c0b2709da4f1c62dd5e39a9370b9be1246161a918fc403d9d5addc9ec95976c1f33db103fd864171b580736acde95233634dca46c3ce5a0d8128c916bc91e37286b32fe1280979288861c22bb48dcba5601cda44703cd3aa6843ecc2542ff2cd85d166b3e79b1d4b5fb884e509c5fc5efd71af7a7eb80615953220d36a35adcd885c720f19487a957ebbc9d910ab57361b3d3b4c6e6248cdd11c96e849a78a7765ca4f13f8030bcf9dfd72988f2cd2984f3e3ff4c9fb4e04b8a2f925d5fb746de3b4f18ddf449590015408a31f9a0d1858d50095b5c55708b922a49c0e4164147f81dbe964d8c0f06d63772ab2804c468d80222239a8f98ae66b6cb8a13dc780eb16acdd5a46cc8f3dd171d9ecf09bcee015236d311b764ee03e54ac5a1c9e9451510c5fccb1dd250dd02b10ed7283315c4bff3d9b77d13fe62b97e906320c04c73783660e4e5a9558ce406987133d9716c4ab6343fe7b90ea9c7fa4a1126fefc9321e16e04a6ba29ac99bd5948272411f3b6e74cedf6410adfe5fdc45d031bd6cfc743fe563b96e3df79938fbc0ae9c2d7d613a51a103df1939739c6f7f648d318148ab220e46a6be5b67c44140f7d3de581589d45ae9ac4b5fb204db365d2b11cb1c0c2b2e373a90cdf8ed079942b5babcc84df9471e9bc601a131f94d91846dc2d7b3590667ff397c7a3086ff7a81213802b581a166e1371682962e051823e1ca50c05a985af25c086f2b7c68a911ec3bf17f247452a8621004d1d283157b246544b7797b18b08cdd2b16c3d4884e822e72b7ea28baaa03aa693826dbbaff6690df806cb3c88038d490083f8568a69cd3ac7e79c48e4f2b9388b1aad6e88f44d3e74d45de7aa06550b4185336b8db1d3ba98713a7f79b8235f1d726a88985cc826e5c8158bc6a7596dcf251ad61eb864c1ba2dd500f6e23e274019f0e7763a0b8c3510cf293c9ebfae37d6ecbe68614e1acefd7d0b836c73931ebfcb2b16eaee99c7e32c6a2b34167e336b601091d84e94b2578e71d686ec5f5c4bc6ad6099014d5c632e29fe1f83034a38f3a7b984232ef0b654638d1bc6356e23efbca8a52b9bd26843d4490675cb247050d63811973f2c85fff167e0e0dd11018ad84081826b95ede0172dd612e3b45984601491d6d1331bbf9307e7408b7ecdedbf44dc817961c5290ff5b05a18a4b8e1e69fa09722ed3a359b7f06740c4f4ce73ce7e1e8a6a74ca52dc21fde2a7ce13d969c921eacd410de2456340fca41d6f07b654bfb41b1303a8219edb74963c6aef14c1be3d61dabe9c1bbe846b8f9f0f29e095ee12f814643303b73d22724f625ea3e787b39ff18851a7aabf809c13be7f479f4bf7e2a6ebe843afe9a88f86a8ebd7ff871f6a59cb508d6554e94cb0f7fbecf8f987540e34a380150797505696a48182931f1602b82e88c86909eec56ce986366be573c901202470c2fa9f4d5874b87e2f43a35567de0f00c6a0721f7b09d3ac603c7c9f2def795256057c791928409e35d0a17a5e8c162f43f8c0970b571aba7380327a13df46945ad2eb95ce101cddceaf4b47a3becfbde61e6c3a56a0bd49e5767c1b02c8231c60e315d4b557f3e04b698ab7aa416347563d0fd205372168c5ab1314db8c4ba477442350df7a426654ef7c1d372debd48a3b8b96839e25ab9cd054a2a94084e24867b8987524cfd30048e51f70d64a3841d7c5d3d8c2d25c1e6187d6b7ccc2388b2aabeffff8451f3cfa48206392c14337b344f241460a059b214d93ab7f6857418bccb4e8b4927e7d7e14c90a4927037a1ad57c7c822fa330dd4f6b51f5082911c27db272552ef8958745a36292489f996bab31d0383529a7af375ff0e061c413e8892d42a1b371974fe4fc88ebb9036facbe49250feaa4a960a7659e4ca3740a677436074d60e4d9eb2a27d788db29631f02ab254269c202cf3187580ea406adce75a7d242daca9cd138a32931b85694c5a0690290888948a6f52a1d919d9f44c95eb0ea17a568cb395a2af53a95caee19ae815e227217cc3e427040426c999709adee5a11e0da574d97947ab437aba31f4be9898c57f0eec661d69fe6bbfdc7ab6471abde3a98c3417502f7afd6b59735f8f3196860ea677a77d1aacf1291bb297114d3e67b817f99ee91713e51102b3d801436e1e533a046cc7a793d0d558a68d9f7fe742bd1f3df0410ca95454efc9e31e69ef1dbbbb7159191f78c4022ca764040cdff65ac49c755f7b663e2a98a1958a5fd8f1d71062eacf3e3ab725699804d74d4b25b4d2bff0399266fcdbccacab7ffb8f8bb1c9e7b4f836b0877aabc87f8fbea6086e6b785b4aa5785cc0dfdd87501381c01eae3717426c3800074c1c09b80c69e8a3746777e89493e8c451188ebbb42b49254697b92e953f9bac5c58f567ef05d0a34b9a9e7bdbd874f2e4ff78a3d2d052d8fe52124f5f45bc9d96b04afabb85152b41793ad733b9244b970d96c1879acdf153f0166816ec48aedb3402bec518df315c2412f3bf7e9accc6be8faeae4e5108dceb7404d894b2f4b265dfbfac13a1706ab3172bbd6b77360811328deb779850ad99c2fd61807b9fed41908b74788c2d721bbe89ddd36f5f79f035f2248d06f0310c90860cd54882c9fb04483fd0f1432d20c0cab81047eb0f529a80fbb695ed3407e0a39fec8adf7912332e8581e1a2014a4ae8eaf3ac7a36ef2f101270c0bc8255094ce72cd1b7e46f76567919efd343a36ad5aadefc73310f11483c9c5d1130acca61d5e8f179522d055f4501d6a91eb1f9fc7948cefd29cef9bf00b40969d1be7ce6ed7cc46cfe71e5e7f49c32cb8c7376bffbd9de501a9e3d722b885cf024d74bc05819de49a72e0c4be72c29db3dccee08bf36993b757e89f556e7ac17eaec284cb5ad7b1dbfa3baeb0d105768ff0b9314bee0545974196a349e4d64818f7042266936c5084381e5592f5e153f7ab75af744ca9e54639c4dda11dd44165352161120dc8a3657abff593984e81c8f14376eb8ea24a7c28afa02378f1c032b00688f05d620477a3ef8de01bd70058d9ccb89f340786b9af63747b51516501dc02fe9766e64ace4419fb67438d85f30f19a46de2e8d088234659c82a78eff89b0fb0fbfa0120e181e73e8bd8a6401bd2553de4294589e2b2886a8eb80be90a3bb8713cc0ac8fc8b0110479147d5dde37c4b1e0e448833ee07afe959387258639d54a867565671227aac9e81b3dab7f38ff72dc0d58b011deec95f0d9ecd760385c3622cc3619fe49eca5233f20b2158de5a60b865fcf0587ed39e5002ff0eefb03346eb77e60958e85e5cfff26fcc1d31086b09d09e21d0e652777bfc484cca665b480843dbeeb5f67c9095a8652635d81b8a2db73270acd6e10adbbef9956580de04a9adb2e9db05c2f8eb941b75a42f7ec47bf1cacbad33852727eced98a1c4f01e8c971060a547fe6d4575d262b07ed58a568db4ce237185f0572a220b6c185f781bb33da525dc3f9d9567cfaac7a328c0b42f3319fd36be30e1c738c5c10345400a6ff781c50a8a5cc8b4bc6f1aed4403d310feb481897ff53b2b8b7fcf036e99d22d5078dbdefa3e356034e9cf886829e8e6e4c118b4ee332f771e98b21e725ea88bb1d561959689fba96bd981a09cfa5bed8eaa22499890981bf1f6eb70cabe56a31a8f4c952b6feb6c0917e47fe08e5d8e794c6a12fd5eba5524ae7ae7806fbee63e01403a4c1daa0181eb6476301a99c5fe1b1ee67f8ac86e40c7129d457bdb07f8066eb2b633fda8176dfec695acf71904d5d9c9e1690b3cd779ba27125294f163e20d37052148e572427ecea5267c5bc4f1f88dd08e89b3660b8a137aebfeaf474b429eabcc61d56510a6188bd849bfdb8e7d16968caea2d621768580547e002adfdcdb63f98566247ee3bc9a930671aa74d91a415c23d72b578311503599ab77a384ea5fa0c4cdb41a9527c9e47f7cfe7324696f9615253a80b05c8a409e43f5c68e5701e33fcc7c4169221f0de9992393a34c63fb9aa73cded6b257954433409c0e1570303cd28181c9dae4f13b9fdf5aae30126ca5a0cda7f4b982d9ad03efbc18cc6e86eb721a2d8c8ed2e2f5d512e3e8089c5689e18b5460129cb1a4a1390d54c1fb8d4f716b56ebcf5a427501d70df82986135b32b95a23559a270ea94f0dff7dbd7a0090c262a0cf054c1c61dbd0e92004c5282369467d5299929356dbf5ff1973b63566346a8f9451c96f1eda7dde0e92c22975658276c2aa96d6e4fcf59a8e716b01831fa8ef3339f1b8020b42a5527851ee4476027a657d400582a711de8f69f264a2a4f697f44d8ed050febc98547563654e2ca8a7259b7be997f805585a6ee622b8967ab88d03d0645d6f312a3eccafabcbaba12f9480269fde9a6e54c5e212dbbc1498ddbdcb1d29e253444449d945e3aeb1255d8074784c05d1413c1963ae62a6b1b291c24cc10fd1702b29974e2abb3c429bab283d256a8df86511720e0ffc205987ca10ea946e1483c6b5c6ada8c0662520e44034a6ab8cc053905c3b6984a7cc63be73b5a4641107d5cc6f338dcfa0bf991d8766d25f4852699e2473c882eca13a1b8694419e5a223df464c03d385c37cddfc4415dba89d8a5e5fe2e2e532e361dc54d119c78888fe50503149049f651b08636d6dc16c5e697e16401367ca13781e6039d27b9d7780405dd44102e6ddac899fbfc0ac61f44a7de1172eb9903f1fce0843e5820d0f37139dbe3b92e5008220cbf5bd5327ae1f705ab309b27810de52fac6ec55dac465e94ccd3c4b7ba73e5bfba847fcfc44254b084b52988c91c3df20524b3f107f6775b5449d96a709b5222db0a0e826b2b7ccc584acebbdc2b9c4f0f9d4ed674250dfa0193d97767200c1db82484c5d9afdbd4df89f3e8853ab3f7a025a892b31f8603099bfdf06fcc3785d22725962b01d56817ff152b6f5e5238bc7dd140a402a5596045a9017dffd43889a4c5b7dd9f2cde63ce1dddd1673e454c2ee3b8a101ad96414072c94ac5222868d6fe55a960eaa71d6675c78e929610e71ceb76d28458ddca8401a25dd692a4d61071543e2151c20f5b074513f9f4bb1117a9ac298c5f320e70ad3bb3dfa6e6765e85b288b0919e1cd5d95a57a73d67b6ad0072bff3182ea5ebb1397bdfc02a007e83b84a83e6d052041b1b2fed4d69ab51d5e4ad5bd8213d20b69c867204d7c88f09cf9686508039375458b8a0628ed6d5a54c64ebe2aa748bbeeea83258207a31c635ff86056461a9a0e443d7d2ca1da73d1927ca9984d4e5653dd70ca4d465b53835c312a4ef60743a043e5346f12e1c88c28d4945f98905cd99ae9706e973bede8237899133787df0e8f94b783d1bc2c4ee755935e3dd5156b8c5f280dc7fad45c36d75d6ad712109b97406d187e03cbc5e4d55603861e817dd158533c56939f1928d7091b50e09af1589662a0a23f8d8664e93784ef5c30b00212b03832a3fa3face76f12597e004c88f239f1d82e2ff1d11a422f9b1c220175ed9cf6e2c6f029891087a50f2c304b0db4d4d133c8d30bad791a247e78d1fb174a3ed73b0d29f98ffaa9d98575a6067f64a986771fb5413c54865af76ab0e49c0b32fd37d922e3a8882f3f902f1b9c16a20632b1eec3331f88932ea84e643b7b48f51ed4f06329f57275310e75ff8abfc7da0881e6f439a00bed91d7492cebdc083def0076aa9fd354c33960b4050aaab5c3d9f4858b8f8c779ebeb785408aa707bf60c586b2e5998ccaa200dd4fd03db01a79e37b649f1af4f05d05616c581ed356392e21eb87864ea27d89e4304dab42fa5b75e0947129b9c8547e121e1f29fbaad312fb3183c3a4a28918e026a50aba8fa2d216df1ccca76b31534b545b168ef7ee63e17674a7c8927e14b78e0a2cdabefb7814627ac6a5ca30238c6feb80964db8a8be2ba13d06a6b0e6be65f89254c1ff1b437bbd0ce5fad1da914c7d592d2e0dfb77fab5b49da3bf2ad22a3d9de1d26e36c1b03e9ce7b2aabc40020f0e0084f0b4cd1bc151ae3b8939bd652e78960e58383e2c11209e3b9c88e45a27ae601a4ad2f50c906749dd8ced2dd8206b700f83ffd3c814846277c0c91d8c9ed4c45fb4f652a8c45f4f28d6db3cccd0268c0aef5923891ed569356856c315bd5c63da870e8748a094041069f7072bc9fff812809e766af7503c01e1433cdc0329beaf3037c8b2d1e7ab5de4614daf8e7f9d83a9aae476c2202798efb01c52220d21e994658c3a31c2a80917d345daf4da1e179d6c9409e70fcea5ef116e24cf821c1d5165eb1b07c9540010101002b0000002c0000009f0000000500000003000000030000000100000001000000010000000100000005000000020000000002010104040000c70100001bbb320000505a000088adffffca73000018c4ffffbb9af5c9b0ba0a7fc0c25f067351ea848def70a02430eb3ac7d55e1cbb4f4c3c9dda23fbbd567b4d1ce13e717b9e25ccc7546c69df70f6c1f4d42f6a1791fc94a04883a4d74df346f781804e1f453670d9f3ff8d75a7dd4a8965060201002c000000290000002d00000000000000010101002d0000002e000000c50200000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000300000001ba66360eafadba06f6d7b79912294b00376aa7c22b9bd1ff6b3a01c4d111358fefdbbc3feab76551dc376fef1e0c351840acb54b03e336d03995eb0e34bd35ad6ae7bf592bcdbe4e3f2bc5d9ca781817fed1701367b70ded9494ce902d01ca4c303c9d2372b96dd0711bb5b23bc02438268621c55cef57d2acdf39e3d6ed807f015ce95e82d7c86e79b70aa9ae56d27899bf38b8a66bb785a29cb9846bffb3468d9958fd21799992982bfd4e7b91e18c766c629584d291d14786d671a8728767a11d7f1e2631eeff2f6fff10dac119062fafb387ae3a54666ac92a0f73ed32f52b0a9d3984825bcac69f013d4e57de0b415308dceb5027aaca703fa77d227d3e330e9d63c718ca5e051448acc5426294678fcee1fcfc9ee1d6df9a44b0311450d9e43a7c85a71e2f7f428d7af04acfd7a5d96f349947a5fe9f11e51a3eb4290641cddc2def1ce12e0c2de11c703198772529626f3e5727fff0c699ec93d2ce96a8e6d16e86677fd10dab021162b5d85bb572e52713da47b2bc6e9312c9ef032a6f9a99719d32ae3dee968f5d04ca170dbd0912542f7b80540a7ce98a4ff531fa3abe48bfcb12a2536203c9d03e445d8fabf0cab956fddc2546044dce2982d513e2adbd0ff8a0b877524bfe631395c446c7a7d14be9ab57760ff1cbeced42f2409fd3073b7b454ac9f7c4d67874a8698944928a3d03bb8a083aee29fa5c71b3beb6bd7e2541d1d2ecf46ce4c68d7f340b436c7f80941971c9f43755ed37fe04b822feaf526b51c2c885b332efca2ba47f7fdbaad39f6d08d6f84936ade63004a865491806c3b458103257425b13b3ab18ce15c546c48f0ff1f556c9191ef244a8bc34d667f61505a39cc63a803249fb7c82b9a0e437f03911476cf08306715a5d9c6f07f1b11507414b61d792fba0b2e2139dcfd930c0101002e0000002f00000000000000010101002f00000030000000390000000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001c41919935831f1a840c010100300000003100000000000000010101003100000032000000b1020000a000000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001db58dda4b276675aee2fcfc14d0cdb25fa669422e723cb11afb921468a3c57eb3262c8e942e359d891d1b8619722e16167ca256323976526e0a5626f58436e3448b681de0fa9776b678bdb035b651da0be7753ec25042395223e8172a9c8822e4d8a94d876cee8dd37ddc450bfd9e132ff9ce98b34fdc39179f49fedd8b91fb0daf32bc2a42fcc99b1dfd43e255e31656523dec6bffb299f06138805fe3aa207768398ec07738535e1eec0b75b03802f3b2978e066c0e47392fcaf467e7149c87b6f1b36a63976e27ab6c9e9f71dd061aeeb65b1c5354b3ad614ee7bdef1e9b8f4843b92a284b6725c86391071db842c8ed921cde96e1f33fc34e7dcb731bae7dd6b4c1291dd9e7174b83bda551b598c7be70f5cba15ee0a6273a06e519e590b3f52aae86a2cbc7cabf75f85c21e275ddb1ea0396886d184ed8e2665334f13e21c7ef88bb4718e4919f68e2fe394d28f7ec198f4a28fd3eab279a63751c7ff4beea6767b8943be822890fae0064edfbcb673f2cb1f2cb84041bfecf4460dbff471dfe55191de3e925dc63e6d6701b2001d151a7edb843d9c2dd374e6300f48895d26960b4aad02de730728d995ad4c5f55e864c81c8673a54e5ec4f91099f0b3a95fff464dc292a73387de1ae95a2b67aa568fbc9b840a14b5f7a86ee3878762361a6332c91200938986919ac4cf67b1de6507d29c2073e1de2d21c2300482b85333608a413993f23f42d34b3c6b4e1b68f4f3e04b97f22ca45d1ba8e400a2aa187bfd77aafe01ce470b1f002c1322cfe5c2efc9570ac6e3b845e45ba6f5b20719fe4843f0f099c60d7195adf8058ce502a6f0b7bc98f86fe8562b8243d0c7d9a4343f071e7ee319116d22fff796c8e6665d67c2e404d807e4697c8d0a4f9cd59050201000c00000032000000330000000000000016040100130000001d0000002800000033000000340000000400000000030102","id":"lower_jpegai/jpegai/rec_y/range/5","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"outputs":[{"data":["12003","-32047","12625","-33852","13362","21067","21772","19170","8432","-36319","2859","-33521","10821","22471","13217","24895","-36884","-41747","-40597","-39219","-45719","31428","-47886","32221","-34127","-37366","-33989","-38922","-48999","29707","-54573","31013","33252","51172","28323","55072","29137","32774","25181","31904","31392","53462","35276","53268","30361","32321","25820","31613","9791","-28276","9561","-27151","-35680","-32041","-32761","-38610","14908","-25610","16466","-31723","-38538","-39186","-38720","-42196","2370","-31858","1661","-33162","48498","66187","46504","63087","4592","-32486","-703","-32132","47423","62946","47783","59891","-29355","63113","-32565","61807","-38631","-52807","-33444","-51341","-31409","58111","-35164","62305","-34852","-57249","-33825","-55844","-39642","-26909","-40660","-25461","-4349","-1212","-2539","-2430","-36349","-28463","-39802","-31997","-9699","3297","-5567","-5193","45824","-10402","42448","-13032","-47841","-2994","-49690","-5010","44716","-8036","47220","-11283","-47415","47","-46144","-941","-27269","18227","-29965","19736","-12884","-40013","-10596","-37752","-28169","15789","-26255","19983","-13510","-39009","-11695","-33506","52043","30860","51767","25283","5281","-42067","1192","-42326","47408","29017","47453","23699","8652","-43499","3206","-42686","-22109","-9629","-16904","-6033","-24952","-64383","-25158","-64081","-24122","-11820","-18946","-5049","-31900","-59500","-26173","-65445","43090","14629","49332","12586","-10864","-50288","-11943","-54769","44462","14358","49709","12496","-17321","-53319","-17492","-57028","62215","35926","60491","32518","42461","14985","38300","14191","58167","32075","58475","34379","43610","8163","46202","14645","31730","28006","34176","30693","67839","61738","72131","65281","27599","24482","33318","22930","66576","62729","67080","62927","-64300","-3693","-64526","-10466","27917","17674","29411","16419","-70001","-5199","-63699","-6974","24933","14146","26359","10766","63276","-27705","62653","-28139","-42080","7080","-37692","2508","56851","-27621","59067","-30800","-43355","5404","-40968","5352","-23767","25760","-30228","26318","-22226","18985","-24442","19896","-28832","26785","-29217","30821","-21357","22644","-20324","25507","49566","22054","46950","28880","-21950","28343","-29593","28553","49406","18742","45720","21718","-28785","26419","-33563","28355","2691","-58027","7671","-54977","3811","55803","-1007","59188","7473","-56191","8610","-56403","671","54083","1198","50883","32731","11366","29022","16248","-50114","-50349","-51028","-49611","33788","14509","32225","18768","-50182","-56516","-50527","-53086","-47578","18429","-45963","16406","14520","-38048","15531","-32652","-46922","23450","-43815","17300","11454","-33042","12898","-30026","36751","-53684","34710","-54366","40660","-15453","41367","-10441","39176","-49622","42446","-51972","41268","-18467","44274","-16498","51600","57558","54605","63222","23966","35111","21878","33623","45715","63225","51289","60464","19199","34402","16565","34121","20511","-6475","13586","-1783","-23359","35062","-18825","36872","13181","-3709","10443","-2909","-25760","35282","-21390","37265","-56954","36217","-60618","36764","49681","35723","53450","31381","-60484","30610","-59884","29385","46996","34266","47070","34702","-40730","-64176","-33508","-62931","62197","42017","58648","41004","-37001","-63578","-32502","-59371","62255","47612","55301","49938","47138","30003","43351","37265","-67843","37361","-65572","38224","45795","31210","48709","31675","-66396","37672","-64918","46823","56009","6699","53143","8153","-44368","16458","-46307","18494","58582","4510","55810","5540","-46644","23368","-46520","21715","54637","39925","54615","47678","-62465","-57925","-63760","-56212","53735","43068","51991","53571","-56836","-57756","-59882","-56115","-17822","-4544","-13015","-8786","-53480","-39051","-50355","-43366","-18189","-321","-14575","-3762","-50432","-41890","-47244","-43335","15158","-31914","12465","-36662","51792","16101","46029","17063","12757","-35915","13959","-38177","53826","21668","55001","17511","-1053","49595","2832","52271","-61913","64872","-66817","61760","-4384","49983","-2857","47344","-59270","64479","-64104","59227","-51367","8746","-52622","8062","46883","-17470","43526","-12254","-47130","5694","-48003","9053","56643","-16675","48800","-14460","25015","-3902","22790","-1960","-4498","-47437","-10570","-47287","26569","-7322","19958","-407","-5279","-43164","-9287","-45800","-34564","-19653","-29439","-20888","-1243","55446","-1034","59808","-29858","-25416","-27188","-29361","-982","58913","3785","55679","9904","-37939","14492","-39820","11927","-53810","14927","-48304","10873","-36829","10467","-36429","5167","-46022","11527","-45029","21343","-24242","17976","-18643","-19779","53731","-20256","43878","20693","-24208","16264","-22759","-18270","48186","-20413","43817","-13035","17514","-14063","21687","39995","-8495","40912","-9687","-9614","25136","-13940","20944","44431","-7411","43537","-12391","-33916","4948","-35702","11504","5319","1659","5091","2006","-32230","6851","-35396","8222","5660","-1031","646","-2660","-22899","-66097","-22841","-63331","-53625","-12033","-60679","-13154","-21067","-65233","-21514","-61135","-55542","-10979","-60988","-9909","3411","20674","2916","18601","-59176","37741","-59695","31617","-1464","24322","2675","18250","-58054","41877","-60570","40569","16513","24325","17120","21737","-8165","-60963","-10188","-66346","19638","26228","18253","22768","-6544","-62947","-12420","-65737","-61849","35659","-60520","41485","3552","41217","-861","46622","-66993","38934","-62314","39426","-4713","35013","-4013","41114","-28146","37094","-27989","36065","-20421","-22520","-25239","-20262","-38112","31645","-33195","31768","-20707","-23577","-19780","-17414","8174","53179","12711","54781","-34325","3540","-34685","-1149","10446","47025","9376","47921","-28009","4124","-31358","979","27366","58137","29696","55661","21260","-20760","23880","-19143","32004","59367","33986","54915","18134","-17235","19946","-14549","49341","-30","47303","814","40242","13914","40713","11220","41451","-791","43125","6259","44481","10222","39791","12287","-56834","-19395","-54395","-14581","50797","-50628","49823","-49337","-57497","-21744","-52606","-21033","48984","-45186","49690","-52258","2060","44837","4484","45440","65432","-42371","68211","-48151","-2686","39230","1123","43025","66202","-42395","69983","-51135","-9513","-10712","-9502","-12916","-31287","-41916","-34005","-44093","-13497","-11401","-12216","-12500","-36498","-46996","-38156","-48435","54863","30506","50416","23961","17622","-53536","14217","-55184","52052","30019","47743","26273","12979","-52605","11594","-52850","26390","39343","22955","44404","61812","-50359","62059","-51158","27503","39453","25548","46668","58753","-51382","62085","-46530","-46391","25024","-42222","29284","-38852","-29964","-40881","-35754","-44034","27853","-43334","27228","-34634","-29524","-35783","-35586","-52156","23082","-45159","19710","35998","51442","31775","46478","-51910","25323","-45779","17531","31623","54715","23518","50747","-67005","25199","-64045","22439","5616","22846","8159","23210","-62351","22684","-62765","18129","5275","23975","11721","21485","-44589","58464","-40028","56745","-3662","10137","-9342","13306","-48253","55779","-46117","58992","-3576","9424","-10169","7503","15755","-52722","21900","-50837","45142","-31361","44479","-33082","20562","-53390","22022","-50427","51931","-34901","46896","-37471","33500","6068","35579","3693","44513","-22604","40260","-29399","42683","12891","38898","10045","46037","-29719","46603","-29605","61943","-59434","62878","-55683","-41599","27679","-41317","27653","58211","-58308","55965","-56741","-46346","35379","-46012","31801","-50796","29835","-51905","29330","-46832","13026","-43864","16795","-52236","27855","-57530","28523","-49546","17841","-47009","21038","-7122","-55769","-9274","-54145","-28015","-54262","-30885","-53871","-7203","-60786","-11992","-56323","-25690","-64866","-30173","-60528","-23530","-39633","-18721","-39206","31847","64700","28336","63991","-20633","-35611","-22839","-36216","32800","62866","29713","62813","43894","55497","44622","54320","39401","30918","39359","27594","40484","54028","44766","58620","38402","26617","33630","25280","54231","46623","50545","42053","4594","21754","7186","22040","58255","47484","56257","38957","5326","20895","-412","21627","8217","-58843","11133","-57082","3537","-52970","8996","-54186","10208","-60655","11690","-59297","2639","-51961","8602","-52489","6536","46199","3201","39405","-24325","-53042","-24554","-53567","4341","42645","-2126","34272","-28656","-46787","-29336","-49820","-6244","-759","-2530","3038","-27011","-29066","-23202","-27540","-7622","-2266","-2731","-45","-24420","-29237","-26246","-30648","-70216","44962","-62465","46689","-53864","11415","-52829","15045","-70244","43903","-61792","37528","-50645","14955","-50497","13554","54234","-27675","55146","-26197","-4728","-52012","-4001","-53575","55403","-24252","52620","-17852","1713","-48319","-5042","-49437","-57338","-21245","-52326","-17289","2688","-41832","8121","-44608","-48054","-19055","-52800","-16209","2737","-38705","5856","-39534","-36820","32482","-36506","27603","18435","-67804","19995","-60888","-36323","30496","-43291","29963","13633","-61141","15063","-59617","-62501","10631","-62285","9896","-7823","-38241","-7502","-34710","-58072","13179","-63676","10798","-9381","-36112","-6382","-33202","29338","60846","27688","58995","16488","12716","15393","18595","28930","59486","25018","54142","9212","11492","10248","16555","6145","-41494","9189","-36816","43919","48200","47389","41574","5776","-39340","7630","-40398","42204","50357","39673","47287","50217","-22250","49966","-14824","-31650","-24168","-28339","-20791","54565","-21112","55450","-20107","-33457","-22965","-27492","-24655","4341","-45242","3627","-43262","-56877","-58560","-54998","-58708","792","-45661","3014","-45407","-62841","-60772","-59176","-63575","-44172","-13956","-39899","-11160","64554","1096","63420","930","-45104","-18878","-46286","-19009","62453","-2725","63304","-139","-30340","31878","-28890","32997","-34968","-50427","-33846","-53561","-25708","30342","-28007","35216","-31873","-50964","-32422","-56325","12525","3546","13480","1301","21877","-39134","24816","-44255","9997","8427","8077","4244","25963","-40877","27884","-46738","-18970","-59609","-15566","-57588","19896","-17603","26863","-15655","-15829","-65153","-11550","-60269","26589","-18073","32876","-17255","-33710","-2","-39019","-802","33854","-32014","38900","-31652","-34696","-3130","-39664","-2438","41200","-36948","40415","-31613","-46283","4730","-45052","4095","63032","45592","61361","47685","-46594","7186","-45781","8261","59491","44287","52331","40827","35901","28273","33244","29408","60402","50537","59917","49427","28424","36681","29433","28911","60605","52691","60403","51819","35671","41924","38960","38628","-35382","30202","-30371","29787","37382","42347","41760","37413","-28558","32237","-25452","29463","-48159","-21775","-48638","-21789","-36661","-24958","-35235","-22509","-46589","-19134","-44554","-19096","-43738","-22748","-43454","-25945","43993","-37308","42948","-31682","40519","-21403","42961","-21300","40198","-36004","42814","-28968","40399","-21360","40839","-21151","45082","52533","48088","51771","26576","52458","31325","56981","43725","53159","45719","53809","28501","40561","30209","48656","-21994","-43467","-22589","-44396","-67149","16605","-57614","16516","-23731","-40740","-25075","-40218","-63555","16436","-56328","18736","4148","23926","5595","26227","53670","34092","51378","36653","5102","30820","4911","31462","52537","30551","52753","29480","-56393","21074","-61593","18741","17108","-14657","17383","-15659","-56819","26311","-60707","20296","14495","-7606","14151","-10097","-19704","-60948","-20684","-66973","-36938","-23470","-39002","-26250","-15536","-63091","-16488","-65210","-43642","-24508","-40620","-26845","37396","11642","38288","7643","67753","-29488","65100","-29316","37092","11987","39366","10834","67058","-22197","67982","-25579","-14469","-34704","-11337","-37576","21144","1048","26599","4207","-11737","-37016","-9075","-34450","25797","2066","27297","1996","-57342","-39114","-65187","-40667","36222","181","40655","3504","-58852","-44774","-67782","-45872","40088","6095","39886","4706","38736","39160","33658","42387","-9813","9515","-12692","8918","38299","41442","35419","35338","-13476","13660","-18258","15554","-16116","10801","-21302","14515","16626","-3020","16464","-5695","-17977","14102","-20441","10146","14501","-415","13823","-5646"],"shape":["96","4","4"]}]},"inputs":[{"data":["-28","32","-31","32","-3","32","-31","-20","-17","-31","30","-31","-17","0","-31","-31","-7","-26","16","-23","-31","-11","-31","32","-31","32","-31","29","-31","28","15","0","-31","-31","-19","-3","-27","-31","-31","32","32","18","32","0","32","-8","-30","6","5","32","-10","0","14","31","-31","-31","-3","0","-31","32","-31","-20","32","32","-31","-31","-31","-27","32","-31","1","-31","32","10","32","-17","0","-2","-5","-31","0","28","32","-10","-16","17","-31","-7","-31","0","32","32","27","-31","28","-31"],"shape":["96","1","1"]},{"data":["-300","-300","300","0","209","0","-126","-300","-300","0","-300","300","0","99","120","-300","201","300","300","65","-68","-300","230","260","28","0","-300","53","-300","300","-300","-300","300","-300","-25","166","-187","-284","-300","281","300","238","300","48","0","300","300","300","300","93","100","90","300","-300","300","127","300","0","183","-300","300","96","230","-214","300","299","-188","29","0","300","-300","0","-109","241","-270","300","300","0","0","45","300","300","-230","266","-5","269","-300","0","32","270","-300","-300","-33","-300","-300","-300","274","-131","-300","300","0","-153","-300","-178","300","-132","-300","0","266","107","-47","300","144","238","203","-300","-59","300","0","243","81","38","101","108","0","-300","300","-300","170","300","-300","-300","300","-300","286","0","-300","-300","0","-202","300","-300","124","-18","300","300","-32","86","110","-54","172","-300","0","72","-300","-300","-300","-39","-300","211","-300","-300","300","-300","263","300","300","-300","-172","-300","300","300","-300","-233","146","-300","0","-300","11","-252","0","-300","-300","225","300","36","35","300","0","-300","300","-300","-300","-300","-300","300","-300","22","-22","0","300","-300","300","0","300","300","0","0","300","101","-300","-69","-300","-126","300","138","-215","184","243","-231","-300","300","62","-300","300","-300","300","207","-300","300","20","74","300","-300","-144","164","300","-204","223","-300","0","-300","-300","-300","-300","300","-12","-300","-300","-300","0","300","7","-9","300","-300","300","56","-300","0","-300","-134","300","300","-41","-207","300","300","-300","-300","221","217","-133","37","206","-300","137","-300","231","248","95","-300","-250","-300","300","300","-300","300","0","-300","-222","202","-271","-84","10","-75","-300","-69","137","-202","48","-24","-236","-300","-286","-34","-300","300","300","-300","300","-83","44","-300","91","-300","-59","300","162","253","0","263","-300","143","-300","-131","-281","0","300","-213","300","-300","135","-194","-300","-65","121","-201","-300","-126","300","-300","69","-217","300","20","-300","300","-300","-163","0","-14","-300","0","-265","234","300","-300","300","181","-117","300","300","-300","300","-142","-300","-5","-300","0","300","300","-131","83","300","26","-265","300","-261","-265","131","-300","274","300","-71","12","-300","-300","-130","-92","-300","-300","300","152","-152","-144","0","0","-300","-300","-300","254","-253","183","-300","300","-259","-122","0","300","-300","0","-300","89","-42","-300","8","-300","300","-300","0","108","0","-300","-300","-25","215","266","228","-300","9","300","300","-283","-151","0","0","-300","-300","-300","-104","300","256","111","-300","2","-292","300","-9","-300","300","300","-277","-105","-300","264","-300","-299","-300","300","300","-180","0","0","-300","300","300","293","-300","-61","-300","-300","181","-125","-300","-300","300","214","300","0","-300","-234","-300","-300","20","-300","-300","27","-300","-174","-38","-300","0","-34","-300","-300","0","300","300","-300","-60","300","253","300","300","20","114","278","136","29","300","300","300","-99","300","215","300","-300","233","13","300","-300","-300","-300","300","-101","-193","-168","215","-31","18","-300","251","0","300","8","300","-300","12","300","256","300","-300","258","-64","300","121","-300","119","-300","-300","300","300","-76","285","-300","0","119","282","300","-300","-285","-268","300","-300","300","-284","300","-300","286","-300","300","300","-300","-113","220","-300","85","182","43","-300","273","300","-300","-300","-300","-62","0","205","-300","-300","0","0","-35","30","-179","-145","300","300","300","-300","-168","206","300","-300","-271","-36","300","-300","-224","300","-233","123","-120","-300","0","-95","-233","-300","-300","-300","-300","-300","219","-300","300","160","300","300","-300","0","0","300","-300","-300","0","-300","-300","-300","-230","43","-11","-195","-300","-300","-150","142","-34","-255","292","300","300","-300","-300","0","300","0","0","50","186","-74","300","300","-300","60","0","-300","71","300","-186","-60","300","-259","215","-300","-300","300","-300","-154","0","0","-300","-169","-300","-300","-300","0","-300","-300","26","300","-187","255","0","-57","300","-188","275","300","58","112","-143","300","173","121","0","-300","0","-300","300","300","-300","182","-206","300","-300","-300","300","300","-300","246","300","300","142","292","300","121","300","-300","-300","300","155","-272","300","-244","-134","300","118","-189","-300","-300","117","-108","300","300","-300","-300","300","300","-300","300","-112","-300","-155","-300","300","0","-300","223","-49","-300","300","172","126","-300","300","-88","-254","0","0","0","300","188","194","0","-300","5","177","180","153","300","-244","87","300","235","186","300","300","-270","300","-300","300","207","300","-300","-105","0","300","-50","229","156","225","300","300","-108","300","290","300","178","0","0","256","300","-300","-243","30","300","-300","-300","-300","300","-300","-300","-300","216","-300","0","-275","300","169","300","277","243","93","0","169","300","-300","300","0","300","-300","300","210","300","260","173","300","-300","-300","300","-46","-300","-196","-300","0","-171","300","-84","294","-274","165","300","-300","-300","0","0","-240","48","300","-300","300","300","300","300","62","300","0","0","-300","300","0","300","300","300","62","-145","-300","-300","-300","56","-300","300","300","-300","0","-300","-234","-300","300","300","-32","300","252","-300","300","-300","300","-286","-300","0","300","-200","-300","300","-300","300","165","-95","-12","0","300","300","-247","-176","91","300","0","300","300","-204","173","-300","295","300","300","-300","-37","300","0","-273","-286","-210","190","146","-16","300","-300","300","-215","300","84","-91","300","-153","62","76","300","300","0","-99","300","0","84","-300","300","-300","-300","11","-215","82","0","-184","-296","234","0","300","0","97","-167","-300","0","0","36","-175","300","300","-242","79","-34","169","192","-7","-300","300","-167","300","39","300","192","-300","-286","-300","300","300","0","-300","-58","300","-149","126","300","165","-68","-300","227","97","4","300","-300","300","-22","-300","-300","-300","235","-284","217","-300","300","300","-22","117","300","-300","0","-300","-266","-81","23","-300","-300","-80","300","134","-84","300","300","-300","-300","92","-102","160","300","-205","300","296","0","135","-300","0","300","-181","0","300","261","81","-300","300","-300","-300","-300","300","56","134","116","259","0","-300","0","294","300","-300","-300","57","0","-300","0","0","-222","2","90","300","-300","-300","-291","300","-83","300","300","-207","300","300","-300","-250","-300","-300","-51","-246","-300","-134","-300","-300","300","187","-300","4","300","159","300","0","-47","-280","300","0","0","0","-300","-300","178","300","300","300","259","53","0","300","-300","-300","300","0","-300","-300","300","300","300","70","300","-300","300","-300","-300","-15","300","300","-300","0","293","-281","-300","-136","0","0","-120","247","-267","-300","-297","-15","-300","0","-300","-300","300","-67","-300","161","-287","-300","-300","-300","239","212","300","-300","-112","-300","-300","-255","300","-300","300","-300","-20","0","300","300","-202","-300","-300","300","-300","0","300","300","0","-300","196","-300","300","300","300","-300","300","119","-300","300","300","300","-300","300","-15","45","219","-300","-288","-300","-129","0","-116","-37","300","0","0","269","0","300","300","300","-25","300","-207","0","300","300","156","233","-231","-300","-249","-37","300","282","300","-300","-225","-184","40","53","-193","149","192","-108","300","255","-300","300","300","-279","0","300","300","-283","300","231","286","300","-300","252","-107","-300","300","300","-19","0","-300","-265","0","-300","-300","193","-300","115","300","-300","-300","300","126","-137","300","-300","-300","-300","300","-180","215","-300","-93","-39","-300","300","0","300","-178","0","300","-300","0","212","0","-300","300","-57","0","-60","62","213","-300","0","300","300","300","300","300","-147","95","257","-300","300","0","300","-300","-300","8","-300","-300","232","300","-300","300","300","211","300","211","-160","-72","300","300","-277","-300","300","0","300","300","260","-300","-300","-300","-300","-122","-282","136","-116","300","104","-300","-300","-49","-7","-300","154","200","0","300","-57","-300","-300","-254","-142","-300","-300","300","300","300","283","-157","0","-279","0","-300","-168","-247","300","0","300","192","-192","-300","0","17","-300","-300","193","300","300","-165","300","-98","-300","300","-241","-300","300","-91","300","203","117","300","-103","-300","-300","-300","300","-300","-300","300","-210","-206","300","300","4","-300","113","-300","-216","-300","300","68","-300","300","-300","-300","-135","-300","-246","300","300","300","110","251","300","300","-300","-300","204","142","-269","-300","58","179","300","-300","-300","300","300","-300","279","300","-300","-110","-104","300","177","0","0","71","266","0","168","92","241","-300","-300","72","0","300","-300","0","192","300","-75","177","300","-300","300","-230","-300","0","0","237","300","-300","300","-191","-182","300","164","153","-300","0","-210","300","-149","-300","60","300","-300","-232","-219","-300","-300","-300","300","-300","0","31"],"shape":["96","4","4"]}],"scalars":[]},{"expect":{"outputs":[{"data":["12603","-31611","12625","-33552","13453","21067","22198","19231","9381","-35052","7519","-32967","9611","21996","18540","23303","9081","-35356","7219","-33567","9883","22327","17971","23310","8432","-36019","2859","-33821","11121","22072","13397","24895","-37213","-42347","-40597","-38984","-45951","32028","-48389","32261","-35092","-40612","-36544","-42572","-48656","28902","-52919","30877","-35092","-40041","-36257","-41972","-49256","29502","-53261","30802","-33930","-37569","-33443","-38975","-48399","29707","-54273","31015","33146","51772","28348","55206","29024","33353","25481","31323","29908","53493","32020","55027","31563","33401","27404","33984","29608","53493","32156","55009","31847","32822","27404","33968","31392","53450","34676","53520","30061","31721","25820","31294","9191","-28069","9694","-26941","-36204","-31741","-33361","-38437","10769","-26921","15400","-28791","-37872","-36715","-36008","-41732","11038","-26322","15579","-28772","-37680","-36252","-36308","-41564","14604","-25464","16283","-31200","-38600","-39582","-38950","-41914","2100","-32457","1842","-33170","48453","66118","47104","62787","5157","-33051","1113","-34157","47502","68417","46111","63418","5757","-33417","1251","-33857","46902","67981","46407","63418","4906","-32916","-133","-32732","47423","63028","48083","59546","-29655","62513","-32035","61241","-38626","-52776","-33444","-51641","-31593","61932","-35108","63997","-39862","-53768","-36424","-51619","-32193","61808","-35108","63997","-39562","-53686","-36079","-51492","-31441","57541","-35164","62305","-35119","-57249","-33825","-55265","-39616","-27076","-40119","-26061","-4049","-1359","-2539","-2552","-36171","-25781","-40592","-27959","-4564","2513","-1296","-2534","-36311","-25781","-40208","-27959","-4806","2794","-1331","-2234","-36667","-28331","-39662","-31697","-10265","3333","-5220","-5793","45872","-10422","42227","-12732","-48012","-3594","-49390","-5153","44449","-9118","44694","-15442","-47219","-950","-46650","-4091","44625","-9718","44659","-15796","-47474","-991","-46650","-4004","44335","-8374","46926","-11174","-47563","47","-46563","-941","-27670","17920","-29365","20336","-13184","-39519","-10882","-37452","-27937","15042","-28390","20161","-14788","-39729","-13416","-34045","-28537","14930","-28953","20281","-14996","-40329","-13850","-33898","-28169","15974","-26022","20060","-14110","-39009","-11708","-33488","52043","30860","51549","25061","4871","-41792","720","-41761","53032","26437","52759","22025","5832","-43712","58","-42187","53032","26437","52674","22025","5802","-43412","-463","-41973","47585","28945","47753","24014","8652","-43531","3325","-42597","-22109","-9329","-17504","-5433","-25515","-64565","-25158","-63982","-22229","-11028","-17205","-4016","-26350","-63694","-24749","-66201","-22181","-10624","-16605","-4016","-26950","-63854","-25268","-66100","-23950","-11508","-19207","-5595","-31900","-59567","-26619","-65253","43390","15229","49321","12538","-10669","-49996","-11620","-54806","42809","12838","49666","9232","-12480","-53280","-12755","-58069","42809","13185","49881","9444","-12316","-52980","-13055","-57999","44462","14022","49375","12496","-17330","-53319","-17492","-56521","62215","36144","61091","32405","43061","15263","38622","14191","61243","32752","59508","33608","41665","10688","42316","15738","61253","32549","59808","33095","41965","10801","41716","16308","58167","32675","58350","34679","43509","8163","46502","14936","31730","28165","34776","31062","68439","61564","71748","65115","25299","29568","31550","28218","71152","60889","69837","66486","25599","29268","32103","28218","71189","60630","69837","65886","27659","24071","32775","22861","67049","62340","67257","63227","-64900","-3693","-64826","-10484","27917","17374","29341","16045","-68703","-3402","-65948","-9518","25978","18086","29498","14827","-68403","-3209","-65745","-10118","25595","18086","29964","15008","-70001","-4875","-63855","-6899","24933","14650","26072","10766","63545","-27705","62962","-27839","-41780","6480","-37686","3108","57419","-24086","58726","-27969","-39939","7268","-37021","2292","57456","-24386","58912","-28569","-40239","6718","-37192","2297","57451","-27621","59367","-31203","-43062","5413","-41035","5352","-24185","25441","-30228","26618","-21967","19342","-24442","19296","-25790","25932","-31552","28715","-23139","20600","-24534","25175","-25190","25995","-31552","28415","-23439","21096","-24632","25475","-28491","27004","-29217","30682","-21282","22944","-20845","25290","49999","22317","46744","29420","-22087","28343","-30124","28605","49429","18268","45180","25376","-27972","27389","-34701","28031","49493","18568","45321","24953","-27972","27989","-34636","27913","49611","18742","46270","21718","-29093","26099","-32963","28355","2691","-58027","7593","-55479","4125","56187","-717","59468","4870","-60336","10585","-57177","4218","53397","1452","53587","5040","-60089","11185","-57130","4218","53397","2052","53363","8073","-56422","8748","-55901","923","54407","1343","51483","33317","11103","29484","16248","-50114","-49749","-51628","-49513","38203","14689","30607","17123","-52306","-53518","-52068","-51196","37603","14689","30607","16847","-51706","-53795","-52668","-51761","34044","14767","32414","19123","-50291","-56599","-50689","-53471","-47278","17975","-45561","16373","14837","-37917","15789","-32352","-50520","21562","-46108","17945","13091","-33233","15073","-30602","-50820","21262","-45858","17645","13202","-33488","15358","-31202","-47522","23511","-44415","17715","11019","-32584","13198","-29961","36425","-53183","35310","-54118","40060","-14853","41449","-9924","40088","-52828","41907","-52081","41947","-16499","43431","-13048","39788","-52754","41555","-51765","41952","-15899","43273","-12771","38843","-49519","42714","-51972","41544","-18004","43974","-16729","52127","57858","54870","63163","23966","35111","21278","33442","50815","61892","55925","64850","23642","34338","20004","34076","50875","62117","55925","65329","23803","34568","20304","33476","45764","62625","51135","60464","19199","34257","16565","33826","20511","-6751","13339","-1783","-23528","35219","-18825","36664","19720","-6428","14122","-3858","-25881","34213","-21871","36487","20020","-6428","14065","-3258","-25985","33854","-22123","36647","13146","-4309","11004","-2944","-26191","35282","-21364","37265","-57183","36205","-60618","36764","49811","35934","53551","31894","-62330","35340","-62082","33504","47777","33373","51004","31642","-61850","35940","-62315","32904","48077","32949","51158","31569","-60864","30199","-59432","29796","47202","34566","47393","34756","-40130","-64730","-33007","-63414","62716","41417","58844","40826","-37588","-63644","-29868","-58850","66537","44413","56709","46338","-37888","-63063","-30435","-58850","66441","44850","56768","45738","-36701","-63878","-31920","-59371","62265","47634","55262","49938","47430","30227","42751","37865","-67543","37553","-65872","38224","46551","28356","46104","33397","-68204","39361","-66769","43494","46400","28364","46037","32921","-68204","39361","-66718","43872","46326","31235","48794","31109","-66324","37672","-65227","46561","55409","7115","52994","7984","-44068","16897","-45968","19094","56897","2656","53865","4470","-49357","19370","-49942","18739","56897","2730","53704","4607","-49057","18770","-49942","18670","58986","4118","55768","5429","-46044","23202","-46528","21378","54346","40466","54546","47678","-62206","-57811","-63551","-56476","50714","40431","50418","51564","-57785","-60534","-61236","-59128","50965","40431","50413","50983","-58131","-60534","-61660","-58848","54035","43067","52241","53469","-56836","-57589","-59882","-56415","-17822","-4544","-13482","-9379","-52880","-38986","-49770","-43366","-20138","-1748","-14850","-7261","-51684","-39740","-47665","-45485","-20419","-1148","-15342","-6661","-51684","-39270","-47534","-45315","-18082","104","-14453","-3391","-51032","-41986","-47832","-43035","15158","-31380","12545","-36455","51472","16101","46629","17158","13709","-31468","14485","-34290","53503","19204","51105","16548","13109","-31783","14674","-34590","53232","19504","51105","16699","12757","-35441","13871","-37672","53526","22002","55601","17732","-753","49336","2832","52786","-61997","64575","-67370","61529","-2906","48932","-519","47798","-59307","62692","-67269","60291","-3506","48932","-348","48398","-59307","62392","-67255","59691","-4384","49903","-2768","46766","-59406","64632","-64591","58837","-51967","9125","-52622","7547","46883","-17353","42993","-11967","-48958","6201","-50657","8104","51355","-18366","45268","-13252","-48967","5698","-50657","7738","51055","-18280","45803","-13252","-47221","5994","-47794","9053","56424","-16323","49293","-14592","25100","-3965","22472","-1360","-5049","-47318","-10649","-47595","27306","-6831","22812","-1848","-6460","-42974","-12308","-44886","27238","-6831","22812","-1657","-6439","-42912","-12847","-44809","26569","-6722","19646","-845","-5235","-43379","-8687","-46338","-34449","-20202","-29575","-20288","-1062","56012","-434","59680","-33174","-22883","-27330","-26714","-2460","57058","132","58744","-32874","-22781","-27930","-26714","-2594","56579","-468","58144","-30158","-25640","-27473","-29127","-929","59094","3566","55424","10253","-37354","15060","-40120","12492","-54042","15083","-48331","9972","-35532","13775","-35163","8399","-48714","15332","-45735","9868","-35399","14251","-35660","8750","-49314","15635","-45735","11473","-37415","10767","-36729","4567","-45916","11340","-45533","21832","-24027","17794","-18953","-19479","53158","-20556","44474","27880","-21940","18110","-17070","-16091","47047","-19237","39487","27659","-21340","18410","-17582","-16112","47209","-19537","39261","20693","-23919","16026","-22626","-18532","48684","-20413","43517","-12861","17586","-14186","21577","39840","-9032","40723","-9687","-11981","21625","-16923","21347","44750","-6047","41524","-7495","-11883","21605","-16923","20965","44519","-5729","41343","-7293","-9314","25604","-13856","20344","45031","-7229","43273","-12691","-33464","5192","-36302","11437","5165","1612","5691","2132","-32847","6057","-35552","12657","3722","548","1770","-267","-32910","5522","-35470","12882","3500","807","1916","-267","-31835","7384","-35017","8377","5960","-431","946","-3138","-22312","-66397","-23042","-63331","-53960","-11474","-60460","-12948","-23410","-65250","-21534","-59720","-48482","-16044","-56971","-14952","-23343","-64950","-21657","-60243","-48718","-16156","-57325","-15552","-21067","-64970","-21082","-60953","-54942","-10759","-60688","-9813","3560","20985","3411","19136","-58788","37894","-60137","31563","55","22618","2696","19228","-57910","40731","-61501","35403","-27","22526","2627","18628","-57910","40731","-61246","35403","-1509","23730","2090","17650","-57548","42084","-60270","40569","16730","24143","17260","21450","-8122","-60963","-10189","-66346","12782","28164","13403","23343","-5925","-63458","-10976","-68248","12245","28186","13545","23123","-6088","-63187","-10695","-67936","19578","26228","18253","22565","-6544","-62761","-12640","-65737","-61598","35667","-60520","41745","2952","41217","-407","46592","-66371","35738","-59940","39732","-933","37382","-3621","45551","-66100","35755","-60145","39432","-1149","37013","-3311","45851","-66693","38934","-62145","40026","-4713","35313","-3933","41114","-27546","36768","-28589","35952","-20376","-22820","-25182","-20862","-32042","35216","-27403","37590","-18950","-24282","-22082","-19395","-32642","34776","-27862","37590","-19550","-23982","-22682","-19395","-37624","31670","-33195","32010","-20857","-23734","-19874","-17287","7870","52879","13311","54663","-34325","3278","-35111","-571","9950","51204","13003","51487","-30905","5680","-35641","-286","9650","51504","13003","51685","-30746","5940","-35041","-886","9964","47260","9173","48521","-27709","3524","-31744","979","27420","57548","29595","55219","20669","-21358","23892","-19743","30783","59609","29294","55584","16606","-20046","20333","-16423","30429","60209","28994","55662","17151","-20205","19738","-16405","32315","59967","33428","54460","18406","-17535","19890","-14415","48866","152","47192","1068","40842","14092","40821","11220","46111","-2899","44631","1994","44060","10096","41854","8126","46166","-2821","44739","2188","44501","10041","41937","8149","41362","-791","43455","5747","44181","10822","39191","12099","-56234","-19205","-53795","-14801","50944","-50028","49900","-49530","-59465","-21236","-54500","-17729","47973","-48277","48819","-50852","-59376","-21236","-54407","-17130","48346","-48877","48519","-50322","-57497","-22079","-53078","-20859","49284","-45394","49778","-52235","2033","45137","4184","45171","65244","-42583","68511","-47851","580","40097","4323","44799","67175","-41319","70384","-53344","640","39497","4449","45045","67175","-41806","69811","-53121","-2991","39280","1243","43172","66202","-42129","69596","-51286","-9718","-10598","-9502","-13352","-30895","-41916","-33482","-44093","-12148","-8237","-11162","-8520","-31508","-44645","-33362","-46008","-12415","-8002","-10749","-8743","-31508","-44994","-33362","-45832","-13404","-11573","-11616","-12095","-36498","-46996","-38130","-48698","55007","30498","49816","23497","17430","-53942","14142","-55683","55225","33183","49793","25930","16383","-54874","16149","-58128","55291","32918","49484","25930","16770","-55253","16576","-57919","51576","30319","47743","26317","12979","-52605","12137","-52580","26250","39631","23181","44463","61474","-50059","62429","-50858","28347","37355","26223","45062","61297","-51321","62827","-49005","28347","37889","25797","45062","60705","-51669","62827","-48637","27002","39642","25848","46643","58153","-51551","61774","-46932","-46334","25231","-42040","29415","-39282","-29718","-41181","-36054","-45079","26816","-41741","28283","-34653","-30358","-37804","-38978","-44824","26544","-41441","27683","-34568","-30658","-37251","-38875","-44634","28153","-43934","27318","-34634","-29816","-35947","-36186","-51856","23082","-45159","20056","36247","51338","32312","46550","-51128","21987","-42060","12068","35377","51220","25009","47347","-51344","21540","-42218","12068","35377","51820","25609","47471","-51439","25023","-45882","17537","31597","54550","22918","51103","-66602","25499","-63923","22490","5868","22846","8759","23210","-63991","21491","-62462","19256","4090","22533","8499","23881","-64138","20891","-62243","19175","3650","22281","8522","23490","-62590","22684","-63365","18016","4975","23675","12021","22085","-45189","58515","-40028","56157","-3662","10375","-9083","13401","-47486","56071","-41530","56444","-2099","10557","-9996","10139","-47486","56371","-41896","56942","-2099","10017","-9996","10538","-47827","55779","-45873","59592","-3576","9424","-10169","7273","15755","-52495","21944","-51058","44542","-31629","44479","-33366","16968","-52669","21189","-50258","48534","-30392","43777","-34472","16531","-52805","21020","-50258","48534","-30392","43777","-33979","20562","-53690","22622","-50427","52236","-34901","46789","-37471","33400","6668","35579","4293","44037","-22741","40055","-29484","37270","9962","33735","5794","44979","-25496","44673","-31518","37412","10262","34335","5794","45026","-25712","44373","-31354","42983","12622","38898","10592","46462","-29510","46003","-29605","61343","-60034","63082","-55556","-41181","27684","-41632","27653","61621","-60394","60141","-52836","-45015","30033","-45925","27615","61921","-60883","60141","-52535","-45615","29733","-45900","27915","58709","-57971","55965","-56441","-45773","35665","-46102","31911","-50710","30151","-52205","29930","-47132","12941","-43864","16433","-49038","28164","-53124","26109","-46055","14798","-43347","18996","-49596","28471","-53424","25814","-46389","14210","-43347","18894","-52445","27727","-57603","28461","-49622","17841","-47009","20928","-6984","-55769","-9274","-54359","-27415","-54441","-30437","-53571","-3999","-58855","-9434","-54064","-25276","-58637","-31772","-57492","-3916","-58855","-9424","-54032","-25276","-58978","-31575","-57752","-7514","-60871","-12374","-56023","-25348","-64270","-30107","-60528","-24130","-39916","-19118","-38739","32447","65000","28036","64011","-22563","-37238","-20879","-34193","32935","65072","29411","64366","-22346","-36698","-20853","-33893","32937","64875","29111","64301","-20158","-35611","-22887","-36274","32421","62819","29844","62321","43901","56097","44172","54787","38801","30968","39343","27346","39499","55579","42771","55604","35494","29402","35581","27463","39499","55698","42771","55604","35494","29343","35968","27163","40484","54014","44772","58200","38382","26768","33687","25038","53754","46772","50119","42053","4129","22122","7433","21513","57960","46025","53610","39120","4859","23292","2289","23931","58195","46025","53452","38654","4640","22938","2793","23713","58458","47763","55749","39557","4859","20617","-12","21788","8817","-59378","11347","-57421","3537","-53275","8996","-54464","8388","-59618","13989","-57099","1088","-50096","9046","-51430","8388","-59911","14289","-57099","1045","-50311","9646","-50832","9791","-61255","11690","-59449","2782","-51395","8573","-52562","6536","46636","2981","39105","-24759","-53258","-25154","-53902","7341","45072","781","33456","-25376","-50940","-28725","-53813","7341","44772","1157","33756","-25337","-50923","-29325","-54341","4941","43048","-2518","34074","-28516","-47387","-29131","-49838","-6240","-459","-2365","3209","-27311","-29666","-23197","-27240","-6991","-5391","248","-732","-29399","-31242","-27610","-28990","-7290","-5207","775","-1332","-29340","-31161","-27610","-28752","-7622","-2412","-3106","149","-24720","-28813","-25946","-30259","-70216","44606","-62899","46273","-54410","11115","-52829","14954","-74940","45099","-62244","42597","-49993","13214","-51443","14791","-75393","45699","-62340","42897","-50293","13736","-51179","14872","-70505","43603","-61259","37828","-50871","15255","-49897","13712","53934","-27753","55313","-25987","-5328","-51870","-3701","-53584","53425","-28839","53116","-22120","641","-47341","-4005","-50365","53125","-28839","53093","-21719","1007","-47194","-4057","-50665","55136","-23869","52261","-17852","2005","-48919","-5598","-49137","-57263","-20945","-51726","-17274","2934","-41780","8555","-44072","-52269","-22517","-52015","-17612","6052","-39761","11224","-44350","-51738","-22552","-52090","-17912","5452","-39445","10800","-44050","-47754","-19578","-53074","-16051","2733","-39305","5997","-39834","-36520","32562","-36526","27603","18735","-67804","19695","-60288","-35046","34789","-38786","29800","13192","-63356","17898","-57301","-34574","34285","-38428","30400","13259","-63656","17298","-57901","-36323","30155","-43613","29963","13372","-61491","15310","-59617","-62766","11212","-62284","9296","-8029","-38241","-7502","-35010","-61403","11763","-64646","11103","-9512","-38582","-5438","-33105","-61949","11763","-64178","11703","-9124","-38582","-5393","-32612","-58372","13179","-63731","10198","-9381","-36112","-5782","-33202","29653","60546","27382","59110","16497","12418","15374","19022","30793","60089","25266","55324","11938","10313","14364","19205","31393","59756","25346","55324","12198","10313","13842","19205","29197","59486","25141","54562","8964","11898","10566","16865","6460","-41290","9189","-36330","44519","47600","47156","42030","4035","-38442","8686","-37923","41309","49571","43737","41938","3605","-38742","8986","-37623","40928","50028","43914","41659","5315","-39353","7630","-40398","42799","49818","39336","47287","50287","-22210","49966","-14224","-31395","-24213","-27899","-21073","51065","-21792","48872","-19620","-32050","-24916","-27760","-23533","50643","-21666","49109","-19401","-31750","-24776","-27160","-23415","54565","-21092","55150","-20416","-33457","-23063","-26892","-24355","3741","-45101","3627","-43400","-56877","-58661","-54998","-59204","4343","-47124","3643","-45658","-58033","-61800","-52887","-62553","4701","-47424","3780","-45658","-58633","-61732","-52887","-62745","1185","-46090","2714","-45407","-62515","-61340","-59595","-63489","-44772","-14457","-39912","-11160","64554","811","63075","411","-43848","-16917","-42032","-16334","68724","796","66175","1603","-43946","-16917","-41432","-16334","68724","827","66475","1863","-44504","-18890","-45862","-19150","62216","-2763","63641","-739","-30340","32005","-29046","32994","-34968","-50979","-33846","-53236","-26011","28692","-27136","34047","-32720","-48450","-33005","-57037","-25699","28938","-27261","33748","-33020","-47942","-32888","-56507","-25929","30849","-28007","34616","-32106","-51206","-32500","-55794","12967","3795","13817","1301","21601","-39485","25116","-44235","15493","7872","12779","1509","20435","-38018","23940","-46748","15025","8172","12842","1526","20816","-38018","23365","-46565","10328","8519","7724","4603","26114","-41369","28184","-47338","-19525","-59309","-15566","-57956","20475","-17619","26860","-15969","-15174","-62578","-11889","-57002","23624","-16241","32167","-14012","-15774","-62642","-12347","-57602","23133","-15842","32264","-14495","-15546","-65558","-12081","-60855","26310","-17660","32739","-17448","-33271","-602","-39019","-499","33854","-32014","38865","-31356","-32565","609","-40594","1084","38834","-32580","42096","-30265","-32629","609","-40894","691","38734","-32374","42696","-29665","-34184","-2530","-40157","-2188","41385","-37117","40767","-31456","-46880","4904","-45215","3844","63240","46192","61450","47685","-48396","6318","-44519","8646","65349","45040","57489","45207","-48396","6618","-44659","8671","64984","45020","57446","44607","-46663","7271","-45504","8654","59576","44887","52331","40827","35301","28151","32944","29108","60415","50237","59763","49127","34650","34449","33373","29026","61744","54864","59061","51094","34396","34639","33731","29514","61746","55299","59661","51306","28724","36081","29190","28911","60618","52446","59890","52419","35371","41324","38360","38028","-35382","30202","-30268","29631","32880","44423","39356","38343","-34153","33663","-26671","31989","33480","44511","39356","38043","-33858","33458","-26958","31989","37125","42647","41460","37713","-29158","32837","-25301","29755","-47763","-21327","-49170","-21789","-36566","-25459","-35835","-22420","-50860","-21549","-48481","-21794","-40689","-22270","-37853","-22116","-50310","-21375","-48781","-21794","-40989","-22217","-37844","-22116","-47068","-19045","-44536","-18826","-44155","-23048","-42877","-25814","43993","-37155","42421","-32155","40559","-21103","43277","-21300","39491","-36671","40205","-28366","40250","-21133","43794","-21743","39491","-37050","40134","-28966","40726","-21534","43194","-21443","40798","-35582","42854","-29052","40708","-21360","40798","-20771","45422","52480","48395","52371","26631","52558","31025","56647","40709","51676","45203","50633","29175","45965","31573","52845","40834","51681","45013","50933","29588","46399","31573","52423","43891","53159","45719","54363","28421","40861","30209","48056","-21994","-43467","-23172","-44007","-67004","16584","-57914","16626","-22393","-43310","-24210","-40212","-64663","18186","-52510","18539","-22572","-43010","-23610","-40765","-64663","18785","-52392","18839","-23263","-40193","-25420","-39918","-64070","16244","-55919","19115","4448","24209","5595","26227","53777","33492","50778","37118","4017","28103","5655","30262","55425","31872","52811","30955","3825","28614","5293","30262","55822","32172","52264","30384","4698","30918","5511","31162","52867","30851","52753","29559","-56393","20650","-61547","18441","17487","-14657","17383","-15059","-53277","22539","-60843","18457","21727","-10982","18245","-14008","-53678","22239","-60634","18457","21127","-10754","17927","-14008","-57419","26554","-60107","19696","14907","-7700","13551","-10697","-19408","-60348","-21097","-66973","-36523","-23137","-39068","-26618","-18541","-60866","-19745","-66473","-40422","-21614","-39866","-24073","-18473","-60797","-20345","-66127","-40148","-21207","-40465","-24088","-15236","-63391","-16488","-64866","-43507","-24208","-40674","-26845","37396","11642","38039","7298","67485","-30072","65700","-29316","35288","12340","40429","10243","68969","-26485","71561","-26486","35566","12418","39849","10543","68969","-26185","71561","-27086","36919","11727","39841","11434","66700","-22676","67434","-25579","-14054","-34704","-11395","-37576","21165","1048","26790","4017","-13309","-37139","-10558","-36880","26737","999","28682","3184","-13048","-37502","-10749","-36786","26667","1258","28523","3384","-11861","-37616","-8952","-34450","25497","1866","27331","1923","-57719","-39506","-65728","-40667","36222","194","40355","3325","-57163","-40625","-70646","-42889","38190","3433","38736","3309","-57070","-40766","-70669","-43369","38602","3733","38736","3154","-58349","-44774","-68274","-46099","40029","6011","39886","5306","38736","39090","34098","42674","-9513","9578","-12692","9240","41614","40221","36994","37965","-11999","8939","-18353","12275","41477","39930","37044","38274","-12599","9539","-18280","12113","38299","41633","35601","34738","-13940","13207","-18144","15554","-16116","10801","-20853","14515","16866","-3450","16901","-5165","-15949","12589","-22180","15464","17038","-4408","14660","-6636","-16249","11989","-22127","15407","17038","-4408","14209","-6336","-17758","14139","-19841","10146","13901","126","13523","-5498"],"shape":["96","8","4"]}]},"inputs":[{"data":["0","-20","13","-31","-31","-3","-23","32","-16","-31","-21","32","0","0","28","32","-31","32","32","32","-31","32","32","-27","32","32","32","0","-31","-29","-31","-31","-31","32","-22","21","-31","-31","13","0","32","-18","-1","0","5","0","32","-5","0","28","-31","0","-31","-31","24","32","32","32","24","-20","20","32","0","0","0","-31","-31","-31","-30","-18","32","0","32","-31","6","0","27","-31","-31","-31","32","7","32","-6","-26","-8","-31","-31","21","0","-31","-30","6","-31","-31","-3","8","32","-24","8","30","32","4","-24","32","-31","21","32","-31","-31","12","6","-7","32","0","32","32","32","-31","32","32","4","-13","-31","8","32","-12","32","12","-31","-31","25","-10","32","20","-31","0","5","32","-31","8","-20","-31","-6","-31","32","26","-31","-8","-31","-31","31","32","32","-31","-31","0","22","15","32","-20","-31","32","0","32","32","0","-12","26","-13","27","32","32","32","13","-29","0","4","-9","-31","25","-29","-31","32","32","32","-31","-31","13","32","-31","-31"],"shape":["96","2","1"]},{"data":["300","136","300","300","300","0","300","-239","0","264","0","300","-272","-153","269","54","-300","-40","-300","-300","0","178","-300","61","-300","300","-300","0","300","-300","300","-300","-128","-300","300","300","-300","300","-273","300","300","-300","13","-300","300","-300","42","-225","300","271","300","300","-300","300","-300","-300","225","-203","246","0","300","300","0","-298","194","300","0","300","-300","295","0","-300","0","-300","0","0","16","300","300","0","-300","-300","136","-18","300","-279","300","-16","300","226","-300","300","-300","-300","300","-19","-300","300","233","300","-224","0","-300","300","-300","-300","121","281","-192","-300","0","132","-31","299","300","300","0","163","-300","300","-4","146","0","223","238","-300","0","68","30","-300","-7","21","-45","231","300","-300","-300","67","119","-300","300","300","-300","300","300","-299","257","0","-300","-136","-4","300","205","-189","300","-300","300","82","300","-300","0","-300","300","-300","0","300","-300","-300","300","300","300","300","0","218","-45","-300","-300","176","300","300","300","300","300","-173","0","-300","-300","-300","-300","-300","-300","279","300","-298","241","-300","300","-300","-300","-300","0","300","-300","-300","257","-300","35","0","-140","300","84","-300","15","-19","0","300","-18","0","-160","300","-300","143","300","-300","192","218","-18","0","-230","-300","300","100","-176","300","300","54","300","0","300","-87","0","-300","265","-300","45","-41","300","0","-300","-300","-193","217","-148","-300","-119","-300","-231","-7","300","300","0","194","0","300","300","-188","263","180","0","300","134","-300","-300","-300","-300","300","-208","-300","-300","-153","-300","-115","233","-125","-300","-300","111","0","300","300","-250","-136","-300","221","-300","265","300","-300","18","-300","-189","-300","221","-75","300","-300","-67","-300","-219","0","-300","139","177","0","0","15","-300","-71","-181","300","-300","0","-300","300","-300","118","300","-201","-191","-104","-300","300","300","0","300","0","-143","300","300","300","-300","-160","-219","101","0","12","39","-246","-300","-300","-300","-108","300","300","0","-300","195","-8","23","188","300","-47","18","-22","0","-300","300","-20","300","300","233","190","164","0","0","50","300","-300","-299","300","-9","-300","300","207","-300","-82","300","187","300","300","300","0","-300","300","0","213","-300","187","300","-291","-290","97","300","-300","0","300","-300","279","300","300","175","300","199","300","300","291","300","260","300","300","300","-300","-83","-28","-300","300","-300","300","263","259","-300","300","0","0","253","300","300","0","-300","-300","-155","-227","-300","-300","173","-89","239","0","-300","-300","0","189","-300","0","-50","-300","0","107","-203","300","83","300","-166","-181","300","300","0","-300","-300","300","300","0","300","24","-300","239","300","300","-64","-300","269","-300","9","0","0","-300","-6","300","0","300","-177","300","300","300","0","295","37","0","9","-300","0","-250","-171","300","300","-300","300","-103","300","0","233","-300","-118","-263","-300","300","-41","223","300","-300","-300","-63","0","300","300","-300","-202","-300","300","0","0","0","0","196","-300","0","300","12","300","161","-225","0","-300","0","300","300","0","240","0","-300","-300","300","122","-300","-300","123","300","-300","-300","300","186","0","-159","-300","300","300","-235","182","300","-300","300","-300","-8","-20","300","300","0","-300","-300","-300","43","300","300","205","-300","53","-300","253","-300","-300","-300","300","-130","300","300","300","-300","-300","300","76","300","-300","275","300","300","300","-91","300","300","-297","162","300","300","300","-300","15","300","300","-300","-24","-300","205","300","265","-300","300","-300","-300","300","-72","-300","-300","300","-42","280","55","-168","217","0","-132","300","-191","102","110","17","0","-23","300","0","300","-159","300","-269","300","-300","300","-300","0","91","0","-158","45","-15","-300","-300","-152","-300","115","-300","264","0","0","-205","300","300","122","-300","300","151","300","0","-300","125","-16","-118","-300","131","0","-300","-226","-227","300","-113","300","-27","277","-33","123","-32","300","-24","300","-300","-245","227","300","0","175","300","-300","-300","0","240","-274","300","-179","139","-66","0","300","300","-49","300","300","300","164","300","-300","-68","-300","146","-300","300","-287","-300","-300","-300","-276","53","300","-300","240","300","-182","-300","-300","-243","-300","-20","300","-48","-300","0","-300","-300","300","-124","-59","-300","-140","-300","-300","300","-300","-300","-300","300","300","-300","0","-300","-300","0","119","-199","213","-200","-300","-67","300","0","300","146","-227","280","300","-300","-300","300","-124","300","-300","-80","-259","300","267","206","300","23","-246","300","-300","248","-300","219","-300","-63","-300","0","-281","300","-300","0","-137","137","300","-300","300","-267","-300","-96","300","196","-300","300","0","282","0","-290","111","-81","-300","300","-76","-300","300","300","300","-300","-300","-149","-300","-233","181","-300","300","-300","-171","-300","-292","-300","-295","-300","300","-249","207","231","0","300","-300","300","-300","-300","38","-300","133","-300","-169","300","139","39","300","300","226","-18","163","-300","300","300","0","300","300","-179","300","0","-300","300","-69","300","-92","214","0","300","-164","-300","-37","-300","241","231","300","-18","9","-91","0","-300","300","-295","300","300","-300","124","20","-49","300","-300","-281","-46","-300","-300","300","0","-300","-50","198","300","-13","0","-300","-300","300","-167","-300","300","4","285","-300","-19","-300","300","-300","-300","-170","-234","-69","-300","300","-192","300","-300","300","-103","101","288","300","-178","71","-300","118","-288","300","-300","300","-220","-93","-300","-300","300","122","300","15","111","300","-29","-300","300","149","-300","-300","300","0","-300","0","300","300","-300","300","-126","205","-300","300","300","-79","300","41","300","215","-144","3","-300","69","300","-300","0","-300","300","300","-300","300","-300","-300","171","300","300","0","-286","-300","300","-60","203","-300","0","182","-187","-90","-300","280","300","-300","300","-183","-300","300","215","226","-300","298","0","214","-235","-300","206","-277","-300","-68","-300","300","300","-300","209","0","-91","-300","81","251","300","-300","300","-94","-300","300","-300","119","221","-300","300","300","300","-300","0","238","239","221","232","300","300","-109","21","300","-300","298","300","300","-300","-138","300","85","300","-280","51","-249","-15","300","300","266","300","172","-300","198","300","-300","300","179","300","300","0","300","-300","-300","166","-300","-300","-300","0","-300","0","-66","53","300","63","45","49","300","300","0","265","68","-128","273","-196","-300","-176","197","-66","300","-3","300","-300","-167","300","-300","285","-300","300","300","300","-300","0","0","-300","-194","-300","-284","189","300","0","-267","0","-300","0","296","300","-300","-300","300","-279","-300","300","-74","79","300","0","-212","-300","-138","0","-300","-300","-11","-300","133","-57","198","-300","-300","174","37","-93","-289","-300","-237","111","300","202","300","300","111","300","-295","-119","-154","300","280","300","-271","69","23","-300","48","0","300","290","-300","300","-89","-300","0","152","20","-300","-300","-31","-167","300","126","0","300","103","-92","-78","-300","-300","0","-63","-235","185","133","-300","-41","-154","0","300","300","79","-145","0","300","0","-259","287","0","-41","300","-35","259","219","206","49","0","300","300","33","112","54","300","116","300","177","-223","-203","0","-300","-300","300","-37","132","182","300","-80","0","-134","192","300","300","235","88","3","-300","-88","-218","92","-231","300","300","-300","-300","-300","-300","0","-300","-300","300","-300","-45","-300","-300","-300","-285","-300","206","-93","300","300","217","-182","190","-101","-31","300","299","-300","289","-280","-38","230","163","-152","19","-300","-248","-258","104","10","0","119","300","12","0","0","-300","-132","300","0","-280","300","-8","223","-300","-40","-300","-300","300","-30","-300","-78","300","0","132","208","-238","0","-29","-61","95","-300","-84","-161","72","300","300","-300","0","300","-300","0","80","-300","300","-300","-300","-300","300","-300","0","-300","300","140","270","300","300","0","300","300","-300","-300","-189","300","-300","300","-300","300","300","300","300","300","-38","-300","206","300","-183","-300","300","-118","-300","38","-126","278","300","0","-300","102","68","-300","-300","300","0","300","-300","300","227","-40","300","-300","-300","29","97","300","0","-300","-86","-300","300","-289","199","-300","-299","-298","133","-300","300","-300","300","0","-300","300","300","-38","-54","300","0","78","245","141","-295","-20","11","300","-258","-300","0","0","-300","0","-175","300","-300","-46","300","295","0","300","238","18","152","106","-300","0","-265","0","293","96","260","300","141","-55","-182","23","211","-300","30","-212","0","300","-300","-300","300","35","300","80","147","300","300","-242","-300","-300","207","-300","-73","300","300","-300","-211","-300","300","299","300","-300","0","230","-300","-35","-300","300","0","92","0","-231","-27","300","-300","31","0","-18","300","0","240","300","174","-300","-300","300","300","-91","300","-300","300","-54","-300","-187","-273","132","-300","227","300","300","300","22","-300","149","30","300","300","-136","122","300","223","300","267","-235","-300","6","300","49","300","-176","0","0","113","-217","300","-300","300","0","300","128","300","300","0","300","-24","-34","300","217","-300","-164","-300","-106","215","-199","234","-35","221","-300","-300","79","-127","-300","300","-300","-88","-300","87","-300","300","-91","-298","300","0","300","300","-300","300","300","160","-12","-74","-241","-38","0","70","0","300","-300","126","-300","292","48","300","-300","300","234","-300","-300","-300","-300","300","68","-285","-111","300","-300","-300","0","-11","-125","300","300","182","300","-130","-54","0","-300","45","272","0","300","215","0","-253","6","300","0","300","-300","300","-300","300","109","-300","0","-300","300","300","-32","9","-300","0","-300","300","300","-51","-300","237","72","300","300","300","-300","-300","-300","-300","-124","84","-147","142","-300","-300","300","300","0","300","0","-187","300","-300","0","-300","56","103","300","122","-189","300","300","300","300","300","300","-295","-195","252","300","277","91","153","-300","-76","-276","-188","48","300","-300","61","300","-300","-51","0","-300","300","300","-300","51","300","-288","300","300","114","-205","-300","0","300","-259","300","300","300","-300","-300","300","-66","239","300","-240","300","99","126","-300","300","300","300","300","-300","-230","-300","-7","-256","79","-300","-300","300","-32","300","-159","84","300","300","0","300","-193","-137","-295","-85","300","300","0","300","300","-300","0","300","300","19","-300","-107","300","-300","300","300","300","-176","28","-300","-97","-32","0","-300","300","-300","92","0","-164","110","300","300","300","-253","-124","-300","0","300","31","300","300","249","300","-300","0","-300","-300","0","300","118","300","-15","300","0","198","-300","-1","300","0","275","-300","300","-291","-300","300","-300","-300","300","0","198","300","300","300","300","0","-300","300","232","300","0","300","0","-300","300","-278","300","-7","0","0","300","300","300","-198","-258","300","-300","-295","-34","-288","300","-300","-300","172","-226","0","0","300","300","-110","39","300","0","-130","300","121","148","0","0","-300","-273","131","300","170","-300","260","83","-300","-263","163","300","-171","-103","0","-300","-300","-300","300","158","300","300","0","-300","-283","-300","300","300","300","-300","56","-299","-300","133","-300","-204","-103","0","0","-82","240","159","0","-202","-300","-300","-65","300","300","252","-300","-300","-81","300","-300","0","300","-150","300","-300","89","284","-56","300","-300","300","-300","-300","-103","-261","0","300","-181","300","-300","-300","-162","126","-300","-300","-300","-294","-120","280","151","-243","-300","-177","0","-300","300","-300","300","-53","-300","65","-300","-137","166","300","54","-300","-82","300","-300","-295","-300","81","-300","204","-300","300","283","-208","300","-167","-300","100","-139","300","-300","-70","-122","-300","-5","300","-300","-300","300","0","300","167","170","-300","-300","-300","7","300","300","124","-45","300","298","-300","-300","-300","-152","-157","300","-110","-50","-300","137","-300","0","-300","-300","-300","-35","-300","0","-76","-300","187","-300","300","300","-300","-300","300","0","226","-283","-300","-228","300","103","-300","-300","300","-300","0","282","300","300","300","-129","-300","-300","-176","300","299","-123","-227","300","241","107","-300","-300","0","61","300","-300","300","188","-300","-62","300","115","-294","-106","0","124","0","89","300","-300","-300","-300","-287","-300","-300","-91","153","-300","-204","-300","0","-300","36","219","-300","300","-300","0","-300","222","300","300","33","0","233","0","-169","300","300","158","-300","-300","169","300","-300","-158","0","-300","0","-300","300","-300","-66","-201","300","0","-300","-300","277","101","300","-54","248","-300","33","300","-59","300","85","-300","-256","0","-175","0","300","-36","0","-248","300","236","-231","-97","300","300","300","-16","300","0","300","-132","225","0","-300","300","-124","300","0","-223","-87","-142","0","-300","300","0","300","33","-300","300","300","0","-300","300","-172","300","-300","-300","0","300","300","300","300","-204","58","300","67","0","-300","-300","-300","-163","-22","300","39","-91","300","0","35","281","-299","-300","-206","-300","-300","0","246","-300","-278","-300","-88","-300","-250","-300","-300","-300","190","300","300","-300","-205","193","0","300","15","-300","-300","300","300","-300","300","0","-6","-185","9","-5","-300","127","-300","300","-187","300","0","-300","300","300","300","-33","-107","300","260","-300","-222","300","131","0","123","300","-1","139","18","13","300","-96","0","186","300","-300","-300","156","130","300","0","0","300","-157","123","300","-300","0","300","300","-81","300","300","21","-300","-300","-300","-300","295","-300","-125","300","-230","-72","-300","300","0","255","140","18","300","-300","-300","-300","-300","160","-300","-300","-122","-174","-63","-81","0","300","300","-182","-300","0","-300","-9","300","-300","300","0","-300","-159","0","162","300","-101","-300","-300","-300","300","-300","300","300","-94","-300","75","58","0","-163","300","-300","-26","-300","-117","93","-129","0","300","26","-268","-300","-214","-300","-201","287","-300","300","-300","-300","-300","-202","-300","-300","-300","300","225","0","0","-300","-300","300","-300","300","256","300","260","300","-300","124","-270","-237","-154","300","-300","0","127","113","-3","300","-252","300","300","-12","-300","300","229","0","-300","106","-300","300","-54","175","-70","-300","208","223","230","79","300","0","-300","67","-86","155","300","142","0","300","300","6","-51","0","-205","300","-300","-300","-300","-300","-300","300","117","-168","0","-237","-283","81","-300","-275","300","147","132","-300","166","300","-300","192","-300","-300","0","300","-68","300","-16","297","-14","300","-236","300","300","300","-99","203","269","-300","-300","-158","-300","-191","300","300","-214","0","-105","-300","-300","21","113","115","-300","139","-300","300","284","0","-300","-300","296","218","300","300","271","300","-169","-300","-300","154","300","0","-122","200","37","300","300","212","300","-300","-50","300","131","52","-143","-297","300","-300","49","-92","300","-211","300","-300","-300","140","-110","65","265","-161","300","-300","0","0","-85","-300","245","-204","-300","-249","300","-23","300","46","300","300","0","-300","-300","-300","0","-287","-300","58","-300","49","6","-130","-300","196","-300","-300","-293","-205","196","228","188","198","135","300","-81","0","-300","-300","0","-47","-183","-300","300","-300","-300","-300","-300","300","300","-44","-61","-300","140","300","0","-300","0","0","300","300","228","300","-300","-5","-205","-287","300","0","0","0","300","-300","300","-149","300","96","148","-300","300","-205","-201","-300","300","-300","-174","0","-300","0","-234","8","300","250","0","-300","-300","-300","-181","17","300","-179","300","-142","198","-117","0","300","-169","300","153","-227","-173","300","0","16","-300","-300","226","0","300","-176","300","300","-300","-300","-153","-71","-300","300","-101","-300","0","300","300","-242","52","193","300","63","80","40","-102","300","300","209","300","-300","-34","-288","124","300","-300","-113","-283","300","122","-163","129","110","0","300","151","300","-300","109","-300","-300","300","-222","0","-300","-300","300","300","-300","232","145","-300","-300","-190","-120","-300","-300","300","-300","-299","-300","-300","-299","0","300","-253","-300","300","-182","0","300","300","-45","300","-215","0","217","79","300","300","-300","-300","300","-300","-300","300","-102","-300","300","-300","-211","-300","300","271","-294","211","-62","-300","186","0","-247","-300","-104","0","300","0","89","0","300","-12","300","-221","163","0","276","-300","-300","300","300","0","91","-300","300","-228","18","300","-101","-300","300","-300","-300","0","-300","300","-300","-57","300","-300","202","-300","-300","-300","300","300","-300","-300","199","33","234","-300","-6","231","300","-300","26","-107","300","0","62","300","-300","46","300","300","-299","-15","0","0","-300","44","0","0","-300","300","300","300","-139","-94","32","-284","300","-300","-139","0","280","0","-300","-300","-300","300","139","78","-300","300","-300","0","-300","-300","31","-118","206","300","-300","-300","-248","-300","115","300","242","-300","300","300","-109","-300","-261","300","0","-300","-230","-162","-134","100","0","-63","-191","-206","-300","97","-293","300","-228","-300","300","0","-300","-129","300","-73","-209","-300","-300","-300","-300","85","-300","121","0","-159","-188","300","-300","0","300","-145","93","-300","-211","-180","112","300","300","-300","203","0","-300","73","-134","93","300","300","300","-300","140","287","300","300","300","22","300","300","-300","-300","300","-300","108","300","163","9","-250","9","-300","300","181","138","300","0","0","-300","-300","-300","-186","0","-210","300","300","-300","300","-130","137","298","0","300","-300","84","-300","-300","151","0","-300","-300","-247","27","-300","-300","-300","300","0","-263","300","-300","-300","241","-300","179"],"shape":["96","8","4"]}],"scalars":[]}],"graph":"57484731010100000f0000000d00000002000100000000000000000400000000000000000400000004000000000000000000000000000000000000000000000001000000100000001000000000000000000000000000000000000000000000000e0000006000000080020000e1ffffffffffffff2000000000000000600000008002000000000080ffffffffffffff7f00000000600000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000800100008002000000000080ffffffffffffff7f00000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008002000000000080ffffffffffffff7f000000000201010000000000020000000d00000000000101040000000000010000010101000200000003000000b10100000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000550100001e615dd13aaf00889a4b204ac6bd927aa0d255a0ac76ce05696c9b4ca7f85c3a74c52e28391d3b74fad8d8d1da5950ba7ae932f431c8ea50203341cd10e8e3acfc984e4fd08b60c49f8310af5c84f376c27c1f211bc776b9e6fad32463ff6efa9eb9f9d18ff444e6b34dc6931de44cb5c51de3b3756455e7cdf464a9ac32ebad8d9e915babbc79af499a61a1f501fa499907604df254c66d6c41337010f970e633329ec7253c816ec5fc4ce8dec7444102e7d5d3c74f6a5c039285218ce05447de848f7502bfcfd55d3131a24e068fd78ab455465243f2d28944a3437f257657168bf002a747077f81471d457f7f4f4384b5365ea28f54a143ffbe9cc59204a585389fc6081c5c6abe0d43c96e5de7f87fb9dfac930d2fefd9e176480bb5da8bf5e2ba849b1e2a13c6d8ce2f628110664e2cfbe22019aebeebe7dfd4e0ac28662895ba93d6b51b221d14bc7d33e6b8b46d9a05b250f0704bdaa9fbb164e9f812a3d8198ac31f97021e3ec64e29dddbdf2bcc215124572f0e102a451ccd22d60bf1110101000300000004000000bd000000020000000400000004000000020000000200000001000000010000000000000000000000020000000002010104040000800000001a4404ffff6403ffffa4e68a3a4d50991e8f23db588f25733218d6aa9cfe081bc6b4ad3bbf77d20cb6904fe677907a3bef38cfe1fb01c52ea308ad2fd118acea4e279357c9ffb2886ca1754b2f50181a9936d48ec659af8558a44ebe64c58dfe82e525b8d384b6fd06e53546002ee41a31090f5f1cf94dce97f48b3bac77695a66cc793135b1142e910b01010004000000050000001000000000000000000000000000060000000000010101000500000006000000810000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000e30000001b71bb0000ea6e00004396fea066af5843a4064a65112bdbc8841c03167a3e10f1a79b5b20160cf9f0688c707147c2caeff1398e01ff588f5eb05df0d90b24c8946d3b9c8f291e61f7108b19dda0b826cd0b01010006000000070000001000000000000000000000000000060000000000010101000700000008000000313c00008001000003000000030000000100000001000000010000000100000001000000020000000002010104040000390e00001fd92a00004c71fffff77400001336000031feffffe58effff8160ffff98ab0000fd95ffff26ba000039afffffaab7000068e60000187e0000c305ffff2df60000349cffff5abe00001214000097690000d956ffffa37f00007db5000097250000631dffff6e61ffff6cae000086da0000d2e400003dc9ffff32400000daf9ffff653dffffc74c00000686ffffba350000334200008ec9ffff4b84ffffd8a5ffffaa050000c8630000be12ffff8b71ffff2f210000197e00004eb500001c37ffff21030000c6dbffff42c10000b66200005b4dffffb141ffffcd06ffff7344ffff265b000034a10000efe80000142affff34d8ffff59b8ffffafa8000014d000004e330000980200006ceaffff750dffff20e900002332ffffcf64ffff8d19ffff3b7700007b2a000092ca0000690d0000804fffff4583ffff75210000d6c6ffff487effffcc5fffff62650000d9990000c54cffff8bc100004ec400001fa3ffff6b1900005f26ffff9dceffff7590000031e6ffff1a10ffff4682000087b4ffffc55e000065820000fb8100007165ffffccec0000c427ffff76f4ffff7efbffffb66affff844effff6810ffff642cffffb5250000c8f10000212b0000301100009e560000956c0000d8d20000aa2fffffd075ffff15ccffff148a0000439000002a8b00007db00000a9a40000ac5d0000b31cffffd462ffffdc5c0000e7ee0000b2d2ffffdb4dffff25f300006640ffff1ec70000b3d2ffff950400007be4ffff51910000bc13ffff41a6000079b2ffffc4fdffff2ec1ffff733f0000d53affff4661ffffd94bffff2339ffff9242ffff5e96ffff1fc90000e5660000592f0000ff69ffffa2a2ffff41780000d94700009311ffffaefe00007c6f0000c5420000f025ffff6e39ffff0987ffff58270000fb36ffff8765ffffc015ffff5f75ffff2d44000002b6000002b5ffffd619ffff83fdffff5630ffff194fffff70bfffff8472ffff8ea900003fbe0000bf7200002d9affff62b0fffff9c20000722c0000c877000048e1ffff8e99ffff319affffe10300002d190000184100000df6ffff1c73ffff027bffff4cd700000d85ffff3885ffff8feb0000388efffff0e4ffff50490000827d0000a5d9ffffa43f0000cc880000975e000021e9ffffb68effff8a6b000013610000402fffffcc440000b74700005d36ffffeee8000054e9fffff3750000e00bffffed8000004e210000a4be000068eeffff8573ffff1ec400006826000035000000a2b1ffff326cffffd99fffff0d5d0000841100003306ffffcc460000a65c000012aa0000ec8c0000b5ce00000cd500007115000056b5ffffbeb1000063c8ffffcf670000c9ad0000af680000ef620000dd55000019ee00009a2fffff3e2800007f0dffff017d0000741affff0360ffffddd0000084b300007a12ffff94a30000b200000000ab000024adffff9fbcffffff6500003424000016e500002368ffff2db8fffff448ffffe6cefffff88d000079160000d01bffff77efffff731a0000c76e000010960000d1b4ffff1075ffff3ac300006f65ffff947300006f4f00006607ffff99260000a26effffca58ffffbeab0000152600007f3b0000bf4bffff8b6800008c6effff75cc0000e57cffff8cddffffee3cffff77ceffff031a00006483ffff2ec9ffffaead00001efa0000687000007e51ffff28a8ffff6897ffff70f7ffff373effff093d00002ea500000b35000036b4ffff03cb000026d100006500fffffb5dffff3b10ffff5d42ffff41bf00008708ffff9ebc000085e0ffff7f080000a02a000060acffffb79d00008c100000d908ffff1f16ffffe6c8ffff33f8fffff39effff8d79ffff51590000dc940000fac2000064f900005272ffffab340000e0df0000b669ffff5e8100008c2a000010e3ffff43d2000023b300002b56ffffef39ffff4794ffff636c00008298000005110000741d0000079cffffdea1ffff252cfffface4ffff40080000b54f0000c1dcffffd33e0000b0a800005584ffff1f0fffffc9e30000a26effff877a00005371000079960000f9e50000c6d500001c8bffffa069ffff6ca700000d6800003600ffff67c70000bc3400002c6cffffa3fc00005a580000ea930000cec7ffffac340000baccc79838e1688904b930527d7863296bf3b6e1679dff57a9f810549bd0b103804c77b7db63bdfbcf64fd054b1a254c7695a622e7e26160455ef187ee8b13c453c62ec094d0aac1fe63830e8a86f8e824270c4516085e8b68078664ed03ceb9cdff68530f4abfcee1f89c5f4e4274783cdce4d42e8fba65d57216ab67b28447ef54f59bdab8973c3d9451fbb480c9721e1eade8447621985f15d1f8b243fef73601ff9c2a12336008634070fa071d8fd17f08c920a051c70d17b7b216be264745b53e3264e8543b37cd07b69b6e489dd3454862f69a5413faaf5f603d1a86e41f725d9b2a5757bf822a63b986302e303102bcd1f73afca5e8f35058c87c34c311107bdcd108706af6af83cc5652ece6515bac9aab5e06233fa96b48c6b83b12614c4c30f2863c012bf2bee62e5c54b86941c482acfc7d3d3728ade2f864fe85cd94ee579764674e6949c80be6bbedd82e41407d892a109dde80d9cee1b2fc67f4e89833481f2d750d004e1865c2723b72c8be81791568269009150efee0764b4339441c382087342c24df253abb875363c1114e00f275a7b3f72704039b51dd55242a895b26512a68ca7afc7b081715247768ae9e7c5b2834c1f42e46b27b3989741acf5c8917df094c5700a60e13455649ebba620e5dbe9d93b04f944c6d1b4e1671a27ba770c314bee88e274a71c38afb8aab6d699516825863eeaea9794b1af3e48281b92dde955cabb6e386d8db699c8c6d4dce97bd004161dd04b5c98a88a477ed684c52ea3100a6f2301bd60062fb0d8a46e2b3c3cfdee5ce163a3bc42d281d8f8ea7299e6af452890480ff41ed555786c3700f70fc9fb65ac1edba8cee3633d4960744f0685ff1e3f10d97dc7119723dcb0f4717ef8f9dc95ea52df9107a288a2ebb09c27f6fbf447429664242d5dd2b5a600df1ce937ba3a81e4bf0aea5464e85bcdd273f12a0ea7611b96d125d0643b04e4d45439c3f2ee24cc4a9deffd535b72b8bfbab9e80b356430f3e3a3ea19a008cff1720f9fad8653191a4ba97901f6b0b3775d5a8980fbceef6883f29e515f47b015738eb81638823ba45f0aa17ec5b211359e967bd40ecb6987025bc8beeaa74f7d6125616f8f6e6b1741c49b9d7d266d064f9772cf2f4c636059949eca718598bb5726a4ea1f405d55b3e8a03c49d6b2d4ab854a23dff784be1ffd0a11a3caf8600b142fdcbb265137b265893cfe5889abe02f2df0dc3a280cee8c450a2e09093e08b0adf792d4f89066e31f118fb415e4f86637d7e0e0ecde1c65f6f2961d24b3198d3ade40b7fe3416516ae0d87afed27c8e33b7ffb808b5a61a63c5382f553bb65384c260b3db29f68e52846b55c41b183254920262a0862bcf9c1c7c5f27f3fc5f63dc8d3a5e7b9fa880624673ecce7e659b88b8b5a93f212a828fa4082a1b8073b7ce0ccbcd5110ccf45c4dfb5cb011082ffb8a0ce004f658412bb7eeed896a4d39ccf170854836beb7f717d8fad74bac53b64ff71445273e42584d397a3d8ef3076087ac264a82bfaec2c9488a071a485f17991a7db0bd2aae5aa52a70f724bb60f75cbfe09e658bb17743eed972efffa4641b69839861cb02341973d34a41adfd8173f49f06e8b14346483ab587e40a9cc16cba14fdf9f9844c3c940fd6ebe9e01faab69aea35d5b20fdf0e18ada7349bdfb5828c83d2b03d509342d76e1827ba3fa31b5a03a8f7e4d69ec50d88d7029b238cf077b33d7436e959e32d932bdb72c3e8cb8655e9d91bd3876dbdab4ed92e0b409bbd60a4e481b7e9d9ac936593cad4d8702f13ab2e5db8aeda09c84adfb8c738da55b8160cfeb76747f8af0b5afebe799bcc02a2a7e9dcca0eebc52b4cfc46d37a95856677c9d7ce8c6c5ae59643e65d750563ea6e07394671aaab71f34b5f0cdeda7cb8674535ab496a309edadde222cfccfb7589a54f529a51ff5cca6dbee1a7dd68cc200d4f2cd6622076877fbf7fad34862978d82fe680b03134743c49678110961f4a17c3350ecac3bc961efc0e94ca59dcb711e86a384b1bb8223ddd34ffcdc722ee5d1d3ec2a617853421f4febe25bc49aacd936f0d8659623aa2cc716cdd8eb76dc628662923009d6c48d38eb126792e0477be953818cc6dbf9290636a1a6fac898c013c0780e876753bd7aae838ca65f18802e9ace3073c9277d620872ec9588868bd2cf32be61dd6353302f69f75195d22341ad3ab07b0b80e5720b6b82561460f7d2227dfbb86f5891b717624257449163310b902f6a48a6c453289fe3d9e64303b244877e26e0373775b8c70a9aa196fff0fac87b1fe94a8626b5f9ff3175cab1c4fb89945826c5a4873ad1b3eb33175e8573025a3c7f49e05892e1e337084bfcb1084c4ead203ede5e516407851417f154abcfe3193f9840956f06131e88d6d6fcb9019e84b9a2e1564a708899840051c2f3b0321713c6af1f1a79b3616867e96551e6fb7b21574e0a49925bcb04c70fdbfa91bf1520c5e43d97972a1466e0d26f5da14c77e1c7879e37e15be6f41835b0b21de02d061f62ebbc4e2ac59b41a455ecfad03f903338a01122cf928b9eb6f56ab634e4fd4cf1ecd14d1432255629b52b07411c0f7815f32b6e251a48f44ac4cd219480794890c4ecb25ee6f8ea70753ed8f761ecbf2df00a637cd53b07dff03b930f6466d2a57763061505ff3489c6a260126f66c57208d48f86a2444bbdf111d0cedd9bbe770bda6f72395e0a7962fe44543d9e0e3a391eed42aa01f0b9c490f7cf2cd483b8bc4162e2204b0d884198d6b829b1e1681f1861a1e98bfee7f8e267c2fd96181b3a3181f383d3831aea435f740c1007d86bc7688a4944a5c524fddbd34c482c5a8d05cd02feae83dd85747c0db47ba6aa93e5e8b3ff0bf7288a42a00c45d978e31fbf99a7c900e93a8cc6913acdf6fa6ae8362710dc217b10cb29ad281cb89d02317eba0bc5ef2780f4923a143817640f90e8ec01348c2f1c85b8f1ab5126705684b3e7417a93f02d8af8f5e3e7f35b64618b681b84c08be141c717e63631553b44e8d4a2b9f035ddd67975c9394be16f49b5390e5583cbefd2a620ab534badc3820931b29868626b6bc2e431be14190ff9848b7a14cd5d63eb22809e919759556a250756f63f817b476ce9fa7e3cf348e679ccd83f095c22edb7a8b198dcffaf282c82eb82ca2cc9fa6d44965fee0f4c1ed116917a0d63f888e30035f339ce76d77c2c290e240af0c00268dc2b7a33b5349bb05e33d37bd454dabe1ce0d1b3a1c4fb1f3a318fe3e2c23fad583f31e0f0a865375531a1e765834e34bd85d26dc3a1e315e377922e271f113600889029cf2c986885ec50254364ee117c510b7ce328e6a32a3456cca18cff3f98421ce636f0daf7e821619516476c4deff8163579b9057ab38dd786fc1322bc6ac21c777bd445af07fa5a262af47043b8101d900acbc48890d7d590ccf24bee008b1c99dff5c1caf866a4b10a643ab16341fa456095e5f7333d019743b7789bd0600a6464ee967853f7eb6ff29ed7a481975657bef502b4459e549c9228daf49bed7a908211ae2d10b6b1a3ba5e8f614d3081af340d60dacb585e58913e204cd32fef77c01b96c46db5931e00b3b09fbcdc7ac7ea357290dad5434b925c780b53592e5a3e40ae91d4c595a52a97176627a7efb37bc32f892476adb33c6ec03e06533b33cec1be21d8ada1761de7b0da892f2dd09bbe40b8ddefedf9dcff09816d0369c22687797a41a769f9ca3b070c1140d6c5b3b297fad86b4d613334c99168a277d1e20f427c9d23500b4816fccc1293fbc727d88d2c1dd9470662f586ee71c9b4c76146514fb1915d7e8fe977491092ebf86c6e7fdda645c91939adf16d05dc053fd492c779edcce240942154c2d052270d84004f29177f996203e4c68c2b7dd6d8de02bd0f93c3f65044910201ac2a5c507f7e203a0659ea72d4f3d56c554df0e238122530109fa81db482742fb97d393e200db5e1416e6b39e92fc0346e181a5df6fbeb5ff44da522126afaeca9c0a106f52daac5c7f4bd0f5662b2a159888788dfab28da9c40e6c507cd17fa1bbe20b5704f20e992f5476d980bed2c14666697d6ba30aa4517e6ccf60e9b7ebda9aa246b90fbb235a0a6084f195bb3842e1fa2f536711bdea3ab4441c51f441d8acb2e5bbd6a17dc4f7850505a3dfaae786a2153c13e75b482d0612b991c78582013636a75573eaed7dec59b10ad2b06186fe244d4df8f823d62bde91e4d531acf42d1420194b7b40f9d356f9640deae3b0b46ed442ceae58ac6c3ed4b782bd0e45dcaa5b317eb13ca24d5a12c15eaddbccb0625e19d81a4924c245aacf8656329e5a668822bff5fc57a27edbb86a925fe17f0e2d960b0d504f095addfa1e8a61ec5b920ab32ad08b6f2d67d7f09c19dc994cf5891c7590785e94f4adda020d2e282e6b7575d82d6b90e2a772061e6b9ef191a008ebb7f0f29beb6b93d0cab5ad42ba4f820cac57b468b980800b7e72c3d8d4d0e5a868136dcc21a88e54ca6d0194145338d848b7bd465997a6c876b6b448466adf55f22a8a8d3f6d7e28ae8dcc9885c57dd8414d69ceae3d1938ca64bc2d3c04bd5f1052371f9e369964f1eed1197b4c712206f68c2030eba12aad8eb6cca7997f9a534436deede0fea354b140f3bfbabbe0fa83e930df47748b790bfc4388f1cb974c31839c187549d04548c48cf3dc6b6e08cecc5f1d5f32190e977a01b778f8d007bf832c4e5a10b503a8ba99e85b66e01b389c28fe32ba2e3aca34d0979c1f83b5bc6d52eb2a05c5fbcee72e1e382f8e955ab0542179b5b251b8fbce67c65fdde8ba75d2b87efb0d9c6ee052082d577933001cf0e1c570ee679bf6430744db7d5c55bb0b463ab4635b9bcad722c03c86dc0252951c1adf4fa1d113acac6679204909cb156d6053c78534695258b3dd31a0bd8e707d14a3e64229aa90238e274f3d2de03b89c270ad0ca3681cbe5d6790f85569877c8e1e022563b481fd0932f67eef216129c4412021796857247fde62988559bc49905bd9c71413acca5a45ff715813b5c3b50a06fa8a942502d05ab4e558ccca7aea2553d027aa1e5260ae17131de55bb6e5ab3ed4785d893ab27713e89c4130d114d46e4040331e9bcab653aeb485e1c462764d7157ff738af79251c9d22c943836e2aac0c9f156e84e8605579a78cf431e1f55d64fa6367edfa7048a515240fa43f13da61511b4a8297d57b6113c5733e4da0ddf795f4d9a17ee1f01dd2e95b3adb7d4e7a79f936e3ff32d38ee808e26f18f0e5e41a4c82f1d958d37d9181c577b74d3755d3d97e4115911fe34befeafc37a35fd6e308ab895c3b344b344bff7bc59e9b7ae90876270020c811d4dfdb334b5729bbe41deca90dfaa52bd6a2933919e7402f668f29cb762bb8abce64f1e282e8fe379d432ad52fdb2b0fcf81f9f3c4c3933dd56d27d6eca06c1438d48fef33073cb9f56ccec16928dd536c2d247d97c540cca947d051b832d1da73790812ac7dbea65aa974ac2050bfa8f380ef6067895c20fd9cedfdd24e1bd8757a5f444e34fb8d275324728ad456ce4307a1fc117119b336236f48f29aad2d2310d10a6f75eb1d9a41225bb69a3029d0552be8c958a4b9155b6d437bca3b08e6d5a82f9f5d2ef4535641ce9bbca163ae28d2cefe36ead93743e08114d159cc5e7ba875f578dabf3d8e788ed3410426bf94843c2219b430d5ffa57c42235ddbf7681b1b018e5b9f7d340092a6faf84cf3924a72dbbaa152a7a36c78549b57fc24ce672d46a926f07278f48b01c90dd284359ae03a40552e4356289a37a4ea97fe604976b166351efb8ba63e60ba72d7feed9f83b75891be46472af62c57c4e1c1dd56e83bdef87730fd8508399b797a4a2099d2cf39ee56ee40124f2590b3eeed07d69a473dc03b5733fc4911ecc6b47f9afb28083da28cc6c857a0a44f638ed0e33b3af02f3fee00002e3bec6ec219bc010eacb210ae52192545ef841177ad09f706b4f32ec4083014e8cac473f1a53276b5fba815ed2b6386492cfaff2a94835a9f97223ba909a5c8474a79112ab4a54ed8c919f7e4a777ebd94a71a5ffb02d2af249919dbdeef61886d6234cb3d842a9971d9f58fedf1105c4b94d20501506b5cb21f2dd0d154278089a2c273106701ff082dfc906ac77564749bb7dab1874a623f2381dd7bc4f3b2b2e217700b9727373a4018ca8a687a9c67a0174c1159c2b6ef8c0a00ed8b57374cd984dd7a6947a66e206fd72cf03f542e9e1bd67917799a429d5f47af2ee9848dea5bc6d00b7cde3e078bc3b0c69676a33aa4fdd23adad85a6a2cc3d015598f4668b149d03ad81c5d6ec73c1e8a48d28470af215fd11fe2f9de9544675b1e92c40c9d979c84a17698888942fdabe9d92b0c2612b2283bd249672e5f6254bd0660e63d1ecdbdd4051c80cab149163b779e6729f274e388395036aaa603416607179ad8227f116d0830761142d911b690458b91d203fbb06a1b4e8e848e5fe0571ffdf96647631dda9ae751e6d50469160d06583f80d610127de564360446d4ce97f989d5594a4dd557d84a21b6ec5c111fb7b026b2c9b5950edb30e9808cbefc69d1a23f251bab59b8dd9e5297892cdaf80aa17adfc7699f58a22dd7f9c80185e6aa326f2cd775f065fbae159f8dab528326fa90fda2a597d2a2031f354394f8aabbc65fd97562f339523ae4a95b29a4d1d1a7d7c9061c68ad9f73f3a888ec6f3a0a70a72169b87ed3c0909df33da293c656e807438afeecf65de63e5f4c2d793608aa424889bc009706d12e14ac08feff228b4732c29eab5affe7acb2f5037eaaa77075dd61d136f4dd2ce279a08d9b64cb36597c7b2bef788bde5662b7b3c8ad1b982d58c09f9672a3ca6da2cbb8ad205caa93eb4a5257a24a6523d4045b98c2dcf39e8cf3a8c7a25546a241563f1a98d134d449989f1f5b0647609b439ba13a717902f1697688fee2f25331073f68d65d900c8eda6813c9544964bad38ccb1bf7fd2aeae160c6fccf7be31642a110a1ea07707ebe18a6f1b30213fb89639c84f67f786f6b2bf49d5fa07841d758930e822a4fd02375ede64fac0605f45d22e30ff2980eedd62dd87fc72e2891243d654e134f3b6c437253256b1b66cf6763dd4f3aba8f108dddfa822539d0cfe109b8894c316aff5a7e2a395ef5eecf549297ccc6a2246db37e835923f0ed8c280f9d8aa00b3bef6cd29ea0e06c19f06d2952f0bd71687d1b9365516cfb9a7558a4f0b6acf068e8af592f362aceb6e023d41679fa83ee32b198852436222d34fe9dffaa56c4cee37dbae8bc0a26e767ee93b8622747fd7eaaa137063f873b3c26ee5bcdf80dcc0615466ec211187e8f7e4068f272e40a80267f452be3c153e8e0a04d6794d8b831869cde6920f5ee3252024898f3f5495331fb20136dda7a16a89df1e3d85171a1ed484b02c362deba13cbb99a323e975e52731119e7e8bd6f9f1711078b9cf3925f5d9ae6b86829fcaaa3325dc8a9436bfedc2a6d7bf845eec836aa00a2ecebd5cc237a686329dcac3c9f5c2d6e8ccc4d782c0598977a06592b68c4382c7be2df746a8b83fc4dc2e914b67d5f82a208dc310262c7e21ec990986114f1ab2a67ef68fcfc53f0eb86febdb08b0147c54c9e4ca3fe272844b1f5b6179c153754da7aa2d02e66d50869dd921900fa12886b27bb9368e495f25eab2bea8ac031b4274e8254df9c832945dbba2546d47eb2b3e6b21d72f03cdd19b43bc8f442b2076320c1eb85b7470d4bf5cd0e89976cad6ca6b85efad3815a06812e5423808e0dac76dbd047175a17037704ab3e75818762025ed91148751901dc384d7b70c1f7c0e706886f60f1c7cec629604dc31a58152c83f9bb05649fdcbc196d1c3b6c3da8ee5ae52230a5d5cc0d828d135ebd2086336cbdfb8c0970ce6b265be0ea5c920d7b130287e97428d92fff0c97b0c3cbc40465fc57461377c1401f8bc6c5ad7cabe70b5d13387250dcbda786293e3e800bb8005cd051b977f5f23730002b71395f9189078f963fd57a8d162501bff3742a8d6d16d25099ae04831745f25d5ef9f65ecf4da1e84271345f3474e08292525cb75ee0f2b6026f402471bd9b974eb0171da651eb53c758bd8beff764a4ff4f3f5cd5e982ed831bb7c93f325b712e2300fed07fad8fdab8cfe73fb8446282f84fb965029f2b9ddefc1cdd9621c2b30e421e7e3910f9c84bf88b8f92a96ee11eba9580843202a3ead4d6b2061823048ffee46e3a4cc5b7eb327aaa4ce270eb27eca3016d755a5415863ddad364edddff6b81a787696465d08b31a77c64dee04d1ffa23939435a41b23c0b60f6cc0f50700f5525167da2de352eb66f4efa628940b9f4c03d824fe36ba654f9064d7433d285b844e9910bffa9c24f32ec6c35ade665a5fd83f7ff813dcb0a62fdce103c071cbcd05f87aab9125fb332b3b2e36cd072e548f74ee8f61c872dd51ad8c39d6e5183581986f101152b69bc021f9b15f5ddb8b301e0bb3cc1c930091bf140eaafc489b8902484faeecbcd620580ad0b8f13cb2a01860b223eaa2d246f61569e1feba1bea17e38aae7e781d8280f7d933c26abe63e8584b3573b42e50c73624acb431366d80d7fe02ebe1f3f500d2ae6b46a3441af9d3551381dde652c83bfcaa39c5fa90bbc4187bba5e5bca7c07daa2380cadaeb121ba6d46b7becdc3da09b90f81863b585ec99f5f3bcbadf00c76bd409f278cea0d463cbecb640df94583608005f5f85f15a7e31c2b589ecd0863e9ba65f960c6e3b0b4e86cfd41a7bab6a2318374efb9f0a0b4c69a2ac4b66cae3d19af39db4890250710bf0204ac6258bdb6cc2203367226808121c556849e0180928bf7050aff7c2b3a99ac82197de6c5462473a956ddc04ef8d98a2762510d80322d2e14f9d8cbd7cc90335174e846d457f1b0f04cb8b0230ce5ee3837396888d2edd7378779a677d76d7a028286a4a5fa1628879d252284ab1a0c7c0f713b8beedb1021c3e5634cfba75a1bf79c398181d2473be61406d681c4b0fae457b579d60565ef001d4e901b4bdf47dfd0faa65ebf4545b87194c479da4dc767b81691ab93a4a17769fbfb8e8fcb4f2eecb6ebb94a654c34756a427df7f191f5cb9ff16174d3e33008d62bc6aaf09a57481b6e1566b1b873c04c6b2abc8fea9a68f8d18193c6b8fd9f2e3a6a019dba90bb94160c1fa0a1141c51ae35ac757cf6311acd353dea495650dafb385cfc5aed2b3a44bb4cf518a2437c5ab7b7c6f4f6273f446b145819f633a97969703f5eadfad729331bdecdc6faa7c8e7ab9170589216064feb324374c349992acec7ad796a4d7f73e26d7508a448a5b61fc732941b4df192019450fb56da4b9f747a7e81dfd48171225a2340de36773e25f14545fb1b31df6b2f53b80b5ae5c8a933f45259c3b87ec5b8215a1afe24741c4fe93f655692cef04a37dc58f687d08de4eba34796ea4a5c64bd12673d890f634038362469a16f29d26c12ac28232b38cef2572a1c02a1199679c233a776b6dc072b631b9a0318fd4891cb7da3342328611401606c543c84639e99299d1eced0087fe7a49f79d76bbfbeb59fdb97092ec4da8fc642200be419b96d540e97dd3a8d31b7699190ae958c3fe1d61fed9f135b6cc63b6ceb30aed8081ea1c8ff82f0e8bdaf0f225736495d95c36f68a3a5bbea26faf7dd533f708f7a5330c91e062305a001a82b523d393254099bddeb0de0397be2e11180cecb1998b3963dc658490ce366a56f3b5f3586721a6525d1ead623e75b9816da6011987ef0baf2e55af20d9975e564dd3821eb7b90962aefbe40e92834518e98208dbaac809dfa325ca63fe2c49ec1b4253a11524be0a8fef2465f6693137aeb2b0b84f6307cd9f9a382427473d9bad41a23cfe3e6e4cc5ee2407252325376fc68227ddae2fcda6014ca0718a5fb5d65ded43d8cdcabe255a8b1f6d619824177e294281616c16adff366800ac9bf23f032df3798ba2c05cb36d93642f8aae165b6b70cfc6a3e33dff4cc2abd89f771d86a99e862aae8a1d546e8ada6e871028d2ed10f14afb4c336b242f4ba0118a0087ed03264cda2df853c1223d396675b30896fc97d45a1d8ac728f8abfebc2dd3c87204428c40dd38333455c4acc420e5c98af1915197b9ff45868edf5b195d15e5aa24ccd8c81e42cb6a9288535e1e25728d7c7b6e5bb713e21e0c922dc4c9a2a095a547d6436b87a0e345cf47cd681b74873e1f544fee0256ce307ad8073621f680fb443b349a1907ef834ee9ca9f02f62a2cf27f5b70cf85a4e030ecba734af880abf0f38172ad6d60fb0f61a13118f0d7e3deedee355a1a04e5ba198de8b675d1d2d49052cc30d59f40d88236793927d6e9c73ebd04fa84875496879d07b65be85bef5b66896f1d9d25d6df16b5f805fa458d867b6177696eecac235a9134f84cc55a5b09db2ca0ba5b5424d1de1f87e9e34696c6ad7f6d15bbcefc4f0564a7fa20ec548188baa925388c55c99b731db9bb7c9e0b9516ed8a565342186a107b1408e31c9f736f16dc3e3c439066229d7e2f31a7e96c617a867c45fdcb383c7b27b7c66a0300e442470ef991447ce66cc812a622cd083db9a43b9c572bfb0f42f8dc86f4671f418e01737cc887babfa6eb335f2cbbd208f5dfe48826b6239d362fdc5c31c514f85c1289f83b9b717abbf2908cbe8d790fbf5fe403e885bdd64bc7b715902b25473fb4f5995690e0bb9b218a71d52a7059457670a60ab0512aa769a4ae4c6db34f5351b08dba2b223f22a2cb1834a80586b4aa5340aed2ecf6be077867eb10b89665778191cd2331a2cfe3ea6de537141970e3bc42b05e0b6dbab50e33cf9524ffc988ec92dbde9971955a60b636ff8699df4c0f310fb1a7d0f34cdccf92daa7595feab543894164b3cdb406da34ccfd2a186fd5be22de7a173db408dd966a464966fe5175a6b2b69bad2bb680fdc08d89db6e877cc4fc5cf3194b5a70273563ff1efae2e4934594f07b6d209e584f643d36732454169a7b06f1cb6321ea10c06929ed8be5ec3ba638000044d8af80ee8769eb76abf7a04b9bf9ea6e69afd1ea293c5cf5f029a569ce7a1b9c2c762d1e4e63af4d1cd4f3ceed77ceafbfb49d8201270e1823b4f36bc4cb1012ce38ba33e78c75d9ac2f135c050919cb9e0b4b4e545df2966f54cdeeb4aede1e8ab18c863e80ef8391953fa488439aa54f130d837640f5865f60d221904213111ca6db2998dbcf26d67246cb781b342e11d9e8178ee042625879493359a6250fb24ce4f26a92fc3e4f8d5c80eb5f9140a8a400e28647f50b198471a8c5c3a9eca40a421f1bde4081d14e136600d29350a3731db90702e7b8e9b2e861100f22ca586f2533baf69e07f0973c198e028f3bb41a62a419bf194917edc027d07d3b7875054cb08c226368984dca0bf40f0d55a73f80221dbfa8674932c70f3a7e30fb8656c3e20a7c57dd0182be778708cc97c2deb7f9190ffb1625d178a58902d8b74d0f1a3bc653d90475712b1081696c727826f501f24ce47af65ed2825e98e42b0e47f10a1a21862d98e21c92dae44185e596266414fb5343d87c37c6923e71d240e7e151e6bd20e0080d6b3ea60614ec616c26e75626a8116b477e75accfcd15879c5d2b8ebfa633b833f4d6b3b7a9a4698cfda26696ebb928802ffa35ded5e2f6407c0720982c2f35b78dd299d10c950e7c617cd100ca314f9d62f398a2727d6b8edb452b52b0bb37afaa07552bc71dfd7cb07d341a56d3a6d1d4964d620d3da931ea76c0696222cfede88c70295d789bd0fd396c302640347134e434c77dce17044488ef65d07337d86ae1c017b8902956afe229430ff7057a6b75d0fb03b60e1ca27377d0eb686788ccca081720c648948f11b04b37c59dccdbdff3b5ad702bbdc78eec20dd5f43ac052fc80346e7d353ec8d8f4ed27ef06a71b251382694fcd82b529e87954bbfe7cb244de22d3634ad89d9d7a2c882f5d6d239e0a4eb7c42824c574ce6ab4955ab4a01aae9aa1b37a87b14d557ca537312d4fef3361b2f74f3d7067c798e6ecbb4d1d75d4fde9614e9f074047eb07851e8e31d52ce9bd569f990219f498a199ca733872a02b9d1841f8cfa63ecf642773cae6dde951428a1cf3815c1bb0e1395d057cbdbe4143d278c87272f9c4dab2c060b1f784d5f7e14b23068ca71822cb38fa6e3dc7d539a92856c85026b025e933b36c3107d4ff97b7e6455d9bf6bd629cc21e698fbf021d23948583e7b4ad54eef30433a6e9920479c027dd9047dddc7e5e98b43705988bac0af6749e7e2b426a1483a4c6a3790ad630afcf4d73f5229aed7af6f22356a28faac9d736a14ddc59700defb1bc2231619819625c60d2d9eaec2b601f883534154143b2b964ef2cb552771f50822300629d206a6b49254225e66d71c8a9daf4ca5bdce022a92ab8a177cbe1b42b81c13df89069999cdca92989564d523b85a599470353d5bad1d4791bec389118eb1b87f7daa78fdb1ec24b4b0dc30a6ff7443f682d0e938dc347a8a3b37ab227707c5a32c77923bd607e2d88a567aacab1ff22dbdde989d4e5c15a29abd987f8c973215e35537d909890d4fe54b0021ad2f2469c98649c2b851d7d86c5f4f78c30442891a4a645ce786fc67497df872c1635972a6e500aaaca36ab63ec26e321ea1dd278b21896087a32ecd4e4ae39cdabdde1c2d1b2dad65d4284dc86a36146a05c0d5415266ff7ba27382d84f8447c710855c2e085e4095a7d60ce08a096e0e5ee8992983cf9875599e7d7b2ccbe29bab6df2d2d638198ea42965281401dbffd5f0290fa82332cb82cb4f675cd1b41f034f9177042c9e6f79465afddf836f70971b0a4a1415f4bbf27ae2f234752be7641fb7b2c64360c4bc3798f9b657edbe53561146e4d790b3d02aac4c6dc9322037c081ffdf0e6ffc2496a4de6cd630dc29d00e6277b1d2d12c7a21f3c111279ee3dd5dcc7eba519809fe82210ec11e1e8b0be52789f7c5ef3fb7b57c43ed19fe137055a6aad91ce975fce85ee1cb26b9afc6291924155d9177a684266edc8cd18a703a2a32e0da61e8ca63d5110db9b93122ad3845c205faf742a4b1f9c55fd42a3c1275b4b242b5cdb515aff7f5f68debaf1ebf3a7e00d15f18e97ad4ac1c1b1b85b977ded5a7fb5a1062232a6dceb25ca638d1225ce8cc63c952ec492ab87cfddeaa5a7b2785b0e2b616e9988997f85a8d10f61b3a7c54ee96d0234b0cdc4aeaf7c2ac21c36c1f06f5b1ebd4dbc92144b4730782e7cbfc39e77abfabfdcc2cca7afd98d3cf64aab28b3a27334df13051e89e0ba24457b480033a668b7da9a03b29f04bc605ef28ad21b97b0f24bf78e28e7754df25260f396a8c24c218e209bd710714467858c544b2cd496d43699ed6e4cfdbc781fc2a48ab6fe5211bdb23de9834ff2ebbbffc8752e5410571a60f0761844eb779748ba2eebb146a2a8d90b2c284c5c05e7dc5e0004b6ffc5134288b5b31f38928b74a4791eb911ee653165b6e471186a6fd61d626772b889e27c24178cf71c19769d2e4b817b8589cf8f24ef2779a30021b584d31a1e6eff4b2bfeddace8f9669555c1d2b00ff6bc1c767eaa0dabbcedbaa1df63f43895d02b428774f4b009c82e58997c130083af892a3417fa69cad7c3f02f6d34da411e31dbef8d6253decbc9c4edd316357e4a336d994100eb8c2d632da0494dd2e7124cd49e0e32da292080e9b3f9d1d5556846e306478315197d026322c6d120f7cf66e6fded6f2a1f7e053aa5388c1409d2c612799231a954359d21b61ccd2491f33fe1b7b52404cc2e8cc0b59218edb7beb762ed959dd3ca1ac3e7ba5c912d5c658d747907d7a8b86744149ed66d1d659ad1ee24bcfeafdd624e1be71586a10a42afdfa20b18a4048d4961191017fa4fa726765239b1f4162e8001056b641eeaf89626023181ce56c722dec13440f3f31bef023a2028b531883404f7fbde09c43105eef9df461cbbd7af3b4b7454f240568706f0116475707e2ef38f04aa8c45410d99d619395f5a3d3dffba5def7f175d540634927c76da6b6d95cac5162d3832c936dcc96a9592ded0d55f0652d808b623008e8f2f6caca140097b7a67a6a7fd68971567e8c205a6d89b09ea185b4e394f9a0b7910031576af6136fd66051e732d86dde741dd84e864dcaee01c229a3d535bb3db100fe67bd702d03980f3703f51ef487fb7922467edaffd2102dee02f6cc1b74c80ab4cddb005c903bc9b03d8909a529d70e2721ebe9e07e6543e7fc972860bd4c6942d9fef9bfe0ced0d3d231edea33ed8a64a8968b96348d971bcbd017e424bd502915d256acb034bc6169ee435b34ff52877514372c622b7ba26d19a17718e9dc64e8d24315180fbc87c3354d0cdd7cfdc639065d0649a0b470c55852cf31e9e33a9dd5fc9482fe3f71312e89e19ede1af06d0e3c0ebe2830ebbcff19b05cdabce4996455ede1c25060d1e5152481c1cc194f55c93aea0ff49158cc753ebf847b6e8ac6b46f5efa83bbec842d6077d81dafdefbac34932c3ca46ee1d813b444e8b0a994b612437448ed87d7e81d44bc3e5298b5f96f986bb3757713398ff02ece3ec73901434d8829ed976ef33940b8b4b798f08e9efbffb740d8d6f9791833e19840edaa80af34097eda8debed1e7e2a01a30aea87f88bbac93a8cd5a6b549860422eb4cc14169a29cfb7625e8db674fef3149ec3c693bd330007dbf3076c9f5efac715d72b8d0dc1571b983a43eea49bb79d31cf7eafe3e10067b7cf6d58102788b7422ece433022db4737e20201c17da6ea623ae7f1255bf5b5ed180bae295078aac2d11b0074199c5167faa2872f588a855b30a31fc71943ebaa78eabb89fa71a6797f207a31f5dc352b42b7fd7da0d10a155c21bb033fd409ecf191c1ae0dec8cba3d5df99ba2a6b1bb8cd7f4ccc6aa08c4174d354b45b102712ac3e549688c8032ad42b93e86c2f0a4ee9185b708afd84eb620d169bc1071659ba1822a14878f9162fe53607b425e7f8332314b09380ee5d32f405a87c0ac486f44ade02f07373ad88aebdd858ede844d05fac7c132ef1d8cf01cdd54cda8aa7ffe3428d87e4b294b41dd77970dea80d49acddf0266ccac85934ba234a19f6fb37ca4d60470ce8433cf80b066b3d2f65853eb80a779d30190c3181ba6bd15c66e66ddd21093bcae00bf496d5221f73bd4c4028e4caf2dc3cce42baad5bbd7f31036041cd386f3203b703c3d5deeea69f853db61614e728a74ddb9762a4265c93554d1a92dd0d100484b074de1f924d896218ad1b56835d3d22bac533bddf268c2abc27a9c550cb3d02846bfb391097320bfe3cdf8d0b46c32a14028711187868ed9ff43b8444e978cdd87b9f56b8ee7b11ccc31967dfcc2a6bf49d6670f01385196231464c3ee8d47a6f059ed8411bb05ded522d399fbbc03ac7b5123ae521ca04d2b6223e0f6615ce79c71764a933cf1f9d85afbabb968b8415ac538d288199267c77c993efe4bc09861c98ce328b45ade44c78e2ef3e5a49ef15162d0dfcd9bb14b6bc404165bb06902a64687d64a7368a665c65c4efd5b829c54d016442f578c9e0d4d6883835e7ec3e73b36de748bbf884fb8e296a6df7bfcf5b4718e2884050c416f9c98b65e7fda12614dc85f3bbe6648de38778ec3387432af068eb25daef6e090a182165b5aa58ba068e576708e69e60634e91767a70514d39cfafc793e5c87c08130310c158539b143cd9786bfd45da64b17a02d4bf4df67593aa75f42f8af7f0b1787dcaf64bb07926b160d6b4e6abb4fa079202b99186d5a9ddc2ea21d514c14313df22b4ee858e65408834d42bc12d04bcf60fe0d36cd405d36e535f365098798171b969f9f23ea0ca7edc94b89079211941c3e3dc9d7eb9672a6ec219b9b1566d942f9484fd5f284dfaa82d3daf70b6e38e4b61ee93ff41f1d8a99e6c58c37ccd4d276794aad63b86a04afc5ad3e2323e2922f0d54c208b7346f0d59cebd8e54537af0c1472f81ca88213b597cdd25e9af6c2a225a53235c96a92fb045d1ac7471261d1eeebbfefe756bd3921e810c2fecb05c129ea24aa33dd6c563c468406da1628da41354b6aebc7b59185eb5693800a44ba3e2be338c037237bf9de0f4e625eeb1444cf6a2a6d26ea8ae4a045ff376c9c37e810709c988a65ae9512300520be0706bb9aa852aae1fa40ad686264c7656242f7c584a6e849a8345f823d485e8eb367a8214a78d81a4f455c22b34179b8663089213d8d73928219e12d838432c235f6d20b0b8edc76031857e79580dcf5592ca99b27e6b5f95eed4cd7e01da63a1dd6dac397302d38365ce3d95129e48ac7e0533bbe6f2a78c31f26bfd747950ad32bd8bd29cd639ef194bb2d04443d622c1d9453d1399bc7371befcacf1a5e859ff14f1b7dcf72f1e8da258ca22e9a5270b3c4119ed6808d155573e21904345a783ec5c9df87ea70ae015a047451a9bc2580e07a6aad4593d9652816f8c583a78ade527626552999f7a2b23cd02449ae1a274fbd3ef151730dd76aeb29f39d879af5a5e681d80baaf380ba2f36eb62044e67dcba85690f42a454eb4d5620c6593455ac2a675af4c802d24c797998e872c54c34a2bbcf7ce16fe72a0f77cff093ba0b791a666c6e755b5a36dcea9dc0ce6d8222d0b5cf59e65268d34e4b34eeee31aab54b1200678cf42cc8d9c339e36ee75aded76d1816ba3c1257348c4376f1ae73c6c872fbaeb0eb323fd371b003f3667697c5adbcf6d3935894817073cf1eeb0c1461218921f89f2fc8f7b86f74cbb937f051441171b9c5de6bb0d8db60fdca0d7408da662abb256d33f45bf5a3e626862ee639c699e7a30654bfbb45d94952f5751874c4196d834af3d2d4cd410f56fd57db91a2df7e591d26009797beb3c9da91b6c587592ca4d95842fd15b8b648ef36b3b05b22210c004de797c77eb3f22e9274d2836f7c6584b5ca0d835852d924733699f63febb9f1139756eb1638f33409cc4ad4ae73812e1b698b18c294613cf22ba45d5c17df22391e17c9a0299e46723eac58f79ba16d95c74813de550f58599469d7adf609e511a66e84fed057977c89d12e3848920e2220be45e8edd5b963c3a645b5930d21040649092789776df698ab8d025435a7991676c551685936177d3cf217d08be0a45b96a07619541827c01c1953c7dc1e6a9978d18f126e76378e60a57166c58f3b30c0b118cd49b31d2f5c36d0e04eb2245de7a6f66469804d6089a8c4832c026e4b21b77caff315f4aebc880d05c6afe3be4e999dec7dab1f2ab28c7913a5045070c0b0ef3c8a7e939878dbf32cb9cb6604f87a60702c95d7ce816537f4e80aa53ff44941cfd2cf71c46917a829164b5d7af4b684520ddd896879931007beb424933ec68d55023cc6fbce4acfc6eed8f94e26c497315a9efab8a496008a2ddef575d808709cddb3cbc644e2fcad7945b0e983e078e229ef9cb5a6c4a6dfa7ac8c02a75331299b096585be6f866c11655d01e51731e02e3e7f6ed651f3bcaa7e74049e1cf44edf710fae28149dafc588a5edeb684707ee9011709641a9f5d0981a6e51f7ef996f1a94de4b94cf8e01b69a0b64aa9c0568e0bd891b2b58d30acfe3f92d12550570defa82321b4ba03247d5fd7101af2011738bd4d8ca1c193874fceb2cb5d1c756f1d2a81c21fbda273bf2442a6b87e132403652d9d7a4812d73f607871a43a2c4e06810da839a3b46b576ccdfb56b012170abe45e7f80e5fc9472499143cc4fa9c38a3a46ed80211978d4fec41338a572d3eb1cb508bf079cf40329a4666f9c5585b7f2437ca1b9a5a8a44a6c29f749f3b9b14f4c6af34fdf8489201cc8d1aac9847d0f48df12995cfac9fb71dccf808c2b77b88505308c49bba325fadd9f9a255302b9019d2b35c9db0d904785ba03e827885243d1d19771b0810c970c3cbf261da782f9b30561301b9180d83d053f4fc411ee84769f0da9105efcd3d626956ec783d5f778e3a4330f2dec409b30237bbe019ca6d9a9a3905266110eb72e1567d69644216c089f0d6455110f507b232833cdfe0528b6649bd47808928f721762c471fc31d5743d6fbacb9e297c89c83d382c6cbd0ce52503d241b3aee800c630a74dcd407f6eb91dffdaba527739f5490435f6cde425a8c0b69c75bd5c6fda4bf7ca220d54a645a3bcd4b090b9294757c5ec2028fed3ceea11a04a07cd0a67d63245c21984b79e2bbb1c8bb3b54749dff6268145322c39efcf7655b2601ce9e471244c4ef6e36fa45e11925107d68a848fc24cd491e108717655e548179f569b060b52a6fccc05e06e1a67b32f32ee871e8e2dbcac86ad1e8bddac7d57707e94881e0d358bf94e3aa268236b0527b797bfe6080a0952358c047f78c721eb7f0fda8c60697687e10b5910267f564517b06416387c2e3725789db604c73e548ad4f6698577be786b248428c333cf4a0936129afb12943bb54e30fd7cd7e03afa30bd31e4f1f9f159f2ff63ac538d61a2628039fe599e1e8a0ef5f90d5a0754bccbde719365681258671113b91dd00986e0974b43a061c2475801f87203c9e55ab2e745ade9dd9c04db346cc784d88ef3a7959e82914cec40690637daeb68934a7f744eeb895d39fd2df379be908319258c1a9e331adc15a980e52a886fe87d951108f6db9613f23387833ae84d997d1f38dbd98bc61912937a9600f4d75cdfd3cecc792f4b62028194ebe745d06ca3b5a7a5efae6a5a84a2c317205766a47aaa5950960dd5b63002775eda60ec32f97652a819424f3ec566feba68787caf2d6082bb575a3953811940906a95536a00487db74a06b278a0d442392d2dcb2efdad4cec9149c9e1a2449fe238062a30779d2d84b813420d5a8d24fe86d7b7eb8c0bd3b19a80f0ab9dd57d5b7d5124465f6920e28e04ce6238832580cd52393dc526af6d7545e217d4122230bca00964053a078c3f9b95b0e3f1c5538befe17c7a0c4c6d971334aff8646e9f4e9f78e9ac1f5fcbcdbc41d2a840071f337c5c529179e9163af7b72a62c813f05d9d2736438958e7bfea36ef5f5388f4765c7f0a81355b7cdd349b6e332c0cbbf25e4b7cfab4fd772f150452d6eef58f6136f8a1b49549cd7203a6bd00281c7d9359ddd17224bbc4514e5220d2182acc90cbe49b7b0a6bbbad946841d8ba660e9073f0cc6a5f554946b2f5a0be95b08b39678c806494986e70cccfcb75f9c359029d2166b9fdc2849b22668b25a4661a75208a6cbacc8e473c40644a10ff120057ee41ac5279a432789c0aa4587c35034701abde5c4e500f433108ef82be9fd96623aac511767cfd4d661303385ca0170da078a7c98f9c275182fd943e0a2c4cdc99bc79df32cbdbcff69ace7fbe43d047cdc4a446d904a4033cb7cb9280270722fb279b093b61de99f4695c886cefa8bcf4abeb709441f4b78a27d43e87babc3d4719a55eaf289a05b251b93f28540fba029c950f3d2b9ec2c5eaa8a63a9b6a6908010100080000000900000008000000000000006000000008010100080000000a00000008000000600000006000000008010100080000000b00000008000000c00000006000000008010100080000000c00000008000000200100006000000016040100090000000a0000000b0000000c0000000d000000040000000003010205020100010000000d0000000e00000000000000","id":"lower_jpegai/jpegai/rec_uv/6","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"refuse":"field_range"},"inputs":[{"data":["33","-31","0","32","22","32","-12","32","-7","14","-31","-31","-31","-8","8","-16","-31","32","0","-31","11","-31","-18","-2","-31","32","-31","18","7","21","-2","15","-31","32","11","0","-31","26","32","0","17","23","0","21","-31","-31","25","32","-31","-25","-11","-31","-14","32","-31","32","-5","32","-31","-31","-31","32","-31","0","21","12","-3","-6","-3","-17","-31","25","17","0","32","-23","32","-31","32","-31","-31","-8","-31","-31","32","32","0","32","32","-3","0","-21","4","-31","32","32"],"shape":["96","1","1"]},{"data":["-300","-215","-229","-300","300","-300","42","300","300","-216","300","-300","-300","300","-44","107","-284","73","300","-232","-300","0","-300","-300","-300","36","-248","247","300","300","300","300","272","-300","210","-300","-300","300","300","-281","300","0","-300","-300","0","-300","-300","300","300","-139","-142","-91","300","300","300","-300","-6","-300","300","300","-46","15","-300","276","11","171","-111","0","-163","-300","300","-300","-300","-300","-300","-241","-300","300","-300","300","-300","300","300","-195","0","-61","300","300","-131","300","300","-300","300","300","-300","-106","165","-248","-137","300","286","300","300","300","-300","250","300","86","-267","-121","0","-291","0","-300","300","300","-113","300","-300","242","0","144","-226","-300","37","0","0","-300","-90","-75","0","0","204","-229","219","-300","300","300","-300","-300","-182","0","0","-300","46","162","-172","-300","-281","-300","0","300","-64","-300","-300","300","6","-300","-45","180","-31","164","-300","71","300","67","-300","300","69","0","300","-300","300","300","277","0","153","250","300","300","0","0","300","-78","-218","300","0","-213","119","300","-300","169","-18","300","300","122","-300","0","-8","-38","0","-300","-300","-203","300","300","0","0","300","-169","-131","-37","0","-286","-123","-300","297","155","300","-300","-146","-300","300","300","-206","-300","246","-300","0","300","116","300","113","139","300","-300","174","164","-197","-12","-300","-67","-37","300","-300","-285","216","225","-116","47","-142","-300","300","-300","-300","-209","300","283","258","105","300","185","-214","-122","300","300","-300","0","300","-27","-300","267","6","-300","-300","0","-300","-38","220","-300","300","0","-150","0","-300","-5","-8","300","-49","300","-109","78","7","-300","-300","300","69","240","-300","0","300","300","-300","300","-300","297","-300","-300","-300","0","-300","2","300","-300","-243","36","300","-300","201","-300","-115","16","300","-300","300","300","-59","0","169","6","0","0","-147","-300","292","0","300","-85","-300","-300","-179","300","0","0","33","-53","-10","-300","-300","-300","300","-119","224","-300","300","-105","24","-213","300","300","-300","300","230","-300","-300","-300","300","249","0","-286","-52","300","300","-129","-300","198","-300","300","245","67","300","88","-300","176","123","300","223","-202","-300","-55","-300","-300","-300","300","144","99","300","-300","300","300","-300","-300","300","-46","187","-250","266","300","0","300","300","0","300","-300","0","-300","-300","0","107","-114","-92","300","44","-150","249","-300","300","-82","-250","-79","-300","212","300","300","298","300","-300","-267","0","19","-300","0","-300","107","-300","-68","300","-194","-300","300","107","-225","122","107","300","300","-300","-300","300","-19","281","-206","0","-182","300","-300","-300","0","-239","300","-300","255","139","-300","-172","-300","-164","0","-300","-300","-300","-300","300","-300","300","-300","237","-300","0","300","-300","45","139","0","268","-300","-300","0","0","-83","-136","-300","120","300","300","300","300","-267","300","-300","300","7","99","-88","-290","-160","82","300","0","-109","295","-300","-300","64","300","300","-300","-300","0","-300","-133","-300","-300","300","-5","-243","-29","0","0","300","94","268","-300","-59","300","-300","-145","300","0","-300","-300","0","-300","-300","-83","0","300","-300","125","0","-300","-256","0","-29","0","225","-238","-300","300","300","221","-71","-191","300","300","-143","159","-300","0","-84","0","-300","300","300","296","0","300","32","-32","-222","300","300","0","300","-300","300","300","-248","249","-300","0","-300","300","-300","267","-300","300","-209","71","245","300","-300","59","-300","300","-300","-300","300","300","300","-220","300","-300","80","0","300","-300","124","136","300","38","-300","-29","300","106","0","0","300","-192","-236","0","-300","300","-90","300","300","101","300","-158","-251","300","300","300","300","-300","-235","300","-300","36","0","-300","-264","300","276","-300","300","0","1","-147","300","98","-300","279","300","300","-300","0","224","0","-300","300","-266","-127","-300","300","-300","300","300","-249","-25","0","-300","-300","246","-58","-300","-170","88","227","300","290","-300","-300","0","176","0","-300","0","-293","172","142","300","0","300","249","300","300","-271","-300","-300","300","0","300","-265","300","214","300","-191","252","-300","0","300","24","300","-300","300","-300","300","292","-300","300","300","-300","-300","-300","124","300","104","166","0","51","-300","300","300","184","-8","-210","300","-300","300","300","-300","-300","300","-300","-300","-300","-231","156","63","0","227","-300","300","0","-300","84","300","34","78","300","0","24","-86","-300","-300","0","300","-111","300","-300","-300","300","0","-66","7","-300","300","-248","300","136","-300","145","-300","-266","43","127","-239","-290","0","-300","79","-300","0","-300","275","-47","293","279","300","-300","-293","18","8","237","-42","-300","300","-300","-2","-300","104","-140","-300","300","-183","-8","-300","84","-300","-300","-300","300","-179","300","-300","300","300","300","300","300","300","-300","-300","300","213","206","189","0","42","0","0","300","0","219","300","-134","-100","50","-7","6","-300","-282","-197","-300","198","-293","-300","-300","300","-300","256","0","56","-245","-300","258","-176","-300","-289","0","-65","300","115","300","-300","85","-74","-300","300","23","78","300","300","-246","-300","-300","300","300","-300","-300","300","-300","-29","31","0","-199","300","-300","-76","-154","0","-300","300","251","0","-300","56","-282","265","300","-231","300","271","300","-300","-300","300","300","0","-155","-66","292","-159","300","0","300","-300","146","-300","300","-202","298","300","-94","188","-87","31","-228","-92","-156","-300","134","-282","-296","300","0","0","300","-34","300","-286","300","26","300","-300","300","-300","-300","279","-59","-78","210","300","-254","0","-77","117","-300","300","300","131","-47","300","0","0","300","-184","300","300","-211","-300","-99","300","98","-300","-300","107","44","225","-300","300","-300","-158","-300","0","300","300","-300","-300","0","-300","-1","0","231","300","-300","300","0","0","300","40","0","-300","128","118","14","-260","300","23","-300","300","300","300","-300","0","-300","30","285","115","300","289","-300","213","74","-300","24","-29","127","217","0","-300","300","-27","118","300","-288","0","-1","300","300","300","95","-300","300","300","-300","274","300","300","300","-144","-192","-299","300","300","-178","300","-300","-82","-300","190","19","-81","-23","300","24","-300","-126","0","-300","300","-300","300","0","28","-300","0","-300","-300","128","-88","178","17","-300","-162","300","164","-266","-85","300","130","204","-60","-207","-300","221","0","-170","-300","300","300","143","300","55","1","0","-179","0","-300","300","0","-300","185","-284","300","88","-300","256","274","-264","-300","-300","300","300","-258","-300","300","300","0","14","-186","300","-35","-132","-300","300","146","0","-300","300","89","300","-105","0","300","-300","182","120","-115","0","-300","-300","300","-300","-35","-246","-198","288","-208","283","300","300","-300","300","0","-300","-167","-300","-63","300","-287","-300","300","16","229","300","0","-119","300","300","-300","300","-208","0","-186","300","300","-300","-200","0","200","202","0","-300","-300","227","-58","-163","211","-300","-163","300","-210","0","-300","1","0","-300","300","-300","223","300","-156","300","300","300","300","275","-88","-266","-300","0","-300","-300","-142","300","300","300","88","129","0","-294","-300","-300","-137","-300","-300","0","0","232","94","-285","0","208","300","282","-300","-300","300","-300","-36","-300","-23","-250","-300","-132","300","0","300","0","300","300","300","202","-230","300","300","-300","-178","-189","23","227","-300","-129","300","284","0","300","193","-300","224","288","-193","-188","300","-67","-300","300","-300","300","0","-300","-247","300","300","300","-23","-300","0","300","-243","-107","-293","0","0","0","-300","300","115","300","-70","0","-108","-265","300","300","300","300","300","6","0","-300","300","-300","-300","-300","82","-300","81","-300","185","-246","250","-173","-300","124","-90","-300","300","0","238","300","0","145","27","17","94","290","-300","167","300","-300","70","186","279","189","0","-288","-292","-300","300","-300","-300","195","-300","-38","300","300","0","0","17","-173","-300","-73","-300","300","-300","300","33","171","300","300","300","-300","-300","300","300","-200","-300","-291","300","9","-300","-300","300","0","300","-300","279","-11","158","-21","86","258","-300","-300","-300","300","-200","-300","300","300","-67","-82","300","-64","-300","300","182","-300","0","-300","-300","300","-300","-300","0","50","29","-102","-300","184","-300","-78","-300","-143","233","225","300","0","-146","-205","192","-300","-31","0","-144","44","73","0","-300","300","-149","-300","-31","-300","-300","-300","300","82","-258","300","-300","0","269","-300","221","0","-115","-300","-300","248","211","-300","92","-300","-300","67","300","300","300","-300","-36","300","0","-300","-300","-183","169","-72","-286","-94","-300","-300","283","-300","-300","300","294","300","126","-300","-270","-122","300"],"shape":["96","4","4"]}],"scalars":[]}],"graph":"57484731010100000f0000000d00000002000100000000000000000400000000000000000400000004000000000000000000000000000000000000000000000001000000100000001000000000000000000000000000000000000000000000000e0000006000000080020000e1ffffffffffffff2000000000000000600000008002000000000080ffffffffffffff7f00000000600000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000800100008002000000000080ffffffffffffff7f00000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008000000000000000000000000000000000000000600000008002000000000080ffffffffffffff7f000000000201010000000000020000000d00000000000101040000000000010000010101000200000003000000b10100000200000001000000010000000100000001000000000000000000000001000000020000000000010104000000550100001e615dd13aaf00889a4b204ac6bd927aa0d255a0ac76ce05696c9b4ca7f85c3a74c52e28391d3b74fad8d8d1da5950ba7ae932f431c8ea50203341cd10e8e3acfc984e4fd08b60c49f8310af5c84f376c27c1f211bc776b9e6fad32463ff6efa9eb9f9d18ff444e6b34dc6931de44cb5c51de3b3756455e7cdf464a9ac32ebad8d9e915babbc79af499a61a1f501fa499907604df254c66d6c41337010f970e633329ec7253c816ec5fc4ce8dec7444102e7d5d3c74f6a5c039285218ce05447de848f7502bfcfd55d3131a24e068fd78ab455465243f2d28944a3437f257657168bf002a747077f81471d457f7f4f4384b5365ea28f54a143ffbe9cc59204a585389fc6081c5c6abe0d43c96e5de7f87fb9dfac930d2fefd9e176480bb5da8bf5e2ba849b1e2a13c6d8ce2f628110664e2cfbe22019aebeebe7dfd4e0ac28662895ba93d6b51b221d14bc7d33e6b8b46d9a05b250f0704bdaa9fbb164e9f812a3d8198ac31f97021e3ec64e29dddbdf2bcc215124572f0e102a451ccd22d60bf1110101000300000004000000bd000000020000000400000004000000020000000200000001000000010000000000000000000000020000000002010104040000800000001a4404ffff6403ffffa4e68a3a4d50991e8f23db588f25733218d6aa9cfe081bc6b4ad3bbf77d20cb6904fe677907a3bef38cfe1fb01c52ea308ad2fd118acea4e279357c9ffb2886ca1754b2f50181a9936d48ec659af8558a44ebe64c58dfe82e525b8d384b6fd06e53546002ee41a31090f5f1cf94dce97f48b3bac77695a66cc793135b1142e910b01010004000000050000001000000000000000000000000000060000000000010101000500000006000000810000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000e30000001b71bb0000ea6e00004396fea066af5843a4064a65112bdbc8841c03167a3e10f1a79b5b20160cf9f0688c707147c2caeff1398e01ff588f5eb05df0d90b24c8946d3b9c8f291e61f7108b19dda0b826cd0b01010006000000070000001000000000000000000000000000060000000000010101000700000008000000313c00008001000003000000030000000100000001000000010000000100000001000000020000000002010104040000390e00001fd92a00004c71fffff77400001336000031feffffe58effff8160ffff98ab0000fd95ffff26ba000039afffffaab7000068e60000187e0000c305ffff2df60000349cffff5abe00001214000097690000d956ffffa37f00007db5000097250000631dffff6e61ffff6cae000086da0000d2e400003dc9ffff32400000daf9ffff653dffffc74c00000686ffffba350000334200008ec9ffff4b84ffffd8a5ffffaa050000c8630000be12ffff8b71ffff2f210000197e00004eb500001c37ffff21030000c6dbffff42c10000b66200005b4dffffb141ffffcd06ffff7344ffff265b000034a10000efe80000142affff34d8ffff59b8ffffafa8000014d000004e330000980200006ceaffff750dffff20e900002332ffffcf64ffff8d19ffff3b7700007b2a000092ca0000690d0000804fffff4583ffff75210000d6c6ffff487effffcc5fffff62650000d9990000c54cffff8bc100004ec400001fa3ffff6b1900005f26ffff9dceffff7590000031e6ffff1a10ffff4682000087b4ffffc55e000065820000fb8100007165ffffccec0000c427ffff76f4ffff7efbffffb66affff844effff6810ffff642cffffb5250000c8f10000212b0000301100009e560000956c0000d8d20000aa2fffffd075ffff15ccffff148a0000439000002a8b00007db00000a9a40000ac5d0000b31cffffd462ffffdc5c0000e7ee0000b2d2ffffdb4dffff25f300006640ffff1ec70000b3d2ffff950400007be4ffff51910000bc13ffff41a6000079b2ffffc4fdffff2ec1ffff733f0000d53affff4661ffffd94bffff2339ffff9242ffff5e96ffff1fc90000e5660000592f0000ff69ffffa2a2ffff41780000d94700009311ffffaefe00007c6f0000c5420000f025ffff6e39ffff0987ffff58270000fb36ffff8765ffffc015ffff5f75ffff2d44000002b6000002b5ffffd619ffff83fdffff5630ffff194fffff70bfffff8472ffff8ea900003fbe0000bf7200002d9affff62b0fffff9c20000722c0000c877000048e1ffff8e99ffff319affffe10300002d190000184100000df6ffff1c73ffff027bffff4cd700000d85ffff3885ffff8feb0000388efffff0e4ffff50490000827d0000a5d9ffffa43f0000cc880000975e000021e9ffffb68effff8a6b000013610000402fffffcc440000b74700005d36ffffeee8000054e9fffff3750000e00bffffed8000004e210000a4be000068eeffff8573ffff1ec400006826000035000000a2b1ffff326cffffd99fffff0d5d0000841100003306ffffcc460000a65c000012aa0000ec8c0000b5ce00000cd500007115000056b5ffffbeb1000063c8ffffcf670000c9ad0000af680000ef620000dd55000019ee00009a2fffff3e2800007f0dffff017d0000741affff0360ffffddd0000084b300007a12ffff94a30000b200000000ab000024adffff9fbcffffff6500003424000016e500002368ffff2db8fffff448ffffe6cefffff88d000079160000d01bffff77efffff731a0000c76e000010960000d1b4ffff1075ffff3ac300006f65ffff947300006f4f00006607ffff99260000a26effffca58ffffbeab0000152600007f3b0000bf4bffff8b6800008c6effff75cc0000e57cffff8cddffffee3cffff77ceffff031a00006483ffff2ec9ffffaead00001efa0000687000007e51ffff28a8ffff6897ffff70f7ffff373effff093d00002ea500000b35000036b4ffff03cb000026d100006500fffffb5dffff3b10ffff5d42ffff41bf00008708ffff9ebc000085e0ffff7f080000a02a000060acffffb79d00008c100000d908ffff1f16ffffe6c8ffff33f8fffff39effff8d79ffff51590000dc940000fac2000064f900005272ffffab340000e0df0000b669ffff5e8100008c2a000010e3ffff43d2000023b300002b56ffffef39ffff4794ffff636c00008298000005110000741d0000079cffffdea1ffff252cfffface4ffff40080000b54f0000c1dcffffd33e0000b0a800005584ffff1f0fffffc9e30000a26effff877a00005371000079960000f9e50000c6d500001c8bffffa069ffff6ca700000d6800003600ffff67c70000bc3400002c6cffffa3fc00005a580000ea930000cec7ffffac340000baccc79838e1688904b930527d7863296bf3b6e1679dff57a9f810549bd0b103804c77b7db63bdfbcf64fd054b1a254c7695a622e7e26160455ef187ee8b13c453c62ec094d0aac1fe63830e8a86f8e824270c4516085e8b68078664ed03ceb9cdff68530f4abfcee1f89c5f4e4274783cdce4d42e8fba65d57216ab67b28447ef54f59bdab8973c3d9451fbb480c9721e1eade8447621985f15d1f8b243fef73601ff9c2a12336008634070fa071d8fd17f08c920a051c70d17b7b216be264745b53e3264e8543b37cd07b69b6e489dd3454862f69a5413faaf5f603d1a86e41f725d9b2a5757bf822a63b986302e303102bcd1f73afca5e8f35058c87c34c311107bdcd108706af6af83cc5652ece6515bac9aab5e06233fa96b48c6b83b12614c4c30f2863c012bf2bee62e5c54b86941c482acfc7d3d3728ade2f864fe85cd94ee579764674e6949c80be6bbedd82e41407d892a109dde80d9cee1b2fc67f4e89833481f2d750d004e1865c2723b72c8be81791568269009150efee0764b4339441c382087342c24df253abb875363c1114e00f275a7b3f72704039b51dd55242a895b26512a68ca7afc7b081715247768ae9e7c5b2834c1f42e46b27b3989741acf5c8917df094c5700a60e13455649ebba620e5dbe9d93b04f944c6d1b4e1671a27ba770c314bee88e274a71c38afb8aab6d699516825863eeaea9794b1af3e48281b92dde955cabb6e386d8db699c8c6d4dce97bd004161dd04b5c98a88a477ed684c52ea3100a6f2301bd60062fb0d8a46e2b3c3cfdee5ce163a3bc42d281d8f8ea7299e6af452890480ff41ed555786c3700f70fc9fb65ac1edba8cee3633d4960744f0685ff1e3f10d97dc7119723dcb0f4717ef8f9dc95ea52df9107a288a2ebb09c27f6fbf447429664242d5dd2b5a600df1ce937ba3a81e4bf0aea5464e85bcdd273f12a0ea7611b96d125d0643b04e4d45439c3f2ee24cc4a9deffd535b72b8bfbab9e80b356430f3e3a3ea19a008cff1720f9fad8653191a4ba97901f6b0b3775d5a8980fbceef6883f29e515f47b015738eb81638823ba45f0aa17ec5b211359e967bd40ecb6987025bc8beeaa74f7d6125616f8f6e6b1741c49b9d7d266d064f9772cf2f4c636059949eca718598bb5726a4ea1f405d55b3e8a03c49d6b2d4ab854a23dff784be1ffd0a11a3caf8600b142fdcbb265137b265893cfe5889abe02f2df0dc3a280cee8c450a2e09093e08b0adf792d4f89066e31f118fb415e4f86637d7e0e0ecde1c65f6f2961d24b3198d3ade40b7fe3416516ae0d87afed27c8e33b7ffb808b5a61a63c5382f553bb65384c260b3db29f68e52846b55c41b183254920262a0862bcf9c1c7c5f27f3fc5f63dc8d3a5e7b9fa880624673ecce7e659b88b8b5a93f212a828fa4082a1b8073b7ce0ccbcd5110ccf45c4dfb5cb011082ffb8a0ce004f658412bb7eeed896a4d39ccf170854836beb7f717d8fad74bac53b64ff71445273e42584d397a3d8ef3076087ac264a82bfaec2c9488a071a485f17991a7db0bd2aae5aa52a70f724bb60f75cbfe09e658bb17743eed972efffa4641b69839861cb02341973d34a41adfd8173f49f06e8b14346483ab587e40a9cc16cba14fdf9f9844c3c940fd6ebe9e01faab69aea35d5b20fdf0e18ada7349bdfb5828c83d2b03d509342d76e1827ba3fa31b5a03a8f7e4d69ec50d88d7029b238cf077b33d7436e959e32d932bdb72c3e8cb8655e9d91bd3876dbdab4ed92e0b409bbd60a4e481b7e9d9ac936593cad4d8702f13ab2e5db8aeda09c84adfb8c738da55b8160cfeb76747f8af0b5afebe799bcc02a2a7e9dcca0eebc52b4cfc46d37a95856677c9d7ce8c6c5ae59643e65d750563ea6e07394671aaab71f34b5f0cdeda7cb8674535ab496a309edadde222cfccfb7589a54f529a51ff5cca6dbee1a7dd68cc200d4f2cd6622076877fbf7fad34862978d82fe680b03134743c49678110961f4a17c3350ecac3bc961efc0e94ca59dcb711e86a384b1bb8223ddd34ffcdc722ee5d1d3ec2a617853421f4febe25bc49aacd936f0d8659623aa2cc716cdd8eb76dc628662923009d6c48d38eb126792e0477be953818cc6dbf9290636a1a6fac898c013c0780e876753bd7aae838ca65f18802e9ace3073c9277d620872ec9588868bd2cf32be61dd6353302f69f75195d22341ad3ab07b0b80e5720b6b82561460f7d2227dfbb86f5891b717624257449163310b902f6a48a6c453289fe3d9e64303b244877e26e0373775b8c70a9aa196fff0fac87b1fe94a8626b5f9ff3175cab1c4fb89945826c5a4873ad1b3eb33175e8573025a3c7f49e05892e1e337084bfcb1084c4ead203ede5e516407851417f154abcfe3193f9840956f06131e88d6d6fcb9019e84b9a2e1564a708899840051c2f3b0321713c6af1f1a79b3616867e96551e6fb7b21574e0a49925bcb04c70fdbfa91bf1520c5e43d97972a1466e0d26f5da14c77e1c7879e37e15be6f41835b0b21de02d061f62ebbc4e2ac59b41a455ecfad03f903338a01122cf928b9eb6f56ab634e4fd4cf1ecd14d1432255629b52b07411c0f7815f32b6e251a48f44ac4cd219480794890c4ecb25ee6f8ea70753ed8f761ecbf2df00a637cd53b07dff03b930f6466d2a57763061505ff3489c6a260126f66c57208d48f86a2444bbdf111d0cedd9bbe770bda6f72395e0a7962fe44543d9e0e3a391eed42aa01f0b9c490f7cf2cd483b8bc4162e2204b0d884198d6b829b1e1681f1861a1e98bfee7f8e267c2fd96181b3a3181f383d3831aea435f740c1007d86bc7688a4944a5c524fddbd34c482c5a8d05cd02feae83dd85747c0db47ba6aa93e5e8b3ff0bf7288a42a00c45d978e31fbf99a7c900e93a8cc6913acdf6fa6ae8362710dc217b10cb29ad281cb89d02317eba0bc5ef2780f4923a143817640f90e8ec01348c2f1c85b8f1ab5126705684b3e7417a93f02d8af8f5e3e7f35b64618b681b84c08be141c717e63631553b44e8d4a2b9f035ddd67975c9394be16f49b5390e5583cbefd2a620ab534badc3820931b29868626b6bc2e431be14190ff9848b7a14cd5d63eb22809e919759556a250756f63f817b476ce9fa7e3cf348e679ccd83f095c22edb7a8b198dcffaf282c82eb82ca2cc9fa6d44965fee0f4c1ed116917a0d63f888e30035f339ce76d77c2c290e240af0c00268dc2b7a33b5349bb05e33d37bd454dabe1ce0d1b3a1c4fb1f3a318fe3e2c23fad583f31e0f0a865375531a1e765834e34bd85d26dc3a1e315e377922e271f113600889029cf2c986885ec50254364ee117c510b7ce328e6a32a3456cca18cff3f98421ce636f0daf7e821619516476c4deff8163579b9057ab38dd786fc1322bc6ac21c777bd445af07fa5a262af47043b8101d900acbc48890d7d590ccf24bee008b1c99dff5c1caf866a4b10a643ab16341fa456095e5f7333d019743b7789bd0600a6464ee967853f7eb6ff29ed7a481975657bef502b4459e549c9228daf49bed7a908211ae2d10b6b1a3ba5e8f614d3081af340d60dacb585e58913e204cd32fef77c01b96c46db5931e00b3b09fbcdc7ac7ea357290dad5434b925c780b53592e5a3e40ae91d4c595a52a97176627a7efb37bc32f892476adb33c6ec03e06533b33cec1be21d8ada1761de7b0da892f2dd09bbe40b8ddefedf9dcff09816d0369c22687797a41a769f9ca3b070c1140d6c5b3b297fad86b4d613334c99168a277d1e20f427c9d23500b4816fccc1293fbc727d88d2c1dd9470662f586ee71c9b4c76146514fb1915d7e8fe977491092ebf86c6e7fdda645c91939adf16d05dc053fd492c779edcce240942154c2d052270d84004f29177f996203e4c68c2b7dd6d8de02bd0f93c3f65044910201ac2a5c507f7e203a0659ea72d4f3d56c554df0e238122530109fa81db482742fb97d393e200db5e1416e6b39e92fc0346e181a5df6fbeb5ff44da522126afaeca9c0a106f52daac5c7f4bd0f5662b2a159888788dfab28da9c40e6c507cd17fa1bbe20b5704f20e992f5476d980bed2c14666697d6ba30aa4517e6ccf60e9b7ebda9aa246b90fbb235a0a6084f195bb3842e1fa2f536711bdea3ab4441c51f441d8acb2e5bbd6a17dc4f7850505a3dfaae786a2153c13e75b482d0612b991c78582013636a75573eaed7dec59b10ad2b06186fe244d4df8f823d62bde91e4d531acf42d1420194b7b40f9d356f9640deae3b0b46ed442ceae58ac6c3ed4b782bd0e45dcaa5b317eb13ca24d5a12c15eaddbccb0625e19d81a4924c245aacf8656329e5a668822bff5fc57a27edbb86a925fe17f0e2d960b0d504f095addfa1e8a61ec5b920ab32ad08b6f2d67d7f09c19dc994cf5891c7590785e94f4adda020d2e282e6b7575d82d6b90e2a772061e6b9ef191a008ebb7f0f29beb6b93d0cab5ad42ba4f820cac57b468b980800b7e72c3d8d4d0e5a868136dcc21a88e54ca6d0194145338d848b7bd465997a6c876b6b448466adf55f22a8a8d3f6d7e28ae8dcc9885c57dd8414d69ceae3d1938ca64bc2d3c04bd5f1052371f9e369964f1eed1197b4c712206f68c2030eba12aad8eb6cca7997f9a534436deede0fea354b140f3bfbabbe0fa83e930df47748b790bfc4388f1cb974c31839c187549d04548c48cf3dc6b6e08cecc5f1d5f32190e977a01b778f8d007bf832c4e5a10b503a8ba99e85b66e01b389c28fe32ba2e3aca34d0979c1f83b5bc6d52eb2a05c5fbcee72e1e382f8e955ab0542179b5b251b8fbce67c65fdde8ba75d2b87efb0d9c6ee052082d577933001cf0e1c570ee679bf6430744db7d5c55bb0b463ab4635b9bcad722c03c86dc0252951c1adf4fa1d113acac6679204909cb156d6053c78534695258b3dd31a0bd8e707d14a3e64229aa90238e274f3d2de03b89c270ad0ca3681cbe5d6790f85569877c8e1e022563b481fd0932f67eef216129c4412021796857247fde62988559bc49905bd9c71413acca5a45ff715813b5c3b50a06fa8a942502d05ab4e558ccca7aea2553d027aa1e5260ae17131de55bb6e5ab3ed4785d893ab27713e89c4130d114d46e4040331e9bcab653aeb485e1c462764d7157ff738af79251c9d22c943836e2aac0c9f156e84e8605579a78cf431e1f55d64fa6367edfa7048a515240fa43f13da61511b4a8297d57b6113c5733e4da0ddf795f4d9a17ee1f01dd2e95b3adb7d4e7a79f936e3ff32d38ee808e26f18f0e5e41a4c82f1d958d37d9181c577b74d3755d3d97e4115911fe34befeafc37a35fd6e308ab895c3b344b344bff7bc59e9b7ae90876270020c811d4dfdb334b5729bbe41deca90dfaa52bd6a2933919e7402f668f29cb762bb8abce64f1e282e8fe379d432ad52fdb2b0fcf81f9f3c4c3933dd56d27d6eca06c1438d48fef33073cb9f56ccec16928dd536c2d247d97c540cca947d051b832d1da73790812ac7dbea65aa974ac2050bfa8f380ef6067895c20fd9cedfdd24e1bd8757a5f444e34fb8d275324728ad456ce4307a1fc117119b336236f48f29aad2d2310d10a6f75eb1d9a41225bb69a3029d0552be8c958a4b9155b6d437bca3b08e6d5a82f9f5d2ef4535641ce9bbca163ae28d2cefe36ead93743e08114d159cc5e7ba875f578dabf3d8e788ed3410426bf94843c2219b430d5ffa57c42235ddbf7681b1b018e5b9f7d340092a6faf84cf3924a72dbbaa152a7a36c78549b57fc24ce672d46a926f07278f48b01c90dd284359ae03a40552e4356289a37a4ea97fe604976b166351efb8ba63e60ba72d7feed9f83b75891be46472af62c57c4e1c1dd56e83bdef87730fd8508399b797a4a2099d2cf39ee56ee40124f2590b3eeed07d69a473dc03b5733fc4911ecc6b47f9afb28083da28cc6c857a0a44f638ed0e33b3af02f3fee00002e3bec6ec219bc010eacb210ae52192545ef841177ad09f706b4f32ec4083014e8cac473f1a53276b5fba815ed2b6386492cfaff2a94835a9f97223ba909a5c8474a79112ab4a54ed8c919f7e4a777ebd94a71a5ffb02d2af249919dbdeef61886d6234cb3d842a9971d9f58fedf1105c4b94d20501506b5cb21f2dd0d154278089a2c273106701ff082dfc906ac77564749bb7dab1874a623f2381dd7bc4f3b2b2e217700b9727373a4018ca8a687a9c67a0174c1159c2b6ef8c0a00ed8b57374cd984dd7a6947a66e206fd72cf03f542e9e1bd67917799a429d5f47af2ee9848dea5bc6d00b7cde3e078bc3b0c69676a33aa4fdd23adad85a6a2cc3d015598f4668b149d03ad81c5d6ec73c1e8a48d28470af215fd11fe2f9de9544675b1e92c40c9d979c84a17698888942fdabe9d92b0c2612b2283bd249672e5f6254bd0660e63d1ecdbdd4051c80cab149163b779e6729f274e388395036aaa603416607179ad8227f116d0830761142d911b690458b91d203fbb06a1b4e8e848e5fe0571ffdf96647631dda9ae751e6d50469160d06583f80d610127de564360446d4ce97f989d5594a4dd557d84a21b6ec5c111fb7b026b2c9b5950edb30e9808cbefc69d1a23f251bab59b8dd9e5297892cdaf80aa17adfc7699f58a22dd7f9c80185e6aa326f2cd775f065fbae159f8dab528326fa90fda2a597d2a2031f354394f8aabbc65fd97562f339523ae4a95b29a4d1d1a7d7c9061c68ad9f73f3a888ec6f3a0a70a72169b87ed3c0909df33da293c656e807438afeecf65de63e5f4c2d793608aa424889bc009706d12e14ac08feff228b4732c29eab5affe7acb2f5037eaaa77075dd61d136f4dd2ce279a08d9b64cb36597c7b2bef788bde5662b7b3c8ad1b982d58c09f9672a3ca6da2cbb8ad205caa93eb4a5257a24a6523d4045b98c2dcf39e8cf3a8c7a25546a241563f1a98d134d449989f1f5b0647609b439ba13a717902f1697688fee2f25331073f68d65d900c8eda6813c9544964bad38ccb1bf7fd2aeae160c6fccf7be31642a110a1ea07707ebe18a6f1b30213fb89639c84f67f786f6b2bf49d5fa07841d758930e822a4fd02375ede64fac0605f45d22e30ff2980eedd62dd87fc72e2891243d654e134f3b6c437253256b1b66cf6763dd4f3aba8f108dddfa822539d0cfe109b8894c316aff5a7e2a395ef5eecf549297ccc6a2246db37e835923f0ed8c280f9d8aa00b3bef6cd29ea0e06c19f06d2952f0bd71687d1b9365516cfb9a7558a4f0b6acf068e8af592f362aceb6e023d41679fa83ee32b198852436222d34fe9dffaa56c4cee37dbae8bc0a26e767ee93b8622747fd7eaaa137063f873b3c26ee5bcdf80dcc0615466ec211187e8f7e4068f272e40a80267f452be3c153e8e0a04d6794d8b831869cde6920f5ee3252024898f3f5495331fb20136dda7a16a89df1e3d85171a1ed484b02c362deba13cbb99a323e975e52731119e7e8bd6f9f1711078b9cf3925f5d9ae6b86829fcaaa3325dc8a9436bfedc2a6d7bf845eec836aa00a2ecebd5cc237a686329dcac3c9f5c2d6e8ccc4d782c0598977a06592b68c4382c7be2df746a8b83fc4dc2e914b67d5f82a208dc310262c7e21ec990986114f1ab2a67ef68fcfc53f0eb86febdb08b0147c54c9e4ca3fe272844b1f5b6179c153754da7aa2d02e66d50869dd921900fa12886b27bb9368e495f25eab2bea8ac031b4274e8254df9c832945dbba2546d47eb2b3e6b21d72f03cdd19b43bc8f442b2076320c1eb85b7470d4bf5cd0e89976cad6ca6b85efad3815a06812e5423808e0dac76dbd047175a17037704ab3e75818762025ed91148751901dc384d7b70c1f7c0e706886f60f1c7cec629604dc31a58152c83f9bb05649fdcbc196d1c3b6c3da8ee5ae52230a5d5cc0d828d135ebd2086336cbdfb8c0970ce6b265be0ea5c920d7b130287e97428d92fff0c97b0c3cbc40465fc57461377c1401f8bc6c5ad7cabe70b5d13387250dcbda786293e3e800bb8005cd051b977f5f23730002b71395f9189078f963fd57a8d162501bff3742a8d6d16d25099ae04831745f25d5ef9f65ecf4da1e84271345f3474e08292525cb75ee0f2b6026f402471bd9b974eb0171da651eb53c758bd8beff764a4ff4f3f5cd5e982ed831bb7c93f325b712e2300fed07fad8fdab8cfe73fb8446282f84fb965029f2b9ddefc1cdd9621c2b30e421e7e3910f9c84bf88b8f92a96ee11eba9580843202a3ead4d6b2061823048ffee46e3a4cc5b7eb327aaa4ce270eb27eca3016d755a5415863ddad364edddff6b81a787696465d08b31a77c64dee04d1ffa23939435a41b23c0b60f6cc0f50700f5525167da2de352eb66f4efa628940b9f4c03d824fe36ba654f9064d7433d285b844e9910bffa9c24f32ec6c35ade665a5fd83f7ff813dcb0a62fdce103c071cbcd05f87aab9125fb332b3b2e36cd072e548f74ee8f61c872dd51ad8c39d6e5183581986f101152b69bc021f9b15f5ddb8b301e0bb3cc1c930091bf140eaafc489b8902484faeecbcd620580ad0b8f13cb2a01860b223eaa2d246f61569e1feba1bea17e38aae7e781d8280f7d933c26abe63e8584b3573b42e50c73624acb431366d80d7fe02ebe1f3f500d2ae6b46a3441af9d3551381dde652c83bfcaa39c5fa90bbc4187bba5e5bca7c07daa2380cadaeb121ba6d46b7becdc3da09b90f81863b585ec99f5f3bcbadf00c76bd409f278cea0d463cbecb640df94583608005f5f85f15a7e31c2b589ecd0863e9ba65f960c6e3b0b4e86cfd41a7bab6a2318374efb9f0a0b4c69a2ac4b66cae3d19af39db4890250710bf0204ac6258bdb6cc2203367226808121c556849e0180928bf7050aff7c2b3a99ac82197de6c5462473a956ddc04ef8d98a2762510d80322d2e14f9d8cbd7cc90335174e846d457f1b0f04cb8b0230ce5ee3837396888d2edd7378779a677d76d7a028286a4a5fa1628879d252284ab1a0c7c0f713b8beedb1021c3e5634cfba75a1bf79c398181d2473be61406d681c4b0fae457b579d60565ef001d4e901b4bdf47dfd0faa65ebf4545b87194c479da4dc767b81691ab93a4a17769fbfb8e8fcb4f2eecb6ebb94a654c34756a427df7f191f5cb9ff16174d3e33008d62bc6aaf09a57481b6e1566b1b873c04c6b2abc8fea9a68f8d18193c6b8fd9f2e3a6a019dba90bb94160c1fa0a1141c51ae35ac757cf6311acd353dea495650dafb385cfc5aed2b3a44bb4cf518a2437c5ab7b7c6f4f6273f446b145819f633a97969703f5eadfad729331bdecdc6faa7c8e7ab9170589216064feb324374c349992acec7ad796a4d7f73e26d7508a448a5b61fc732941b4df192019450fb56da4b9f747a7e81dfd48171225a2340de36773e25f14545fb1b31df6b2f53b80b5ae5c8a933f45259c3b87ec5b8215a1afe24741c4fe93f655692cef04a37dc58f687d08de4eba34796ea4a5c64bd12673d890f634038362469a16f29d26c12ac28232b38cef2572a1c02a1199679c233a776b6dc072b631b9a0318fd4891cb7da3342328611401606c543c84639e99299d1eced0087fe7a49f79d76bbfbeb59fdb97092ec4da8fc642200be419b96d540e97dd3a8d31b7699190ae958c3fe1d61fed9f135b6cc63b6ceb30aed8081ea1c8ff82f0e8bdaf0f225736495d95c36f68a3a5bbea26faf7dd533f708f7a5330c91e062305a001a82b523d393254099bddeb0de0397be2e11180cecb1998b3963dc658490ce366a56f3b5f3586721a6525d1ead623e75b9816da6011987ef0baf2e55af20d9975e564dd3821eb7b90962aefbe40e92834518e98208dbaac809dfa325ca63fe2c49ec1b4253a11524be0a8fef2465f6693137aeb2b0b84f6307cd9f9a382427473d9bad41a23cfe3e6e4cc5ee2407252325376fc68227ddae2fcda6014ca0718a5fb5d65ded43d8cdcabe255a8b1f6d619824177e294281616c16adff366800ac9bf23f032df3798ba2c05cb36d93642f8aae165b6b70cfc6a3e33dff4cc2abd89f771d86a99e862aae8a1d546e8ada6e871028d2ed10f14afb4c336b242f4ba0118a0087ed03264cda2df853c1223d396675b30896fc97d45a1d8ac728f8abfebc2dd3c87204428c40dd38333455c4acc420e5c98af1915197b9ff45868edf5b195d15e5aa24ccd8c81e42cb6a9288535e1e25728d7c7b6e5bb713e21e0c922dc4c9a2a095a547d6436b87a0e345cf47cd681b74873e1f544fee0256ce307ad8073621f680fb443b349a1907ef834ee9ca9f02f62a2cf27f5b70cf85a4e030ecba734af880abf0f38172ad6d60fb0f61a13118f0d7e3deedee355a1a04e5ba198de8b675d1d2d49052cc30d59f40d88236793927d6e9c73ebd04fa84875496879d07b65be85bef5b66896f1d9d25d6df16b5f805fa458d867b6177696eecac235a9134f84cc55a5b09db2ca0ba5b5424d1de1f87e9e34696c6ad7f6d15bbcefc4f0564a7fa20ec548188baa925388c55c99b731db9bb7c9e0b9516ed8a565342186a107b1408e31c9f736f16dc3e3c439066229d7e2f31a7e96c617a867c45fdcb383c7b27b7c66a0300e442470ef991447ce66cc812a622cd083db9a43b9c572bfb0f42f8dc86f4671f418e01737cc887babfa6eb335f2cbbd208f5dfe48826b6239d362fdc5c31c514f85c1289f83b9b717abbf2908cbe8d790fbf5fe403e885bdd64bc7b715902b25473fb4f5995690e0bb9b218a71d52a7059457670a60ab0512aa769a4ae4c6db34f5351b08dba2b223f22a2cb1834a80586b4aa5340aed2ecf6be077867eb10b89665778191cd2331a2cfe3ea6de537141970e3bc42b05e0b6dbab50e33cf9524ffc988ec92dbde9971955a60b636ff8699df4c0f310fb1a7d0f34cdccf92daa7595feab543894164b3cdb406da34ccfd2a186fd5be22de7a173db408dd966a464966fe5175a6b2b69bad2bb680fdc08d89db6e877cc4fc5cf3194b5a70273563ff1efae2e4934594f07b6d209e584f643d36732454169a7b06f1cb6321ea10c06929ed8be5ec3ba638000044d8af80ee8769eb76abf7a04b9bf9ea6e69afd1ea293c5cf5f029a569ce7a1b9c2c762d1e4e63af4d1cd4f3ceed77ceafbfb49d8201270e1823b4f36bc4cb1012ce38ba33e78c75d9ac2f135c050919cb9e0b4b4e545df2966f54cdeeb4aede1e8ab18c863e80ef8391953fa488439aa54f130d837640f5865f60d221904213111ca6db2998dbcf26d67246cb781b342e11d9e8178ee042625879493359a6250fb24ce4f26a92fc3e4f8d5c80eb5f9140a8a400e28647f50b198471a8c5c3a9eca40a421f1bde4081d14e136600d29350a3731db90702e7b8e9b2e861100f22ca586f2533baf69e07f0973c198e028f3bb41a62a419bf194917edc027d07d3b7875054cb08c226368984dca0bf40f0d55a73f80221dbfa8674932c70f3a7e30fb8656c3e20a7c57dd0182be778708cc97c2deb7f9190ffb1625d178a58902d8b74d0f1a3bc653d90475712b1081696c727826f501f24ce47af65ed2825e98e42b0e47f10a1a21862d98e21c92dae44185e596266414fb5343d87c37c6923e71d240e7e151e6bd20e0080d6b3ea60614ec616c26e75626a8116b477e75accfcd15879c5d2b8ebfa633b833f4d6b3b7a9a4698cfda26696ebb928802ffa35ded5e2f6407c0720982c2f35b78dd299d10c950e7c617cd100ca314f9d62f398a2727d6b8edb452b52b0bb37afaa07552bc71dfd7cb07d341a56d3a6d1d4964d620d3da931ea76c0696222cfede88c70295d789bd0fd396c302640347134e434c77dce17044488ef65d07337d86ae1c017b8902956afe229430ff7057a6b75d0fb03b60e1ca27377d0eb686788ccca081720c648948f11b04b37c59dccdbdff3b5ad702bbdc78eec20dd5f43ac052fc80346e7d353ec8d8f4ed27ef06a71b251382694fcd82b529e87954bbfe7cb244de22d3634ad89d9d7a2c882f5d6d239e0a4eb7c42824c574ce6ab4955ab4a01aae9aa1b37a87b14d557ca537312d4fef3361b2f74f3d7067c798e6ecbb4d1d75d4fde9614e9f074047eb07851e8e31d52ce9bd569f990219f498a199ca733872a02b9d1841f8cfa63ecf642773cae6dde951428a1cf3815c1bb0e1395d057cbdbe4143d278c87272f9c4dab2c060b1f784d5f7e14b23068ca71822cb38fa6e3dc7d539a92856c85026b025e933b36c3107d4ff97b7e6455d9bf6bd629cc21e698fbf021d23948583e7b4ad54eef30433a6e9920479c027dd9047dddc7e5e98b43705988bac0af6749e7e2b426a1483a4c6a3790ad630afcf4d73f5229aed7af6f22356a28faac9d736a14ddc59700defb1bc2231619819625c60d2d9eaec2b601f883534154143b2b964ef2cb552771f50822300629d206a6b49254225e66d71c8a9daf4ca5bdce022a92ab8a177cbe1b42b81c13df89069999cdca92989564d523b85a599470353d5bad1d4791bec389118eb1b87f7daa78fdb1ec24b4b0dc30a6ff7443f682d0e938dc347a8a3b37ab227707c5a32c77923bd607e2d88a567aacab1ff22dbdde989d4e5c15a29abd987f8c973215e35537d909890d4fe54b0021ad2f2469c98649c2b851d7d86c5f4f78c30442891a4a645ce786fc67497df872c1635972a6e500aaaca36ab63ec26e321ea1dd278b21896087a32ecd4e4ae39cdabdde1c2d1b2dad65d4284dc86a36146a05c0d5415266ff7ba27382d84f8447c710855c2e085e4095a7d60ce08a096e0e5ee8992983cf9875599e7d7b2ccbe29bab6df2d2d638198ea42965281401dbffd5f0290fa82332cb82cb4f675cd1b41f034f9177042c9e6f79465afddf836f70971b0a4a1415f4bbf27ae2f234752be7641fb7b2c64360c4bc3798f9b657edbe53561146e4d790b3d02aac4c6dc9322037c081ffdf0e6ffc2496a4de6cd630dc29d00e6277b1d2d12c7a21f3c111279ee3dd5dcc7eba519809fe82210ec11e1e8b0be52789f7c5ef3fb7b57c43ed19fe137055a6aad91ce975fce85ee1cb26b9afc6291924155d9177a684266edc8cd18a703a2a32e0da61e8ca63d5110db9b93122ad3845c205faf742a4b1f9c55fd42a3c1275b4b242b5cdb515aff7f5f68debaf1ebf3a7e00d15f18e97ad4ac1c1b1b85b977ded5a7fb5a1062232a6dceb25ca638d1225ce8cc63c952ec492ab87cfddeaa5a7b2785b0e2b616e9988997f85a8d10f61b3a7c54ee96d0234b0cdc4aeaf7c2ac21c36c1f06f5b1ebd4dbc92144b4730782e7cbfc39e77abfabfdcc2cca7afd98d3cf64aab28b3a27334df13051e89e0ba24457b480033a668b7da9a03b29f04bc605ef28ad21b97b0f24bf78e28e7754df25260f396a8c24c218e209bd710714467858c544b2cd496d43699ed6e4cfdbc781fc2a48ab6fe5211bdb23de9834ff2ebbbffc8752e5410571a60f0761844eb779748ba2eebb146a2a8d90b2c284c5c05e7dc5e0004b6ffc5134288b5b31f38928b74a4791eb911ee653165b6e471186a6fd61d626772b889e27c24178cf71c19769d2e4b817b8589cf8f24ef2779a30021b584d31a1e6eff4b2bfeddace8f9669555c1d2b00ff6bc1c767eaa0dabbcedbaa1df63f43895d02b428774f4b009c82e58997c130083af892a3417fa69cad7c3f02f6d34da411e31dbef8d6253decbc9c4edd316357e4a336d994100eb8c2d632da0494dd2e7124cd49e0e32da292080e9b3f9d1d5556846e306478315197d026322c6d120f7cf66e6fded6f2a1f7e053aa5388c1409d2c612799231a954359d21b61ccd2491f33fe1b7b52404cc2e8cc0b59218edb7beb762ed959dd3ca1ac3e7ba5c912d5c658d747907d7a8b86744149ed66d1d659ad1ee24bcfeafdd624e1be71586a10a42afdfa20b18a4048d4961191017fa4fa726765239b1f4162e8001056b641eeaf89626023181ce56c722dec13440f3f31bef023a2028b531883404f7fbde09c43105eef9df461cbbd7af3b4b7454f240568706f0116475707e2ef38f04aa8c45410d99d619395f5a3d3dffba5def7f175d540634927c76da6b6d95cac5162d3832c936dcc96a9592ded0d55f0652d808b623008e8f2f6caca140097b7a67a6a7fd68971567e8c205a6d89b09ea185b4e394f9a0b7910031576af6136fd66051e732d86dde741dd84e864dcaee01c229a3d535bb3db100fe67bd702d03980f3703f51ef487fb7922467edaffd2102dee02f6cc1b74c80ab4cddb005c903bc9b03d8909a529d70e2721ebe9e07e6543e7fc972860bd4c6942d9fef9bfe0ced0d3d231edea33ed8a64a8968b96348d971bcbd017e424bd502915d256acb034bc6169ee435b34ff52877514372c622b7ba26d19a17718e9dc64e8d24315180fbc87c3354d0cdd7cfdc639065d0649a0b470c55852cf31e9e33a9dd5fc9482fe3f71312e89e19ede1af06d0e3c0ebe2830ebbcff19b05cdabce4996455ede1c25060d1e5152481c1cc194f55c93aea0ff49158cc753ebf847b6e8ac6b46f5efa83bbec842d6077d81dafdefbac34932c3ca46ee1d813b444e8b0a994b612437448ed87d7e81d44bc3e5298b5f96f986bb3757713398ff02ece3ec73901434d8829ed976ef33940b8b4b798f08e9efbffb740d8d6f9791833e19840edaa80af34097eda8debed1e7e2a01a30aea87f88bbac93a8cd5a6b549860422eb4cc14169a29cfb7625e8db674fef3149ec3c693bd330007dbf3076c9f5efac715d72b8d0dc1571b983a43eea49bb79d31cf7eafe3e10067b7cf6d58102788b7422ece433022db4737e20201c17da6ea623ae7f1255bf5b5ed180bae295078aac2d11b0074199c5167faa2872f588a855b30a31fc71943ebaa78eabb89fa71a6797f207a31f5dc352b42b7fd7da0d10a155c21bb033fd409ecf191c1ae0dec8cba3d5df99ba2a6b1bb8cd7f4ccc6aa08c4174d354b45b102712ac3e549688c8032ad42b93e86c2f0a4ee9185b708afd84eb620d169bc1071659ba1822a14878f9162fe53607b425e7f8332314b09380ee5d32f405a87c0ac486f44ade02f07373ad88aebdd858ede844d05fac7c132ef1d8cf01cdd54cda8aa7ffe3428d87e4b294b41dd77970dea80d49acddf0266ccac85934ba234a19f6fb37ca4d60470ce8433cf80b066b3d2f65853eb80a779d30190c3181ba6bd15c66e66ddd21093bcae00bf496d5221f73bd4c4028e4caf2dc3cce42baad5bbd7f31036041cd386f3203b703c3d5deeea69f853db61614e728a74ddb9762a4265c93554d1a92dd0d100484b074de1f924d896218ad1b56835d3d22bac533bddf268c2abc27a9c550cb3d02846bfb391097320bfe3cdf8d0b46c32a14028711187868ed9ff43b8444e978cdd87b9f56b8ee7b11ccc31967dfcc2a6bf49d6670f01385196231464c3ee8d47a6f059ed8411bb05ded522d399fbbc03ac7b5123ae521ca04d2b6223e0f6615ce79c71764a933cf1f9d85afbabb968b8415ac538d288199267c77c993efe4bc09861c98ce328b45ade44c78e2ef3e5a49ef15162d0dfcd9bb14b6bc404165bb06902a64687d64a7368a665c65c4efd5b829c54d016442f578c9e0d4d6883835e7ec3e73b36de748bbf884fb8e296a6df7bfcf5b4718e2884050c416f9c98b65e7fda12614dc85f3bbe6648de38778ec3387432af068eb25daef6e090a182165b5aa58ba068e576708e69e60634e91767a70514d39cfafc793e5c87c08130310c158539b143cd9786bfd45da64b17a02d4bf4df67593aa75f42f8af7f0b1787dcaf64bb07926b160d6b4e6abb4fa079202b99186d5a9ddc2ea21d514c14313df22b4ee858e65408834d42bc12d04bcf60fe0d36cd405d36e535f365098798171b969f9f23ea0ca7edc94b89079211941c3e3dc9d7eb9672a6ec219b9b1566d942f9484fd5f284dfaa82d3daf70b6e38e4b61ee93ff41f1d8a99e6c58c37ccd4d276794aad63b86a04afc5ad3e2323e2922f0d54c208b7346f0d59cebd8e54537af0c1472f81ca88213b597cdd25e9af6c2a225a53235c96a92fb045d1ac7471261d1eeebbfefe756bd3921e810c2fecb05c129ea24aa33dd6c563c468406da1628da41354b6aebc7b59185eb5693800a44ba3e2be338c037237bf9de0f4e625eeb1444cf6a2a6d26ea8ae4a045ff376c9c37e810709c988a65ae9512300520be0706bb9aa852aae1fa40ad686264c7656242f7c584a6e849a8345f823d485e8eb367a8214a78d81a4f455c22b34179b8663089213d8d73928219e12d838432c235f6d20b0b8edc76031857e79580dcf5592ca99b27e6b5f95eed4cd7e01da63a1dd6dac397302d38365ce3d95129e48ac7e0533bbe6f2a78c31f26bfd747950ad32bd8bd29cd639ef194bb2d04443d622c1d9453d1399bc7371befcacf1a5e859ff14f1b7dcf72f1e8da258ca22e9a5270b3c4119ed6808d155573e21904345a783ec5c9df87ea70ae015a047451a9bc2580e07a6aad4593d9652816f8c583a78ade527626552999f7a2b23cd02449ae1a274fbd3ef151730dd76aeb29f39d879af5a5e681d80baaf380ba2f36eb62044e67dcba85690f42a454eb4d5620c6593455ac2a675af4c802d24c797998e872c54c34a2bbcf7ce16fe72a0f77cff093ba0b791a666c6e755b5a36dcea9dc0ce6d8222d0b5cf59e65268d34e4b34eeee31aab54b1200678cf42cc8d9c339e36ee75aded76d1816ba3c1257348c4376f1ae73c6c872fbaeb0eb323fd371b003f3667697c5adbcf6d3935894817073cf1eeb0c1461218921f89f2fc8f7b86f74cbb937f051441171b9c5de6bb0d8db60fdca0d7408da662abb256d33f45bf5a3e626862ee639c699e7a30654bfbb45d94952f5751874c4196d834af3d2d4cd410f56fd57db91a2df7e591d26009797beb3c9da91b6c587592ca4d95842fd15b8b648ef36b3b05b22210c004de797c77eb3f22e9274d2836f7c6584b5ca0d835852d924733699f63febb9f1139756eb1638f33409cc4ad4ae73812e1b698b18c294613cf22ba45d5c17df22391e17c9a0299e46723eac58f79ba16d95c74813de550f58599469d7adf609e511a66e84fed057977c89d12e3848920e2220be45e8edd5b963c3a645b5930d21040649092789776df698ab8d025435a7991676c551685936177d3cf217d08be0a45b96a07619541827c01c1953c7dc1e6a9978d18f126e76378e60a57166c58f3b30c0b118cd49b31d2f5c36d0e04eb2245de7a6f66469804d6089a8c4832c026e4b21b77caff315f4aebc880d05c6afe3be4e999dec7dab1f2ab28c7913a5045070c0b0ef3c8a7e939878dbf32cb9cb6604f87a60702c95d7ce816537f4e80aa53ff44941cfd2cf71c46917a829164b5d7af4b684520ddd896879931007beb424933ec68d55023cc6fbce4acfc6eed8f94e26c497315a9efab8a496008a2ddef575d808709cddb3cbc644e2fcad7945b0e983e078e229ef9cb5a6c4a6dfa7ac8c02a75331299b096585be6f866c11655d01e51731e02e3e7f6ed651f3bcaa7e74049e1cf44edf710fae28149dafc588a5edeb684707ee9011709641a9f5d0981a6e51f7ef996f1a94de4b94cf8e01b69a0b64aa9c0568e0bd891b2b58d30acfe3f92d12550570defa82321b4ba03247d5fd7101af2011738bd4d8ca1c193874fceb2cb5d1c756f1d2a81c21fbda273bf2442a6b87e132403652d9d7a4812d73f607871a43a2c4e06810da839a3b46b576ccdfb56b012170abe45e7f80e5fc9472499143cc4fa9c38a3a46ed80211978d4fec41338a572d3eb1cb508bf079cf40329a4666f9c5585b7f2437ca1b9a5a8a44a6c29f749f3b9b14f4c6af34fdf8489201cc8d1aac9847d0f48df12995cfac9fb71dccf808c2b77b88505308c49bba325fadd9f9a255302b9019d2b35c9db0d904785ba03e827885243d1d19771b0810c970c3cbf261da782f9b30561301b9180d83d053f4fc411ee84769f0da9105efcd3d626956ec783d5f778e3a4330f2dec409b30237bbe019ca6d9a9a3905266110eb72e1567d69644216c089f0d6455110f507b232833cdfe0528b6649bd47808928f721762c471fc31d5743d6fbacb9e297c89c83d382c6cbd0ce52503d241b3aee800c630a74dcd407f6eb91dffdaba527739f5490435f6cde425a8c0b69c75bd5c6fda4bf7ca220d54a645a3bcd4b090b9294757c5ec2028fed3ceea11a04a07cd0a67d63245c21984b79e2bbb1c8bb3b54749dff6268145322c39efcf7655b2601ce9e471244c4ef6e36fa45e11925107d68a848fc24cd491e108717655e548179f569b060b52a6fccc05e06e1a67b32f32ee871e8e2dbcac86ad1e8bddac7d57707e94881e0d358bf94e3aa268236b0527b797bfe6080a0952358c047f78c721eb7f0fda8c60697687e10b5910267f564517b06416387c2e3725789db604c73e548ad4f6698577be786b248428c333cf4a0936129afb12943bb54e30fd7cd7e03afa30bd31e4f1f9f159f2ff63ac538d61a2628039fe599e1e8a0ef5f90d5a0754bccbde719365681258671113b91dd00986e0974b43a061c2475801f87203c9e55ab2e745ade9dd9c04db346cc784d88ef3a7959e82914cec40690637daeb68934a7f744eeb895d39fd2df379be908319258c1a9e331adc15a980e52a886fe87d951108f6db9613f23387833ae84d997d1f38dbd98bc61912937a9600f4d75cdfd3cecc792f4b62028194ebe745d06ca3b5a7a5efae6a5a84a2c317205766a47aaa5950960dd5b63002775eda60ec32f97652a819424f3ec566feba68787caf2d6082bb575a3953811940906a95536a00487db74a06b278a0d442392d2dcb2efdad4cec9149c9e1a2449fe238062a30779d2d84b813420d5a8d24fe86d7b7eb8c0bd3b19a80f0ab9dd57d5b7d5124465f6920e28e04ce6238832580cd52393dc526af6d7545e217d4122230bca00964053a078c3f9b95b0e3f1c5538befe17c7a0c4c6d971334aff8646e9f4e9f78e9ac1f5fcbcdbc41d2a840071f337c5c529179e9163af7b72a62c813f05d9d2736438958e7bfea36ef5f5388f4765c7f0a81355b7cdd349b6e332c0cbbf25e4b7cfab4fd772f150452d6eef58f6136f8a1b49549cd7203a6bd00281c7d9359ddd17224bbc4514e5220d2182acc90cbe49b7b0a6bbbad946841d8ba660e9073f0cc6a5f554946b2f5a0be95b08b39678c806494986e70cccfcb75f9c359029d2166b9fdc2849b22668b25a4661a75208a6cbacc8e473c40644a10ff120057ee41ac5279a432789c0aa4587c35034701abde5c4e500f433108ef82be9fd96623aac511767cfd4d661303385ca0170da078a7c98f9c275182fd943e0a2c4cdc99bc79df32cbdbcff69ace7fbe43d047cdc4a446d904a4033cb7cb9280270722fb279b093b61de99f4695c886cefa8bcf4abeb709441f4b78a27d43e87babc3d4719a55eaf289a05b251b93f28540fba029c950f3d2b9ec2c5eaa8a63a9b6a6908010100080000000900000008000000000000006000000008010100080000000a00000008000000600000006000000008010100080000000b00000008000000c00000006000000008010100080000000c00000008000000200100006000000016040100090000000a0000000b0000000c0000000d000000040000000003010205020100010000000d0000000e00000000000000","id":"lower_jpegai/jpegai/rec_uv/range/7","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"outputs":[{"data":["201472","369792","197632","378752","201472","366720","199808","378368","201472","366336","200192","379008","201472","366592","199936","378368","201472","366336","200192","379008","201472","366592","199936","378368","201472","366976","200192","379392","201600","381824","211456","432896","208640","550784","207616","564480","207232","548096","208512","564096","206720","548480","208256","564096","207104","548224","208640","564096","206720","548480","208384","564096","207104","548096","208640","564096","206720","550656","208512","563072","206208","557696","215040","396672","195968","404736","244096","408192","197760","406400","245248","409984","197888","406656","244096","411008","197888","406272","245248","409984","197888","406656","244096","411008","197888","406272","245248","409984","197888","407424","242304","411648","199552","425088","203904","463232","194432","561152","198656","585472","192768","568576","198144","584576","192512","569728","197376","584704","192896","568704","198272","584448","192512","569728","197376","584704","192896","568704","198144","584576","192512","570496","195584","584192","193920","604288","183296","436736","201344","376064","195072","379648","201472","372352","197632","378624","201472","372224","197760","378752","201472","372224","197760","378624","201472","372224","197760","378752","201472","372224","197760","378624","201472","372352","197504","378880","201600","384000","209920","432000","209280","555264","208384","559872","206464","555776","208640","558720","206208","554752","208768","558720","206336","555648","208768","558848","206208","554752","208768","558720","206464","555648","208768","558848","206208","555264","208128","559488","205696","558720","214272","396032","197120","404992","240256","408960","198528","405760","240640","411008","198656","406144","240000","411008","198656","405632","240640","410880","198656","406144","240000","411008","198656","405632","240640","410880","198656","405760","240512","409984","199936","423040","204800","460544","195840","560128","196096","587904","194048","565248","194048","588672","193664","567040","194176","587904","194176","565248","194176","588672","193664","567040","194176","588032","194176","565248","194176","588672","193664","566528","194048","585856","194560","600576","184064","436480","201344","375552","195328","379776","201472","372224","197760","378240","201472","371840","198144","378752","201472","372096","197888","378112","201472","371712","198144","378752","201472","372096","197888","378112","201472","371840","197888","378752","201600","384128","209792","432000","209024","555776","208384","560000","206592","555008","209024","558720","206080","555264","208768","558720","206464","555008","209024","558720","206080","555264","208768","558720","206464","555008","209024","558720","206080","555520","208256","559488","205696","558464","214272","396160","197120","404992","239872","409344","198528","405760","240896","410496","198528","406144","239744","411392","198656","405760","240896","410496","198528","406144","239744","411392","198656","405760","240896","410496","198528","405888","240256","410240","200064","423168","204672","460544","195840","559744","195712","588416","194048","565632","194560","588288","193792","566656","193792","588416","194048","565632","194688","588288","193792","566656","193792","588416","194048","565632","194560","588288","193792","566272","193792","586240","194688","600576","184192","436480","201344","375808","195200","379520","201472","372224","197760","378496","201472","372096","197888","378624","201472","372096","197760","378496","201472","372096","197888","378624","201472","372096","197888","378496","201472","372224","197632","378880","201600","384000","209920","432000","209152","555392","208512","559872","206464","555648","208768","558720","206208","554752","208896","558592","206336","555648","208768","558720","206208","554752","208896","558592","206336","555648","208768","558848","206208","555264","208128","559488","205696","558720","214272","396032","197120","404864","240256","408960","198528","405760","240640","411008","198656","406144","240128","411008","198656","405760","240640","410880","198656","406144","240128","411008","198656","405632","240640","410880","198656","405760","240512","409984","199936","423168","204800","460544","195712","560128","195968","588032","194048","565248","194176","588672","193664","567040","194176","588032","194176","565248","194176","588672","193664","567040","194176","588032","194176","565248","194176","588672","193664","566528","194048","585984","194560","600576","184064","436480","201344","375552","195328","379776","201472","372224","197760","378240","201472","371840","198144","378752","201472","372096","197888","378112","201472","371712","198144","378752","201472","372096","197888","378112","201472","371840","197888","378752","201600","384128","209792","432000","209024","555776","208384","560000","206592","555008","209024","558720","206080","555264","208768","558720","206464","555008","209024","558720","206080","555264","208768","558720","206464","555008","209024","558720","206080","555520","208256","559488","205696","558464","214272","396160","197120","404992","239872","409344","198528","405760","240896","410496","198528","406144","239744","411392","198656","405760","240896","410496","198528","406144","239744","411392","198656","405760","240896","410496","198528","405888","240256","410240","200064","423168","204672","460544","195840","559744","195712","588416","194048","565632","194560","588288","193792","566656","193792","588416","194048","565632","194688","588288","193792","566656","193792","588416","194048","565632","194688","588288","193792","566272","193792","586240","194688","600576","184192","436480","201344","375808","195200","379520","201472","372224","197760","378496","201472","372096","197888","378624","201472","372096","197760","378496","201472","372096","197888","378624","201472","372096","197888","378496","201472","372224","197632","378880","201600","384000","209920","432000","209024","555136","208384","559872","206464","555648","208768","558720","206080","554752","208896","558720","206336","555648","208768","558848","206080","554752","208896","558592","206336","555648","208768","558848","206080","555264","208128","559488","205696","558720","214272","396032","197248","404864","240128","408832","198656","405760","240640","411008","198656","406144","240000","411008","198656","405632","240640","410880","198656","406144","240128","411008","198656","405632","240640","410880","198656","405760","240512","409984","199936","423168","204800","460544","195840","560128","196096","587904","194176","565120","194176","588672","193664","567040","194304","587904","194176","565120","194176","588672","193664","567040","194304","587904","194176","565120","194176","588672","193664","566656","194048","585856","194560","600576","184064","436480","201472","375424","195456","379648","201472","372096","197760","378112","201472","371712","198144","378752","201472","372096","197888","378112","201472","371712","198144","378752","201472","372096","197888","378112","201472","371712","198016","378752","201600","384128","209792","432128","210816","547456","209920","561664","209792","545536","210432","563456","209280","545536","210304","563456","209664","545408","210432","563584","209280","545536","210304","563456","209664","545408","210432","563456","209280","547968","209280","565248","208000","557696","214272","400640","194048","407552","233728","410240","192768","409088","233088","410240","192896","409472","231808","411136","192768","409088","232960","410240","192896","409472","231808","411136","192768","409088","232960","410240","192896","408320","233088","409216","196352","424064","201472","459264","196864","555264","203520","590208","194944","555776","203264","589696","194560","557056","202624","589824","194944","555776","203392","589568","194560","557056","202624","589824","194944","555776","203264","589568","194560","555904","200320","586624","195584","591360","185088","436352","201344","381952","191872","383360","201344","380672","192768","381824","201344","380416","193024","381952","201344","380544","192896","381824","201344","380416","193024","381952","201344","380544","192896","381824","201344","380032","192384","381824","201472","388736","206592","431744","215680","547840","212352","551936","214400","549632","212352","551168","214272","550016","212224","551168","214272","549632","212352","551168","214272","550016","212224","551168","214272","549632","212352","551168","214272","548096","211200","553088","214272","569216","210944","407936","185984","407680","214016","405632","185344","407680","213760","405760","185344","407936","213248","406144","185344","407680","213632","405760","185344","407936","213248","406144","185344","407680","213760","405760","185344","406784","215680","403968","185344","409344","203008","448768","197760","488576","217728","491648","197248","487552","216832","492544","197120","487808","216448","492800","197248","487552","216832","492544","197120","487808","216448","492800","197248","487552","216832","492544","197120","486528","218368","490368","196736","491392","195200","394496"],"shape":["1","32","32"]}]},"inputs":[{"data":["-300","-202","-300","0","-300","-190","-279","-300","-300","300","76","202","-287","62","-300","-267","-300","300","-292","70","126","0","180","300","-125","300","300","300","300","-300","206","-285","199","-300","-300","-285","-22","-55","300","204","0","300","-114","-300","300","2","175","300","206","-300","-300","299","-277","-190","300","-125","-25","300","300","159","229","0","300","-300","-155","-14","0","200","300","0","-300","300","-300","-300","-125","300","300","300","71","0","-300","300","300","-300","300","300","300","300","6","-116","-300","0","300","-300","-6","-226","300","-300","-300","-300","121","-300","-132","300","-300","300","-300","30","-300","300","0","-300","-88","-138","300","300","241","-300","-300","300","251","-297","-300","-52","-245","300","256","0","-300","0","300","221","-300","300","-300","-300","-300","0","-300","300","300","282","-300","-141","300","-300","-35","179","300","-300","300","-300","0","-114","300","300","-300","202","300","0","300","250","-300","300","300","-300","0","19","300","-300","-300","-300","13","300","-29","-289","277","142","-300","98","-300","-205","-300","300","-300","-300","-300","158","-300","142","-70","-300","300","-283","156","300","-300","0","111","254","-300","-300","300","0","0","300","-262","-300","-35","-300","246","300","-300","0","-300","-157","59","79","-44","300","-284","300","-300","-62","0","267","-131","-300","25","-300","300","-161","300","-226","-149","-300","-281","-300","300","300","174","-300","-300","-300","-300","-46","-257","-147","115","-41","32","300","-300","300","-300","300","-89","-300","-300","-300","-185","300","300","-191","-300","300","-300","300","300","-190","0","0","-300","0","-222","0","284","-300","300","65","-300","-147","-300","-12","-300","-300","-10","0","300","-103","205","300","0","265","114","300","0","300","-300","119","0","-182","-300","300","261","-300","300","300","-300","300","300","224","162","300","0","112","300","127","300","-300","-300","300","-287","300","-300","0","-134","-163","-300","-300","145","-300","180","-300","29","203","300","-252","-300","-300","300","300","60","300","-300","298","82","-300","-300","-300","-300","300","-300","189","-161","13","300","-300","240","-300","300","300","276","136","-29","225","300","300","-60","0","-300","287","-191","0","300","-300","265","-300","296","300","0","300","300","55","0","-300","-300","300","300","0","26","219","63","-300","-233","-300","300","297","-34","-300","0","-209","231","-300","116","300","0","300","300","0","-300","0","-300","-300","-300","-300","227","0","-173","300","271","0","300","-300","49","-20","300","98","-300","300","241","186","300","0","-26","-300","-300","184","300","0","-283","219","-300","63","-169","-300","300","-133","262","-219","300","291","-274","-300","0","92","-300","66","300","0","0","169","-300","257","30","-151","300","300","0","228","136","0","300","300","-264","300","-233","-300","0","-294","-300","300","-257","300","-300","300","2","33","-9","-35","-164","97","-300","79","268","300","0","134","-31","74","-300","0","0","145","-300","-300","-300","-300","-300","300","-300","0","-44","-96","256","300","-72","300","-300","-59","-295","-300","-111","0","-300","64","-300","300","-300","-300","-160","-300","-300","300","300","44","0","300","-300","88","0","-214","300","-300","-300","147","-300","300","-286","131","-300","-190","-300","300","0","113","-300","-132","263","-300","-88","-300","-300","-300","300","-44","300","0","167","300","-300","-300","300","-300","-300","-300","-300","300","300","300","300","-300","-237","-300","-300","-47","165","151","-300","300","215","-300","-88","175","300","0","-255","300","83","300","-27","300","-300","300","-300","0","0","-174","300","-62","300","53","-300","-300","-300","300","-300","-300","-300","-300","-88","-247","-177","0","300","-100","-300","0","300","106","-4","0","300","300","-243","-181","-300","-300","34","44"],"shape":["160","2","2"]}],"scalars":[]}],"graph":"57484731010100005f0000005e0000000100010000000000000000040000000000000000100000001000000000000000000000000000000000000000000000005e000000a00000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000100000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000010000008002000000000080ffffffffffffff7f00000000010000008001000000000000000000000000ff0000000000010101000000000001000000b91600000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000020000001a716c00009c9e000041bbc480d4448cc977836ff41de17d1db83d94e7eb8ba43ea626da746c551ca032196d0a30002e51749e0a292a67ab68878ba05cb4b46a88724ddc50c1f15b40dbc3b2dd7a4d7078cf8b3bfa27dafb04a4a3af19379fdf94855d5b3fe2e1e79da8049992f1c942c5d4d355b1261259d659a74d72f57bbd1343d09d586f156fe441da813c9da40ca2c53947aad457123aa568df5dcfec220936c35399fdb9fe0f21574e1cc24bcae49063b6dce7f45d6c5ca088440f2f51de47e81f486f12796b555f3553c2270eded5aae2dde4e2e78012f35fb8d801ffb56cd34522f540bec880eee8f2942088591aae802a60356920dd70324d2ce5407b14a3e7f5b921cdd3c854b33dee51820e3f7682b1df4e22ecd4e8b3b224fe6f05df5e7ae9ad913600de524eab11deb420ca54483907b21f3c96a11cd40399df1943c58d79410a399273f297d5adecb4debc76e077a67ec7afb83b4021954802a504c931c3313c8cc0f300cc61de44fa1c9f5c1633f8cbe7c4cec78998be7a7565a9734c50f96175e931306de53b98678b6348b3f04cf644f5a2305e91c241206230c9cb7834657de14c26e697dd8fd64f830fd5b0f98777955ff8131dfedfe6f55138f050c4a9ebba578beddf4f412d0de957d4c39cfe114a170cec8595977b58f9fd28f2a8766f6986088047f8f955acf2c6754d4405476ec6c96898a2a4fb5ff1612e8e910e417a98c37647c9c2d66a461e4b75fd9f809a6af54c3d24153601f8a327c1dad381940027cc3de03552b900c131b705d34decc170b921d3eb560c5d7f6b9e7ea0e2f1ef3c0031e8d9ec6cdeb68bb8beaed60d411de1804c42102685fc82d33ed17d6ccce8e707e4015749980e372b2e5f0e96b2afdda6fd4c30a9eebccb8b7a8a99cd218003cce195b5a9c791d563d313c8772915c797bfefe4ef6a083ad47c2c90c65962295e4e0e299f5c26ca2d80603c54f38a461f991ff136e9eaac117c0ae3d80d76cf7ad733e5ab5a0f5accb7ea983ceb1fee7f308b72766cc82b93c8353c0eb725679cd485b760a9d48eb1e341d14366f080f72e7ff169eb8777c575006f0190320d8c7dbbc54b28e9a3195c4929d23e50aa155e4ac69a37638122f066bf81dcf66cb4a2506c6257afd2f72895d7e6d3ef202ab52b8128100f8dd9db8bf7716f27585e0580d96ce1bfa38e5f26334c28daea8ae84b1d616c1c4bebe56d36ff89c73cff8ceacaf934b6bc85c0e499ab4cc8b1ec3cb856216a0114e6f9d47b1d1a6e8f25aa24cd15a45cbfd9f0227f277744f6b31f84483ab0303bae9e974e4028ceaefb2ce2e8610df67993348cac700220b4bc7cffae0f1fe7cfc6916ba139c8abb3090430b24118f3aeb39383e39c7572e4480da0d475a1277ad016e1fca4f81000be4b37ac787cc9dbdf64d7317f21bd82f54660af6e030cdbda9443e8d1fae34eee00fe047a87b0b00291f0a342bd00711db1d789777eea7ff0c824d83e9d72cd2f5094da411bf27ab55b69d70536435cabf0e7e54aa128f20d32bd888c193b6763f5f479e2190944cf48c36e7b2d236827c6d630910317e72d2b4d3c19c554b3b66e87e62704babdc599e19021f8ca8a22b79ef68113109476e725ec75cc47669d44415937edd20aa457972d75d74923e3b1f39debd3b6349d60330bf46bd4ddc70e321102068624a2ef18da50434a046b8402e7f04428a5c92d235f99a05258b57c05e5197403521e62ff79ee3d7a7ce3d1e1fd424cf75af81e88629fa79a6f953b8164ed1ca9f66db7263e2fb6fe868cfd276df64e2a07b5408fbf647e11697cc2a9453afcb1c81a349ef136debc1495800a7d03f12523983b4ba021677c110ac4359c879b106f44905f243fd77559699f93277540f282e4bc42a5c166b3445ec58fa7f03a4dd39efcba5ea937a1d6c5a385f96b8ff127375c1afd70cd47f409dc762f339b409fbb9ffb2adbd85e7f4ce3be9b338a7e306191a734057398a8a1364f525228216719bd9c200f552af5b39aa976851c891d2ac78d56083b712b54274eba6863bf98f6a67623cb5dc8d6c6a7f177cc77b3dc323fc493874896f41696b9550bdf57ef5333846297ccbfb01e462318913e5fd2c78a45affb47c5c010ab81bf3546f7ee537f52d094ef3cd7bae8705f34617b966f7b9dd592e21f922809ceb913b395cde7c09fc4677a50eadddab0ea8f4aed9d6c952081d0b04f3f1e28b8fb22cbcab3242d6b4a7d18d2896e20daa15146f0f61fd3c5f0db0cd1fa46cdd2b7ebe3f05b9133ebe0ec2b820d4dcf5ef866d1b709a51198d60fa59728d382731c2d8e02336bc021f56bec4c934461f6cdd7cac576884bcfc68349a31dbbe6edce0e25c573d5504806e69a9777b7ec4b7eb8218a93473299765d3f752fe27196758ab3f9318aba0335496d0c991cf97e711825db36ee2fb8f93e41846c8a0575232ebfbe4f3d458ad4d688f7e9bc61ac9803b164accb203d7ec47591debc621c4740ef3eb481e2e81446860fcfd13a4e8d963c67e648c8774612a9c23533f21f26aab1bbcd7ce292786606952101398a1095aa0bb56c259ed5562e757a7099e18b93c3254255c7449b1dce08977c55b0bad3381b2b5c2127b18480b64149f029f108a8550386857d49e20127301c44e4dee8152172b4ba7a78140baa1feb5497e117193573259b6044921aabca27766662068ac665a4c939e9f659897fae78bea8e3a738068fedc4a1537b37636a25b1b850ec6d64ded588455070325ac1bae4c7e00b7f31b662a14bb611443f01b6e4e9f9558bfab4d8b9d6cf42fd13ad4dd123bd84a104d34be75c6ced88170b99ebbfd3c6149a18558372ed12a568fae2212a48bde987fca975fd5445606c1ab68e9e17be1611d92b529fd9c1e773e3cafc3ec8bd996ee82ac1ae51f1aedb564d32cab7148896817848e574916b5199707e624f463804b73f17c15a2de0b45ecfe0a8a71f80339b4b473b9dd1d8d50568d2e2d132b1f1292f6fd8bb243c74381629cb156e119199850fb0eeee329573721737a16d987e0af097751e2a78969858ea3d2c6627c878a06172cc0f31e384fc49b7b885a9b6266c826daa29d74b090e0fd12314070ed812cb9110fbe0a7e8f03de23b632ab3638d9f971b0b5eec0718e971edb49286e44324ee3dc5596c3485e768bc37a790795745ab332ffe15eb241db3e0c102bc7e8b970af9a5c155d625933bf5ba89b6b950f4085740b57009c272332db106cfa69063c7ed586cde69ec2bcde91245ea92c81718259be53ec5e8f4e06df3634e4228b03630fd6cee8af3801394ea7c372bae91573b979e2481515da01b571d3e2ac4aef2cf3dc08332d60d81098eb6ea44a9b17b402ca8479b8f3c107ecdb55c7bbdea2793f260822bf8302176988025f8ef2e10cd0800d758518eb34001924380412acf386e8d891736aba4be0ce8381f960ec19d088d1f5f910ae7843e771607285970e1f30eb082bd05f713d74ed1d8e63e96e9d31f8e407305a8724c248da6a3ce70b5565f6e38959f2f4b86778562a283a4d2482d0bc5ac8c26387da6e9473c168684e64ce7e7a23fe16b694c3ebfbed72e2380769fc7c6f0ff26f608359593cca9e47b5ef3437eca4a0d48f602f03246d18ab9e257c3185c53c97b5def0b52ca916a39af81801730397c0f970a8285bd926b695366206710b687f4b4f406d5e2177ff9cbd6671e747265f937b6d1480838dba24c16cc7a7018730332ea01ab02068d2f7c862101e0c7a313f8231750f7d87ab9926e6a801ad2262daa2565a9504330e421f4edfeaabb9d24c38817ba18be965aab4d77e5ebdc7456337abf551f3ae3bede50abdf046a608adeb93829f218ba9d9fac04ab9dc2987622565048e111e69e95de01b7b7b9fdc3186b97d3076c4ded9185a2fe941365af2e63a13ad694ade5960e7583dd3a5dcfc23f1e9d414b2640cb0e551ae80c7738812ff7125d7db5fc81dd4b51f1c5b088d3649072e95bd2516bc49c8dda3b9c93c4b0e568a8f1268072caba55a77a4b92542610a62d87b6f368a8621cde80a080fea97bab46c62f4ed929fc76ad8c83d5f7d1418c6f980d4e1614b9be487771bd515efe8b9c1c3e1321ed73a34a4c732ff21c56da6c8659bdcfcebe6e1429ed9f45a178ac4d954a5eaf335c6a6573f645e5429e6eb68eb45e0cd8a397536e3a51b26b6d7ed3f2e1e1d7e40c0fddbb9f62bd9018e4d6dd9eca8bac74037aa1305c3615c12f9f1db761a6c234d591dcc3e5e1562a5ff41fb9d75ab6458195d962a57ab32a2e07545d8376ecd0f6f35e2584aa77a62abaaffda46e407532d90b139b3516e35f83e5c98396cdbd8584aff4b1d4f64d97d3d891e9446f0335b1b35d6c6a1ddb66be942d265a28762fbc0213bb4cd0b979623cdc4a65edfa411bab35e3c3fcb13fb3beb21ebc79f0a9d7bd2c8708554e9b3da5ce7ca3257e88df6fbb1dadbfd2286fe3d36e178a294a898c187bdcbac572768af02b36cd03804e22d8497c1263a81c001374f267e62dbdc8ab689ca052adf0821f3e2cbf30db6660ce40b228763ced8a7c1be31e81d943590e92608769401b35fa32a086e51acbb3d9a9b1d146b5b388b72e32023d22944fa377760c8f03b5c21d00dbe5b4d9fe9da5b40eb7091d59338ba25d7f4b2a8b2ffa460c35a9b89f9cccae7ebd9e5dd1b8bcaa4dabe04cadf123b77d04b54d9683baee1326e7389f45d66a8a43cd8605d65bf34c2c4c40f48e5a2c6e024c0e5d4c67b71d9b16af8ad31a118671c64c4e9ebbb54c661103905a4fca8b43f8994e8ac0157f508093137a85f84062485bbb81c05446880af42da609d932300b04d5b997389a458bcef48c66ffe93cba37c4d0d59eb6428dc82ed1db79ef1c27f88cdd9794d81c21939a87c2089751a0e403d715f7d50d6216a3708cf7c1bf3c8a7e3e900366b022979cd7234593c7035e1a84ae8bd551eb694343159404446e3011c8b2a6e845fe8817052bbf14b9791906ba4d0b23f859c3b9118a84e91385814dd86e0a7e5d535c2b328638afa436799963166cc1ff51f158a057ee368c84915b6bd6a2df29bd93053159a2fb857a97a4b408c204881c536054f7c319f922723a77247ffc7c8e61d00b2bba38d779909de96adaa04216a9e5a3335b6aacbcb7e0adf531267d8e8144fc27637814c09a95252e941302da416df581673b028a0110c8cca060d508abeabccc34a8dccfbbb06326a9d86aba5272342c173ef5d6960402a63ca8319c4e9694be979cf77b55b16fd5a863dd7a6e71c1a895960763c743a25923b02099a4dafd4f7d5187b65cd67a007e3dd9412c19f79bd8e518a5002f660749a820f8ac1cc92e1191a1226ccddbbf79bd6b0c6352faaa42c09237f7ccc924371a08e06cb71e7dff4838336303d0f2a3f99b4b964846ea5a568b98e34ee799655d4af7d0d82c6c631635ac5ff86d686701b60a32a66983ff5858ac1d9a37af83816db179b105daac593fdcc100673cca702df31b816b008dec64e85029ca695b03478419af6a20fc135101a280daffa0f0e5bcda26ed3d8b55e2f4130c64a92d87bcbc8b9b350f2c48623cb82edd2c3452139432166073bb108789043ed33b5daf80bc1f6a3dd789b0aa6f0bbfd09d33bcded535c253f1ca47d5b76fda59e2dd5f5fbc18efc234a2ce5af50aabba134fa5b2fcf93e3f3c231b3b929ee89712785149a612de5e2392fc6954ac8a11604aff6a7852b07df581dd5c2c823f4d455a84449e577b115237b040f0bc4f1edb3d87fbf0c2a02b773a1a7d2c61c0e1e334886f835254528387e28bbc448676388fd463a25ea674ee8279d8b5d15a99576debcc1123bd8a74c9bddd395867da6cd87d9d385c497f643f20f4016f936d3941476af3e7c78767d73d3f82229ea50630743bc32ac629760234e61599c7d7bdf2746c0631ddfd603e7868020718e52b8e7d24613ef29d5bf186323f39a130a596543f92643a7b04ff69fafb1c0a2d40c0b48a50023def4dbc74a1881c9dc991f428174890421a67e91285dfbb8a533e974e54c6ed5b84345c723d93be96670adebf843c29c6866a199fdaaf9b9d4df85a50032534fdb6e7de8e961d0ceb876e0c6b938ef6b5e7076fa7c877541a111e039a5eb6f6f4cd29aeb6880c5dfc8cab4c1a8809c0e721a9fb30325454b307841d58351babcdef59711418ac68fb23ebb8dccb5026d3437604db6d26668801c496a24e4d04be2b5093ae3078a345d963500ec3682d3060412113a3144cfbefbabeb2eb487d683c83f98b0c410fd562f1bb6023ad32c1ba35bfad42e303789987c601b96fad8cae72c8261b2d51b75c6d9eeff084a9f7f51a60c3da486542e2cf21bc8ac33e5555da027f820c7e0dea66ae18fcacc0105e2f128b2d19847f45b8541e5f168dd6d36f31654f27b16cb7f967b1ddd94c8fb788464b801f8dcc3951e974a575971b441cb2d1a0e10196a8773b4d5733e46ff404c0820c131193d75bba352b4f205677f4cd275a57d62fb34644a29a50a283e5327a42cddff2308cfb4a52a137c1186aca5b3f745dc8936154d55e3cccaed36f1c428494be14bd2ec79d86aeb0b8ef24fd9c962d9d7d5eeb94cd40e9cc99fe6f4dfda0148cabecb6edd9bd6df26ac3d96e79e7783300dc6ada98da97bff2cbb00aa33855e3b0745ba27bb79baba87f9e2500cb691d47feb4528a6dfbbe41e1934b2fc5bf74357eb385a97ec57b25015917f4cd709f9de4aa578b49fe8512bef75e6ca3d63255fe4d4f08d0d9adc8c8063d5d9846e0be0e693b2e916486deea1ab6269f6f9230488e4e64a23f9a2cac302dfc6a4f3d9bfc2e46c807723568e67f7c6876e9649e8dea75fd1bdf24b7d772c20c7ac7d60508f26d0df7e9134f0aaa155500bf9febe733b251072f84a8b20d8d7aad9f1a4a87635509c234d6adbbd2e9d44543be04107ea20cfce386b661857e843566f3a192304894f1139f6e90eaf2208b9bc03165de8bf6cc6a29f54e6ad3e805eacf6b823ecea5d36fda6a7719bed89104832d38902bf5489567a5cc888c622da6f3d2b1bfb261c3ca6f8b0bd824b2c1f27d8914602e41be79d1f161e62a9123ae345e1dec8165d6d8de3f88f62e85b93e52468c2e86c530f8318b5cf8dd57b9025dddf3094c1cddb98c6aa1709231976df1b166410a8d3d907271a0e582f241d4922f7429e249a965db42a433ea61478c25bbf557684873ebb66a14591557f1e06ad5766b3aaf83f3227ee094abb937d9c012f674d9e0b8702e53c26cdd1af8df91826c3a3eff8c855e4a5ea66491a9d35716c51d3c4745ad156b617e1ab296203d337d4387c342de578223b644727eadd2ec41d4540bfed7450cb39835971b43b3eb0a3278b2fe4f846db567fcaf077bc0c63019ad5f476862a0e775a16631514d53bc7330cc6af386c0ab9d2db5567bb16413fffc352c633f4f50668e038ceb4ce4c69b138f3837f8bca13e5f485d430be72af6120580cb4e1df1ef3899f192c1ad26bc5b9142ea5a67fb2cfaba8d4d20215f3c3e68e08b3b9878a8bc8a0293441f1738fcb020440ee1492c24bf5e397ebc3cdd20d358fc2f4b51144fd0240a9374e23a3bb84ffea1def8ab10113429b662bd78166ee5f7e720dfa1ddf1587334a5c97f4fffde671b87a261bc5ef413daf235afc37bb50cdc439adbb88f867f15acc29bf945a187df083f71a92e10c54d3ed49573724e7ddc526e49a9ab5ccf8ccd4f45e48ef622d9fa0b09a9aabb053da9bd8a3842a290a8898e25d1181dfa99ee09d41140d0d82ffe718c23864cacdd95a4cb4098f66788bdad8ffdfe7345d4e2f1fa24c7b7bb672d6692deb96ca8c64cec47faa6df2ea5e144085de8818df94c33445542596a2cbbe1b2c51057fcf24aa502257986a7769ae843089262c9cd83bb2834bb127c9c5df4efb082dff377822e70b2de22799c8309beea2cef5f1f2e05f757409b4bf72f6891da67f45262a73b91af554fdb995cca59812801afd09e647926d81b209506e2883be8997a8ac28bfaf4bc8f2689581b63171b685458ec56a25bed63efcc91d6a6c6c32f1733af6e958734ec0914ff361a12ee7e3147d4aa80f09b08d0fde53a8554402d8fb84f0b1525d08e025b56e289710c01010001000000020000000000000001010100020000000300000031190000a0000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0700001e2b8300003344ffff758200003ce4ffff43c1ffffc81affff5e66000095d6ffff3bd6ffff2b8c0000b7960000b3bc00005bf8ffff88ce000043fdffffec68ffff5b7f000051d50000ab4e0000e32e00009dd6000021f7ffffc5fb00000712ffff463c00000461fffff5d20000e66500000438ffff2aaaffffdff700007e05ffff3c740000c33d0000cc9cffff6fb10000354dffffe0f4ffffd6390000896fffff1555ffff08e2ffffeee100004f66000003deffffa88c0000ad2fffff45a8fffff6f50000efe3ffffd3b700005ab2ffffefe300005ba200004250ffff5a34ffff70e00000fceaffffc057000081a0ffffe0ac0000040f0000417e00002d15ffff1c6100005e7bffffff760000480fffff2f24ffff5395ffffb1440000ef250000d4dd0000cb16ffff5d15ffff768c0000492fffff6926ffffa63effffb107ffff68c20000d7b900001d84ffff3240ffff4d9b0000b99cffff75790000e66c00000efe0000f8e0ffffdb56ffffb600ffff8ff7ffff3e3bffffaf650000380800009ce80000029dffff049d000072c30000916fffff4293000001c500000f6d000082c8ffff976f0000ddb900002a2cffff2964000004d3000014fbffff113400000b090000c0b80000350d00000e4fffff3e850000e5a1ffffc149fffff35500009fd7ffff76f4ffff3ea8ffff8163ffff40ddffffb40affff1c170000fa380000366400006196ffff12d50000dffcffff30f1ffff8255ffffbf8e00008e3e00005cb4ffff10430000d97dffffd02300007887ffffbb46ffff0d26ffff0061000051bc00003a02000063040000eeb3ffff5bba000082610000d4efffff7e71ffff76f700008509ffff11aeffff8d780000a574ffffc173000053e900000e2c00001c09cbffe106e81439dae53d3c0cc74afa74fea19207002236ec6a336dceecec607a7bbf78eca13a799af487acdd8cbb7e5e6762a0ee0f1f9fa5d193b8e0b2129562de8f146f6132db3fe304057df092b30047f0c6215a09586fe2139bb0a77509d03b34a147f6e547453c87bddcf1eb377d724fafeadfc44a25f8fbac7163583ad059df1bb2406c238d60732ee4d4456ee85b60bb7b4c12c70aa6f8634ed1fe7ec98d089e8d4bc2891af3cd8e9a04bce2042b09cf6ccaa122b762602a43ecdb8d0ff88734dd99fa978106f628507f94203e0660b5192cc9ed99ff4d8d02f6f9fcdd4e820f04d224ed5445401af71bb00c5ff1637f060cbe1d10b5a4698d2b9aca2dd28aab71e4bb77c0c9861d8f832d2cba116193af99c23898ba9a9b67fc5e8ee6e497a16b9019e584816c38942a4cb3a2c48004958ea9db56a9e5a4350d7028fd74436015cac19ae377a3b36dabdf3d5efd87883f70dbd9b96a78a7215e62afefa27ddeba6c7026713e605b4fddd84dc7335182f00695ea1892f489d055bd7aa91bfd3e2aeae91ea5e21c63ec9ab0c1af9821fb6dae51aae7da7129f571b9dcead77849ff2a232a6e10ad219a0bc5b308b6d43b26d56d95047c44e71bbf1338af0da052fa683a3270f59eae152713dc4db71443f4934e5c23a422c9cfca8a1d50878bce8e66fede986391b530d60b77cf5fbc3044224c4d060aec99e51ff97364427b3d0c7868f847de5990057d5dc5c43b738289419fd6dd2759ae70aadef775bc8232b6434e1d91eb2d897ea4a9c1d1c5cd65b93836523a721d8e4577ac83d9fe2426e618b76b7e8a77c7416e962fa463b3e5247f24e99cb39114dc7593a6c2a76dc60c5ed02522a556ecd67fc0c689f0bf348511ec919a2976239b4e2bca86691656013e235f79f5aabf54ba0b0cf325106cfa77fe16b081e62f50ff0bd6166b0978780210a784d5f53eb61fdc5433285fa947bcfaa19dbb8f7e2a4cf8fdd253a83c2eff6a5cbef7b80fe3adafc7b8c3467b78c3e41cedd053d4885510ce29118453dfe67b119fd3022d9d1b3f6b57fb51aace302030c4beb0f99724549eb8d0c75e90d439de75a3faaef171548a5cc4bfa375863021a662bdc50f99455d56b38686261c90ce2f7f1d848772720e178b89bd077179b190a507d994afc0ff5f20c73ff2833b469685b60a26ad758d50e088caf29dbe41ed05ace17932e76affd19a187394d2030e4834cf2218348fe4d63aeb0853049208e78a9f94009429f6c09d30825c4ebe3d539439759a0358f6a5bdbfc9d50d92e7bb4c976d3831712ad97b3f9ca8147b67fefd4cfdd5202899c89619e3077bb6db8c3e31690fb1156982f398e13365398f76913cb225358353ec9ada79fbfdb01caa61fb1f85546f3967dbac49124edc5fd137b98195783203540d840d7a4f43b6031dc2091a99e3176691dee5f3d9d905a61e15e6fba97d864c367070434abdd16652f1de64f411e30cb13a6d20753bc503db87eb82ad267dba30369182a123c78253c713d497bfdf9655b9963c7c2683a04952583cf212ab704e561d38c722ad99fddfcef5f81dea60185ecd5e7034ae8f810d1c7898c9ad087b1a29ab75dd8890b43d3e492acb4c93bb8ae18faeff7dfea49b06ce3c0df6062d7ce86503a2360266da8e1f8be6b5ffe03e15559920f81b75247a04d72677b8796ca537423b27a5122633fb41a187426867b1838757fa1ccee3a0d79abbc2edd70155112c9fba47c87a571b5b4059e85cd553c7967a7ed2e7ab3b0a942afd1cc5f21d0d7975c58b0f79732b9725f71a7937d7188355b347e6d517009e6ea92b902def8abcd1ff0dd3eb740a10c612887003b6ca7ecc812363c258f8d11b8e269e1a84cd615b57abb887be3836a37548da440572688c1487167c5f018f4dcea17f1875885c436c62a177e2fb222558a5aa120af2ea992b348081e190d063ae12d6133ef813a2dcb81afb4eed93b35e0519727939953890d783f1fdff0454ee6610557757bf81ef5c61c317d84ad5186a21ca18b273057c07745ebab80ace89cafc0c35bcc845701eba7179c7475514619aa29f73c256b66f58869b4a3d6f50f23e6c00e03232a8ee5d6a0353417353f6b9cbcdaef873c19c05c0304caadf82febbf7237f2f0b47398e8d81577c17573e1fece9d615197da45005b0e86ee82cb7b4c014a2d8f05a046226ac9d1d94d9e97e1e76c15bac58e91d776c2bde2402c7d8bb657bb2758d7976f84a9d46dc0c1d367569354367517faa0d969f741a91af4b05db591998b0fd95af1cf3403cb3f8363dca62a302a85c2847065333d643bc7644fb33e1e28145767cd297d4cc3cad93185df7cc3a6d405a297bbc70d35168b5702d2d918623c40e5469be28317b454215c4c4c37f232f47f004be7b4552daacabd767088de8bec816a8449f7335e47728592fe90b370c14a29c0497a0bb45a698dde3159fa7bfa18f65a967ad619b5841a36f3fec104f7e1e033955df39664bec2526e856fa4f83a6236a5e526dbdfde3ff7c7de361cf8c1550cc66339fb11e7fdd944011968d08cb4df30a9199590faf72ef248aa8ad2955f066dd0ccf94a575330bee4195c0128fa501d9be6a997002493ec81219d1d9131cb4d6836be7d8469e58826ec5888a17d7e8920e93747ece309cf84f96d532a5b2b4fdf59ce39bdaffd017a5c41320fc5290b2809e5d91552d5a87bcfd3d0b283ec216096852a332fdf3f3d33e4fd9701fc4b024098ecd0f812a479a211ee08727be9f5c086d65e657a46655992528a92ee2ae47100649081f9980eed2c1e0cd0541da40d035544d06f41ccd4727f76fa5a2ef5a2f0d0dce462e6778789eb8811f90a39b7cd8c52cfb96366074d7db0cea8cd0726a28d9eca94f91cd698efd94031e35e21281472acafbc58eab1bfddeea0422e18f715deea0396696dac6179119be0fc848d407925b6aab5431e5ea3d92c55e2bf335a063b96028da4b366282185a5202c0c23479bc610722af6edd2d294d058952ef411000c22d7fdbb04c0a2dca7e5367c0cbfeaa730f30bbf029242763f702cd43ab58677db5d8be239408c7062110fe2f15fa764bafba01fcbbda9cd1511d06156725621b6833e7af360c5e6380e3d8f2ed4ee9048b977c50239d135dd3041b2cd04d628410ca153191c198c83f3baae59e0ac44c266abd02008e2c31dd7eff96b728cfa81afaa5849d9df6dafcd63dd67957c9a2538ee38a4ef8cacd63c23c0142bd4169d82f7675b243c03ba762174c6c6d128888233fa2878f45533561f8993a4ee91937d30a81137fda51dc7e729ceff21188fafc837fa622a9e11f577890cd3eae2b5af7f9a2dc5c13c72ac6373d8cb9fe7aac518e2de01c36f9cdf49760fc1cb21bae4a988cb3c62aea9dcbb66404110084c0b6dee63826c3d91d9697bdb4e9adbeff9b6f9ebb9654e262b801366e70aebeb2424ae6859bc3e0f0fc6df81cb48d4c286bb679220397de5aa83eb7ce1e8ab5d85593b042283653e057b1fa318cb265fa5be799c8f11bf78f8569be6cda7b977efcbf89d298c476a48a815c46eae352eed391485cbd01dac37daef2004092e6b39774e4c171a7feb5841772fbcd8f8a78197e105814ae4c0c660970f975922cc72aba1420af7b423a2773deb31b90bab0b7234c8f3b3db09854a3fda8726773f476de31e0d67f4b3da8dc7bf0b7e6db58e2f1e2815f41b8aee93f788f89c84debc20b4cef9217759e3289afeec85a6b1510f1e8c17f00e7968cdca2cb7a7667015ad0c71f636ae03270961a3d356ffbe155c0b3280440f3c1cb454f8c51136f657915cd987f7a98ccc564f6b1731920692714f2e6364751ecb9ff5922dff00ea94edc1cb755a1180e29f6e0752fdc888e1112b21929a0a5a6a4efd7a20318666b1e66607613690b27225da1923c206b649e224cdb188a535141f09c9cd09ebc326ab211e8615accd304ce57e988592a7396520f4ee3ae3ab8b2850bd7bb7f4e65c3d555793fca4b898e7d443b7703d5f52961813fb17cfe9d83d82d6814db809194e5913bbbb788374ac34dec178015918dec370818b7b8fd50b871d0d14e5b2737953a28b8baf3ab3c4e5195007f4181214ce541c79318115fc73a05cc4118b965fa9506a8d73b49888f333faecc863f40ab704853d7d6fdcf1d494f46b7fcf44438c32c4b869d391b43db934fcac5b22dfa7cc7d9c501ff277c6be3644155cdb7a4d2ca7a4d655967241e28d270c6e6b2a311471e4af79b7353e3632083c5355ec31e0d288562f30d4b964d67964cc38ccfbd5e06126a9963eb6db1a288ac4caa927a9948a56ad8d8c282ed83ac7f21baa66b712b7a09273a457b633368d6f84f66b912905893b16d18a938c2781347fafe8eb1100fb2fb0ac77b82cd12a14a6fb5949a0a76880a59ee6c31e59afd68a8d2f84422944c5d415f47ba0747e90202cf25f04e5187e1d67c2e1b3a84b3a6943037326475d32fa30d994c79b2a09ce0cd17efce7f34076afe9b767517223efa5e0242abeeedb4abbcc2cc27202690de6ae65d2ed2878948d5b4d1c04c213b1a1a52139bcba980e900794c619dd5e818b101751e6bf94985274712a2130bd8882f2ecdb8d1e8dda4d16293c838837e0644e1de91bf488ef78f9946fe05a94c5da512192a34f3a5fa5e9eb18211879740bdade0cc8331e0008499227c2281cab06ceea2f692a77eb032dae7a16f7dd371daff0a26c8e9b1645f5486488405d9d6d661cf9f316c2ee712035b0f425c236e8e257b63d3aed3203314e5745f0855f5400bebcd27008296b45bf9d30d3e74ad7dff2883b2668e044c1582186592aec8a0254597f9f79c8d34860d75f0976e33f71ec0fae2fb1d21ba05bfe7cb4614cea5ba1f953d791dc0600cdec3ee3ddc202ad881c147bdec3d0007a4eec232a8899f8ac33a9eca27709524c73eb9d3d88c2aec6e9b8c554d68195bd73e82bac6c010161b34c94ffa501019962cc48034031c4bfd723ab330a0561635bb4c241f9c86e74765219bf5a554b8d6fd5c46dffd1e7d203fcef991e168658c6ab9774debaa034e89ffcc19a57f40125db122d66bc08615bf651a2c18009ec5598884527e38b16305a49783ba8fe540b9b11022036ffe029d3811adebb08b04e541f8cfdbe62e884b6ccc31c8c59b7403e51bb037f438204a260a0012a36b041bced970dd0364026f75879a3b47738415a99a1e19027cc21f85290a0be1e179804e2dc872c3dca5529c166a1aa35d49bfb97b1c03e697bff269120ed8e894e8fe35b64a187e892e23e2501c51f4cc246c60f7574f5aa173504286ad0f0b2f03e1cc8b293aff0eb56073a38d1b50cdecc575ea4f78db347f5aee45e91ef7dd1a738cfac73d3ad06c2fd5347bf345513fe8e56a18b4adee960652259573fb80b8bcf3e5df282d400fc8972b3ab623e38a6f51e8b8f9c014765bf703968505b2342fb7397d9280335550e003ffcb0493a655b1499548bde341d11a64a3d73be4e870f0f2ae9530a5b2ba80a56735076554cc5c4ba0adfb6d787af3b5aa648e4a1382e20243d5edfe0b582aedef9b3f976699cf8d55811243263e5a23413bfd47fa7d10132d94eafe49fba22162980e3f344585c445b81854224755e3f4070f1144cc5f86614b290ca4fddd5d9c6f2274d331b18b2bf7f4bda08cbc733cb8be8cc4045a276e59015c879d84239ad22f7368269ebefa7ad1961b7ad233628bc11f1a2b6e88a1b88049e9f0b79f4a3a48333693345db5d71ab3ad8ae9f73de6bb27834e3c397d0bd4c5f3f17131bb6dd9030c25248aa82207aa71ff69b0357155e08bfae293501c8a0e562434c87fd29afde40a6f1c10b6efc187adda6c84ac285560fa1b5e1d533b6bfb4bf058f187274000f5e2f59faf7d72a232773d33ebf966569cb9d302d3b02d4c35287749aee2d632081a53a4fce4e1530ce3f2f8ee36d9e1f3017b1c3c16b5fa8753f7be69779421398e8f2a2f8dc590d153cb58062e1efb5be226c8222aa694c1b94321b67ed559a9f6556432b704ce5b0ff662e55abd3971f99e3fb112a07d8c9593caf8ea5117b6fc521bdc532a6c6fa1b95b2d20aff57d7a3e13d964291df324016d58105bfa88df786a0632591e683185c796936c1731cc8aeb001d1f6b271a4fa96aecf193cd20a7611299216211418a09fb0fe7d748f4d47d3dd257c31f90454548d0abe530410df93358c3331258e62c32ef3f5d5991c6dfa47ad2bb87df844ad98eb102946ab128c3496eb2d7b0d33fbda95085e04faeea48e058cba3e73bebb66718bde67042c49d5bbca7b569c079f1eed50edb497288c2e3c3a6e9e3301b4f8ae0fa0191a2fc3c2ade02e17bf26195993729a208725915db1e8be5077a11edf529bb67a495abc662399abb7b67af07d2c1590fffd7e7368bad48702c8d5a0714f693f655ed4e875ef5fc40a5472472ec9cc535903c0b0c27e269c1c69f6578933b0d2e1199d22a941afb8e1bf010ae3c29be8c77b41f37f0ff5f905898c5cbbef1a088a65354ed46091c0a89095c532725b0213f874221e5f01ace572add66f6ecf2054c6aa559ee317a6935babbba800484fe43b5f90c156662f6a379a47343ed293b836eccfe0f852d50d801efdc11aec3095fa87314e89309197191d40882a99a89d767936bcd39bf9a06627a223c7cae7ba5096e1f23cbfa8237f0de6fe7ec424f403433e391a7fffd6088c599ea6176262ec4999349ae608e94043608d4f2910d4ef0366799fafe859919250b3fddd18ab1792356585dd4146cc770eeac2dc57e9fcdf63701ad06fe5d055c81b3d50d52e20463e9fc4c99a59e24ee9e7e8fa8de605477d39d5ef39b9946a204620c3cd40607d8d5e34256fb3e68eaeb57c2544593155e05779bcd098556eb908666738577fa2328ef018375bad855b57ab2253380b494336acec1e96995bfd93e9537730e0bcff5ff6de1a4a285a30811279b0dc87f5a5941ee7dc9f888ad66a3d4a287c12e9ab5a29796cc45f2a7891345937eca42b3bb40fa41b1ed64a843e491fab3be1a70b55d1dcf100d9a203e305401660b1184aa799109de520a0f2c7c9a3ee02f3303916b4a62c0d51da608598b8a33dd93966cf949f1e0e1bb2615dd415cbd597453c1dca4903c0a75ce9161c6af2b09e74c66a0882b9320398343584c0235c43418efd8ac9a44f49a1ef0b83e9d83a37676c1343ef055a864b90c891c12ff81022918dfb4de1ef1d8111845b9c9da4646275278c5ae70f22e6ce0c96197501e8d92e1d4e30876580bdc87e3df902dcf165031d051a99bde7d6274b099f668e273ec82a9902ae8c9261f8c75d6fc092ed84a5b365d750ac48fd532fa30b7687901619729c9833208e61a283960c6dde3d1e0672c874d81ebb3281fcb4088c52fa04d8cc8c03d286029463c813085f8dcc7e216761ed3cc8d59321468c93b9c9054edba90d10aab684a53a598f7f0d3625ecc662e0c7fff4db278b062451cad430791fe06e539e53899dbbe658811b96838ed97a72388aa885d2a60b447fc58264c25a985d02df9545ccad4e86b61760d49f583ccd713d9c9b0935500077983473ec84c7a99b099b51409d7fbf1166ad809bd16fcca305fd6268b0350c16e31afbf311246a0ba9ee3838aa1191d4c8b5a1fc1db7eab93184a21150c3bf275322be639f3d47ffbc7a5e469b2a9493720eafb5b3bc9b293d902ffa28304a7db700b069a4f8d26b68476c18b7cfc773bc6c3daafe2032ccc358d4e2cce68f25e04bda389caf30840ea494a9f15cbc40c69a1b342b442911f3fe709fb22c279f8f7f8485be417a4f234764588316339f982b02128da5c8e6e856a595947ebaba93cdfde8880d88ef4e3657845b933285bf92b4e166909da8726619c1161bc805d6e89c6c363adf84a0f1b92ed2b5426336e1ad0fd929b2fc11f9084c982369110716fc5bebb9569a60d4d6c009d6822aec4a8db2794b05dcc2e56a24974cd5f490c0c2d84e6c60dc847ee8031dd26776281ff25a3158241e6e40fac7f4f554cff8e55011c21bd5c4faaa184e9fa4bc283e9e3409d0eb0d1a799a1b2667f79c43f597c74d373142a7caf6f4ba6b4ffb384da99a02660ca9731f4d2a6f90502010000000000030000000400000000000000110101000400000005000000452d00000400000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400002d0000001f18a7ffffd1c600002524ffff01cc0000bb104fd19dbf716b69bfdbf99dae6815bff896ca6698477de55d7d1c1de11ab53c3d5647cb4f9304f15bb965e3d856fb296a3d961c80080fde37cddf9d69a8df8009d5dce9dff45187494776767ac3e60e8d15d34b0ed817e35d87d5ae14569b538b0d4e52da8a8fc4f0dc9eba5c974d45715b1c4dbec4cda302fdbb0a5962b66ea36c70a59ff4bf5f31dde8133e29f2898c975f248ec834061fa09127c10ea904781fa29bfa9fcf22021418271a6ceb8f805a5d130ed287b4313bdd8ea49a33554f0f2d42ab066d2be0c6ae4b12f1b2ea18f6892913aa8aa15d31e05854ae9cd89512ffc272047769ea730e4b96c2fe522a6c8c0f452fe8ae8111b8975a02faff19f2dbd02951363e8f425c2e42b288bada0f7ccd17056e00562fc13b9a6147d2658b7eca3812c9035f763d9f25d09d1588c326739c8de13034ba8b68b775c0b06d374584d5cea65ea8ac5cf5a7b25a4296220fbf58d88071d33f590836c1de6468c5f50878d8477ed1e4c2c2bb0ce3bfd00c46ee40071cf13e154cda26e7e6d24299951fd408405d72df73820e75bfc3beecfa847bdc14c16bfcc6e1d5efa5c31e9c6fae44006841ea5dded52d8aad5e422879774b138bc3f6eca001b46b2289d64f47c12095732d5525b0afb3b0488177d28564850bf40dbea9638d26a772f4ac5b11a83593a9de0af6f41e073180ba2795e95d525d54ccbe525f218f3e6ec7da2dca359732d0dc966c9cd459ebfdc32661fef1e6ea84015093eb26b0a6326b0f2b276f3425ba4c2e6abed973db98071f9476e76b8d2c56be36beddea59fa00a5820aebc7606bb36ca6428ed19ce3dfd5a0e98c2e88e6d3a12ac14790099a2f01158b32015658fb22fbd0f9829b7f8943ca314b5104e5b3d916445a11515107df938dbbb1619fc8d2580a4c0f2395d7cc22996826cc54c9c5663d6089a0f9d37818f09ffae2ab0ab3408c5fc1ae69bd08074a9b90376eed23b487a3e381eb59c5338d4355bc94ea828566c00a56501af106e2c3b638957a7b709cca8058d90409e30c987d9a53eb5fb46707905c10fa987f5a0bab32ff53f74bf8fb98a7af87c51d5028019a14cb5ffe1ccb52ac0b32b3d3990f55c4abb199d55076d0b661edcb14a6bff8664c56f2993ec9f20193b97f4f98b5d4e826716b4efaf2d18d45976f313ee6bfc410a88367bd0e379db1448c6b9d9531ef62ba7a4b0f8d241e44a52d149a59de14aa9d1a5bad0086fe0a1935c4308a38d8c14b99202d99bf267f2e91cc22274f448455e923f8c320b6479b87a165f316f839445f63f801b6f4578a9a893f8048078ac47198aaeec63a06f47e895489d12766163971f4d0b2450980e695a99c6577da6bf75919923f569ba2a646d9bb92d03752462c16e9552f440fd0bc218ff061bb02f333ac9248011088572c98385330b663127c05b67c5a5baea3160a732c1a3028f4a6fdc35335ed5b536be7e8971431c9cd031ab0b48035da4e3eccbfa37f552aa553300299dddfb62e5d70b75eaefbc19684f566b6f055890225e14f50400ae0713b9e92455c676d713ede56bd3d68c3d818afb4c7d24ed7324a71ab6a9122142421f94fa6c769b714a6167afadce4cc436b35073379780c466020e287fd7be972f7c5174ef8437fa4ca03bbb6c098a26ce2636476e794ab4a24757edbf9f219d302ba9f3f103c258a20bd8ee61f157e9e6ce2ea05d4fe8a42eceabc47f1392f371c44d9f1ff0430b377b6d097cf3b06d88ca9fa39095989b2de82fc1bffa72d7e33df1dfc7931ee7d89c6dc7d033ee67371a3d3df494f5c02a15cbf61f53912b1e3f0270ab810112cd1ce58fe6007d2b7a4632f603926aaa7c431f666c0d4f5e2bd311ec979399a1d94bd6b2a94fb1e60a79307d3c3bab061e700ada54eeafb2b8bfcca92f72b78124b4f0e901d459a83ace3fdfa4336ac33d1821fb6bf08ca91f5a51481effdcdd6e0aa6d296f03811b4c805fe6628eae3e79464a50f18d3740c34774d87aa94d7f43483d02f5b5de75a23ce3b117291f0909ecf1fb949ac70539efd04c18624093c88fc5b79c919d8ccba34e71d8e4f1ad2f097bd005418b395af721bb6c493c9c6859ab9811142db20a7ecbdae45d7d629a3fc47ee6f6d8e081b4931459d37062c508ce8e4afeb8714fefe6e5177a6479a19deebd4c650bc6f5194a544a1f68c48a5f4a929c5e1657b20b9139b6a04789925d955465f46b1d0569ade0c4ec82aed10dc79cef8df23f5c460b7f7caeded858aee7fa24a686a460062855bcfc9edc96d3b97458f577cf077c9dc9ce46b75dc85f4a6a9f83c69d94772f9ad0a9f094a3aa07acb14f053e0dd8119304643a105d26ba1b27cb027bc0bc02589dce3c62b30188e9b39ba33f16d0f274b2c61e3af5db6fc5cbac59674982e276e333e0d3ccf7d10fb7eafcc699fe27c9a7c744998d19d29c38440484e6851c995884d97678b8e8828758202c4d3bf7273b908ce23cd0d019a4c109e29a64ff8f416c4917c0d0d03cfcf5e0499b99ade74e53d2dc800bf89ecb006c2ee97c16598a98af66afbec67822ee1496ff6558173af3356c6dd8bc6e4947b46ae234661b07131788140933c84d8e5230e3b67669e9d5aa7b5227f20b1ec7a344892d2c1c63bbb1b345d8680085b5038bcb4e1d5df275fddd96ec5888525084d723c3e57b3464536194ab1e1c5c86ab560aac88b2d9c7f64c196ae4b2400fe4b385b4e6f71826f7f1685bf0290234f8d86ccd7586d49e2e80b04f6a17a9f657310ff792c74ef63a0418583b0941aae1023f4912378ba40fb50d8026902d76bf35636e92c7533cad3ad84133f44be0af5697026ed3fccb6a2e42b6878c8056e00581610ecb6c168f2cc1249aa5dc037e426781e91f6aeaf3d9b9528bf0182bc9035736759bf6fe3a0760744e68c6880a51175c78c31529f87b4c41796d96aba918ae96c78644591d0aa078d58b8c7ba1eb72da495dcf56f37e201b1bcf3c09741f85622e66f6f6ff489a9ee3e1a96259369b3e738deb800413c29e29e7746c9cc0b4ef6f324c1702f3ffd2b4d43c679c122190590541ef3760dd820c5c36e15d27e99e48640031fc231ae22b01747a1aad1a43a1a62610833ae07f2dff0537fa8539e58b7847a20868a82e35572840c1c6c77c45968766475672caf1ecdfe6589ef1492b91c31124597816e80fb1b319726b24f27ccaa51946fd5e3f8335cbd3258a7e30ad7040ecd8fc2ec7dbbe91ece25ca1020d80137204bf365bafe78310256762f2ea27531adf51972ed10ea5a091c1ae35c51152de618041d557bfaf3a54c4e53225ab6665f08eb80fdc00733413771525418caa2bbbcbf05af6269d5fee60ebecaf1d8ed1542f7533fd786fa390a8d3b187a05ca89cdc20872d7eae333012cc36720f32360af10683614cc66a5094dba6c7d1af09e7eadb851c008da82ed515cf08616849b56c2e89799e5de0d69115e5c3f11a786c2146bda958807a76145df7fbdcc8deac643355c22746537543b124cb1ab92c98b65adb644abe8938e935ea84d5db1304c012c66b76e312758c932af011f5d88e43eee7d0a42122d45167f055d8be17557c6f2abe727c6fedf63511f8e85fb1b1c2166e98f551035e31afbca206804cbd4c6bb3260891f15570e2d5416c0f0323c3ee69aba1f9d12f63b5b1528b0989b33fb25ede167404a649766b0be301b1bb250a2e00c72e56d05651e61148aff18e0380636a4c6ebd454f89cb9c6000f5fa0be4e63ef6b5ae7526d09672d6d35324c683006597cfd2ea6598cb482b16ab2c3466519ea25e63c7d5cd9107d62eccbf08b0c4b5a4bf80129c92d5c567e7671fa55369b47055e9129147fa2932144ac5186d6b869d9b8933d0b3e9aeb6563aaaf23826c312af4ce33d6a3759d018fb6641c6fcc2e6e94f0c57498215e5808a3cbb0b722484b736f72a11349e26c29ca00bf4ff772299a89e81b5a04b259804062b1da8898615b6b9a5286453376714218e15db07c3c87ab09d566c2337e136691989181ca8b36f7170331125aa0f3669b8c5bb51a7940b58fa9063a69d2cc6fcaac9cb6de4dfc85393193958a4ad1db6243b690be81856cfabb5613c0912304743cff09ef8b47b64fcb0e13a3856769d7cdfae37deac486f00f2e48804b130e7d0e3ac4092bca5e37b111e64d854987ce112cdad0d91895cfedb13deab3b0a91f35177edec9418812988c792889806d93f6620a46d52b8b7db89c815b4cacfa6725d0c2af542c73938cc1e1c0ae05e795ad1cb87c78a17a6f81bba7836604b7d9caca58a2a6f80f8d6343e83ec56395a7dde0e48ab9d711dd12ffc9bad4577d8ec014c14b6a49455ee5c713ae322264b0f233aa8112015ed5028d2eacea772899aa8d0c845266d8ca6870c3575a42cd9674217d1e22edf52fb6d1f03ae846eac37fd1f2d0912b3f7ee94b576218c600bf5a6aec3a0a0c60d602f350ccf9187636e5b8e5e855b719f7c7b9fb857af659a31c027d57e5aa7f3e3fc32560cf1dc37ba0d0cc7732299247d4fde2b5e0c92b83db38324a8f15f24f97cfefb23c7d9eeaea1db8fdfb2c9a6105544ca6acdf66c95e1452f7d2729a6be9a61b06ff04aa7825b9c1465c916a8a9dc095832949362cdf63da3166cc511e9a703bb05dc796fa3c9387663656084dae7f0262ba269e28053bf4a2b40bc3e32b5511f4edbce5e31c002c0dbd2c54dd74ef586d33ae38e9a97ebd19a998f6708cfb26f0564dbe4cda4a2a7efbecb4cc0ae27e63f5fb746c919ceb7b539394f78667047e348f10883c531d4d969696a069d8769d0ba5057946b7e3c710fd4422e481cee3b09f309c14ac80238016b3aa2a29b2bfbd450e017b4a837854d0231b93f7538e7a045451a3ea4960101b7d053fc6bbb1d7d75d1d1fee5bb22744cf0ddf080b451defbcbd0e9ffea7e1b755f5eb52445793806e9d122a63f98cbf5c5560de5eea3e7ea7626f16c91e6dc7b744d519212d3166f50b074a0bef6ce5ca9c0177ae7333328df95037957c42e5f76c575f3246982986197849c178c2e3d8ad6dbdf034446fcd1813034e35bd1dcdf2b0e644cc0bb0d61f34ff3f89bc9f5c486a7988ed3e88c2098d5c74d1c4560f19f0976d4536998b945010bfb176800589bfd4772f631310541617f408fadeeefa6d02059b49d5e7112cf20dbc81fc3e55ea9f4bd28012d56f2c76629af32753b5cef2592f06292a0ee50010585be6392366746b4bf93ea82a1767f1eea045b22219b5c5f4d1c025a67503e047c4f56db52c0848cd5aa379a297e0c80cc5d7d46cf12c9be68c31e391e1fc61a11df97ad318b917a3379f68961f163d11baf4a6ef9790fb835f91e7627a856b0b2993ccab7b315aa0e0d740af93c2b4673673ecf079e4174403cb9d80ee7e3bfa09db8f47b46fc61f397c6f0c41af730fc7610998e34631ed573dd31438af7c1b6b6385772341cbd846c08fd8d7b83074471a3ca1f54639ed8227e8e6c2a30004527f6f0d30ab174b799df346f326e23701e76d5c14d0fdf565518dd38b98777d8f17e27dd5525e1e4f76d8a2414405600a21926d88f2f35f5a87af614bdde712146a304e7c77aaa2a7786ee7fe17d463de711a72e75d470bdb090eea73b23c20e24d7e1fe3debd84344c84c704ebbd698b8ce8fa49550bdf1ef68980b83797ab1075e1072fd903c5ba35cc47b2baf2ad6f28812f7316b977bbd6d7a9aa1895e585c8f5fb6a1431d897e0249c4ad0a1bffe40f5668b443cf19c5f49689b761134a70882840083f352a7d7f3521192e1204cf006f31ab166dcd3ac9af848d266ccd4eba9b6fbba03a2b41f9ed738e46142f98f93cb56321fea02f358376ec9d401ed72cb2247e940145d904fbd830e6fbbd0a41731bfb8bbf009bc037942fed300ffbfab90b7ce24e36389143ac0dbd2b3b7658daffb5d43a19d5acd4187a3d97e7cf6769c5c76ca90270ab80aabad8d3a684cf3ec9182dbb2226c3dad6e09d06a13313fe47fa7238db690991ac07b2fc10a3875d20fda9323723a01d8ce70157c8fac3d56b64ec2a6f32be1f9bcafeea1ebd4f876637043216cac56864f39b03ebf48acdfe203645e84a56fc1b07af1fc0bb79241a6157c572aa87646ac72133642400b9dcf4fb148f4fd02f0a4ce0f846d7859a4d5febf36e3d2cda34681fcd09133aac4fec4b2979ad982faeaa4203cf981834bbb1584995e3458923f1f8e66d88fd52bb513ded16c128753ff128dad6a26fc89ca1470cd80049beaaf5f804df41884bbd6bb2f5171f0b298e81c401987a6cb419fa7419255c625ce93248ce5034abc3066c6456282dd325cc8df306e905a1d83e27f4557fa374729d75fc251ae8c57b5a502288032ef610ed768aae03a22153dc0a09e1a9add1f3ac0aea8068f47f5b543b46b8d136866cc987f2a07f0e8c66702725b3ef6149a129c052b7a3b46440b09923c31b9a140f5fcf4c63eb6d74d3ff7ebf8b917a1f6e804d5e8a43528436469f9d3eca8bd35713090262ba1485aed88458835ce9f2b7f2ad473d4450bfba66faf1097620a04a08be20e1c2d3b96c4e8c878ae6b71502a736152759b78e6299b4fa663c1466d8699ce26396fa60cbd5c496f7c64fcb575bc6f0ca4936ca2a03dbf22cb70f4fa4fd949cb86fbe2a66bcb487bb8e5627a49adc48aa922210ccd27a44cb81fa8c459690b376f0625850e7b66f12fd84c89ee445b684d2c793df930077e90ea8a6ddb5385e5de5b1026bd955059189fc90eb75deb9290e5e7ade8aa15ad88635d723ceb99dba1659ca1c0f9d9fb0519540c1254abc29fa8c7cdf5270afe1f311fdf6f41677008a8fd6a2e6301bd22896fa89adbc0a8d9cd94b9aa26b87dcedadbaa7170ec793b7a3fcdfe48631305e31c6bf934a14597a2a9a5c3ac0b54744a4666370df8c72410d20ec708f7159fb1c24d9b8f007f6f4af396cab4db3f2d0263a44adca68ee77a09d38578ea31a57024c5527f1b055a6567f947a8e75f739311740c70fbae5b3a1f2af8719cfd3710b593aa1269851c7e49a1ab840032bc27db9d956a71daefa4abc0e1a252d6f55d340f794ca5c16a1105d707c28ce087877d38b7a69739eacf92a71c95a0c5f201718599a7ddba7f6b76475b8cefe050d8c8172c52a5a2e38cccbb678d469e5cc104390c22708145538804039813eecfe3a6af60ef99b3bf882525db8cddf6ff9969d71d1156c1e25e699fcca1e4588910d44fe7053a247c7db68aff94128b9b834470621718a241b102a934154f1214fa503857a8417a06c95dae7bccd0d026231d346676c53a8f1fb6cb3d16edb82be4225183621f987c203fae88713fc22afd0fddf84b0f601e25d684a23a217f96ee929cf089962c8cab26c1a5b2ea40c5188688a91ae0b95d05affff4ea29bcb0f1099d7e008b0afd54a3d3bff66fcd7264485576607a20d996c4feaa6f2de549e7d3cb3120fd31069840bf235f89693ae52867555f2d85d18fe754c2a533a5237b40fd0ee3efe6854b731597531a2dfe18fa8b4f8955dd25a06371b1c97baf7be73857fba7bb5a517e72df7c2c82555655b3d7b750e7c891b7a65d8baaae9d1e1cc2ef7d8d7ef713968dce88233108b6cc8cfd83de728e554c28bf9002307d73490e99077def4f3fdec14c26ad423e828734a07229f97879be8a98bcfc302e6c4bfa521082006322afbc1494c3a555e9d5b17b641164fdb3bbeb772d948e33ed5f6bcedf17d1e8a7f88511f7c85ba36103f713d15e8e9739f49f0c6cfa2b739e69b7baa0b08a965a2f85917a76868fd1aa2f696489f85dc7a0173ff1e41cd6d36a07253d19bf6a1e19a55f8c7f90d5795b409ea1077ae77b2366318d573e4e460e331b66511a090bcf50f45d8885ab10c9dd65b5e4dcd09ee96ec2f8672dc98c67b8050cf13e253ee45f95a645f1773a6188f82b5cfcf10d065eea4802d503e32fdb6e21e078b6d459807883a88c6575646d33a0c1d26cd4d98a136e4f4c940001edcf3b70210bab1017e4453dbf58b0d83793b1df0d4a543ac0aaaff17d062292112a82a4b2ecebbc4f7fd0f844b2deb8cdaf99dca1bd189d91e594b514a7305f4fc8b9e273bed6dfe67ee3607f4d31da8863b3433795801fdb7c5a84d9c98ae0f9f2e1520b2f1e352a31adb2880f9805a8d1120bbb3a97dbaa6761b9bf152764aea968b40502dd083f344b3b84814d93c745544e47d1ff3b731cb20365d683924ad1381f5a8c354a3b217fed8ca59b86f3f3eacb6de649e0466a4528b9c95b41cfdb31ce605f1ce2b8b1c02e71d01be36ad654355f1923f52f39888dafba82b8188743a2f292f913dba6a00b9611606ada5bc08a8873f5d7a283a1633d581c1edbe5ec5d21f652dcd063e6ef36cd7856c3dbb4a77504177a59a19d0d8eda3d0ae935ec2497f0861013d243f98c78e5137f361a03b7d9289dc346fb945af76b279c0418ca2fea0ba5c6bd5bd8c183a2a552e41c5f59a69d86266429bcf0599f4528ea94e7c2451ae5c1ff6d18c21fecec62faf221b5e0ca94d6e91f67268822e3ada0367065e179560716f884fbcf44f11ac0a136b7ea777a8778a93dce21181b4eb798ef2a2d1f3823d14ddfa3ea3f678a49f9d8bbbee9001f0f6049b332b9de3f86949a3a3179a5c388f6ae6988130a0b85f03c23948496fb3fcb1d2e85361fa11559ab2f3432945466b54d15948f059703359872b20a24aa90a9a210d443fd99a9b9661b0aed5aa884055da20f985f657027bc23609db6ec6738c58ba3dd3c40fd25913d360d12648b08d65e745555bab38ed37faca5366db87cb3499b1f7648610ea8c3147f16a303140133f591dd5fade84ea8840a71ccc3d43e5821563140bacc01387846c00f6c17891a56ba97977a86095153996a8dad527303ee557506c9126f96cac69dd1826f39b75106a2dc34f07c1abbff5c31759a59decf99caab0af7c1030e99a0b7a79ad5c9d43daad330a7a01ca4e02da547c0fa893039bc34fd9f8b412fd7314d29265d1a2995ba19c4a7d3a2d7f769105a2a68b562bd73f9a95a92033afaeb482be9ae2bdb53d179f2e0e131a8a813201b588e50aad3d59965369903c58c8a9ccdecb0ece676dcf1ba24d563037b835d886cd425b0e30ef4a77799b8c4f6481deb5f7328d6fe45fd2204f0f5fe7a6894b485d5672a485221132e61414d1fa98007eba365b3e517017576a57eaff61ca372cec966705438929484f19ba8b075d1d22ae81cf30ec66f3fbb6dbd09c217309447da6d4bbb82cc119967e3bc091b4bb5b0d6ed6ae6c38714728a8d0207c6eda5c0c30a912c087d81882b6df493c0d56922dd712ad857f8df1d9abc7076f54a95a9723131d1a5bb6e2afcd6bccee3132f3f9f7174bc549614de7976e504695427f7d9d9931c644213bf607dac0e9f4c306bfbeee548e6fe74b4310ea01fc082079c2626a4c80211582c9b1087dfde989e05d39de67d043eb4af4452d88c161d02bbb2a628c0cd3ca901e1ed5dc88c12c8c849aae4c519ed99886afaedadfd96aeb7de8e799899ea28001ccc68d2c31ceb7370d1223253e39144ca8e454a0c4e6aa4c36cfce0d08343674a058a26b08dc74fd809caa6d14b802dd9e1abac43e40e743694a4ae2a33bc426a5e906fb7fe88d171feb731bfa27031ae54c53af5c838c36e6f51f4976f513c70e0a1c843928848dc06d7563b23fc62bedcd6a9b28776c69b00b4f4cd926a27a5684d8b523350db21f6fdbde4faa9b98d597b2000e778b193e2843005f96a9f0515a8de8adb725f36151817c4c725eb52057be2e58e220f6127a117da9a9c404c39cb011adb38ec27388bc4e8b6879ad8f31291fdcdbe791f2314f1ec96a26c85181ad4482bd015c6423b00560c99fa6b53e85fa20a63fd8590d8ff757c0e1099200d0bac96c763f21d34466119757545a77336cf5783e2d961c9c56231f8195077892880aaafee3e501782d39266a1ea963c93c7055219695e607b4f60230301865a4695997049e3f8acefb736093e03289fa1e2d4f621b36dbc077b56b835b6e3b4aaf062ddc40dfc654b87b1cdb46ebfaa4f9bd43415025839999adb61b3a9e0e5ed4ff114336b816b4add0c85d1d4195b21392f36464a256490854346b5ddf6c3a01351c614c28b1fb44517cb3c4cbac6a0b9c125e19fc322e38e63c423ebc448d1fbf3e0333f9bf2ab46135fa7be60eb5c6bbd1c918ce35bfa8f3443bacd6bcbd251f9dc5957494df316a341e0eae5f3c498ba9015e8c2962150b5eaaaf208a406236b2cd92c2a3ba903eac9726e57dd9314ed2ea1e0fede0b582de71404748ccdb2609aac7db94a823666146e4b9f1e69c671300087fc28ecbe5122336d5b9feeec7fca8a0278df67e00c6cf68643c8b27b86fc758afff5278ff712ea5806c32b02f6febdf2a27cf75a320f84d558e41bfb9cc25843b6c8b7709d158584db4e722842e7fde138a42c6b035865a369bfd5a5d37c0291790a301205e9d5890d211f5eba6c180af6ef0caf93d282ec848adc583f8040740c83483beb232ad6900301e3e8968444575112687ffe99700f521d06a52be859f460348e35f40a96e1f9bc84a0b3ca173762b17aefaf0005dd88c459bde4fb81a974c4d5dd1094a6d0b3fc21d98901a115b064ab155f02d967bc3b28e1a09081a7945c66d9dc70ab01df9a062ae56dadcda23ff3baaad2fe56a9b61dcf85c2f2025278193117d34f5607aeabdba779ca75e6463a20479e004c9e60c9f9080a6a091c59c486229c31abab7fac50f894f1dae6cb42d68fe9a3fa14fb0ea7770b5c23c5daffb4c5b14825aba55c90de47955855dab5cd2c36d99fcbe066e74ddff21e1f1504d4f0ba73d38ec1faad89cb290f162ccdf4ca8ab77c36836c95012fb325cb62d1d9c7763000e1f93bf76b3c614cc07f4f246a37eb1460fb25a1e1b149f6082d3fe6bd0b29b525a31fac05b7d6d5cc7ae7ef4aa6a37694764e9d6f1c37dced5562043b11806548333fbb7daa35c43d79dbb809c5b20d0a13b1b71cc1c282438f9547306720409550d86a89bf830ff01ffa1b552c3846ac1e1ad1282566085ea239a58219adbd4505d6839b44a6e31c6feab14bd29d4da9d0ff10276fad6a5a31f648f1da01617888f83e4ecf817b3ada5c85a8f7258d8336ed6c73d227b9537b6773eeed5e06eb0296a1b22a2fc1389784ea8f306a57b44c7b05dfba2a411cb67b579144e2b9a34f77fa1caa84f80cd440380a6690af738de6163e8a95135e66ade21074aa31fe26a5fce90125a934da997f66abf98a814ba524ee3af603f8ff0317a1bc8ef8a823df1e402d261f4bd27c28c744c0223d4c44c5c6602c3058584afb790fd1aded4b97e608ca7e16a052975c93c944fb8725381bde3189cbf063f3289805b56d36d926ef4c51ad5791cc8f55bdcc6a264badf45cd6e761d0ff6591c3e0af9473a7e526c27dfae764a124bcf25be2787d2471bd66fadeb3c6c0c00bb875205f11351422366756b63a1a74654171cf15972c941ada4c2532b096fea432ce94e081fdae175f8bda1316c58132f8e12bb5a264b7cbb99b88c4e48321d7c365b9a00627d09734a66c5b4d446b7121af59d36f448e75cf8e3cc5ad5554dec77c1675ec781c3cd247f53fed5c1c3e6583edaf24f74a8d4c4908e09c8b60e29d26047443795be6c9547980fef741b98406b0744418d679c67a8007a3d8bc896a41099cef6b1acb17ae8e0361b29988520292579b4b2ece606e0981e6ec3bc8985dc680c004992d4e0a543d3e3fc2ccd2220f59d28b7f70cb1809232edce18fdf22123023db592d8ceea6a0f3ee1f0e9318c756d2796e372bbfe14392602ae117f591c74e0acc5f9570f496b37c44f84783fdccf1443e86e1d9b090c5004af63fa28758534f2cd49a1ae0b4f32d4b674366a60b82a4803a1079470bca393b66f3f71269755c8f3548dec0e74b346a1baa12f70f82bbf01ade29eaea4b5a96a27af01da96be23423b882cbaf6d8c84c0a5b6a25e432a3ae32f86cefaf28d3587c22bc7ae964facf6b71513052ab9c696af2d727ec12f1445e973050d8ebeb0738bb2f629a0f5f62df4080577d31882619526f7b87d77042e428b19dbf76e78dd86d7518cc6968038d6ea29488c335a23a51c7b9892f93ad0897692b811f2febdbd45f4fd6fa1369f026a4b3ecc163d6d4f364c8f16f751dc6ac03b6fb4dbee4aa9443ba40eff402bacbb76dd8354250f723a727f9e81c2405c2515c63236196a008289e0d441db4d94c90cdef1024aea9309bc046a2269ad5bf28df120f6bdb23529e95d634aae6b6527b1466bae5d51c7004b2d86e5b22633e9d3c41eb839df7e5543af202d6f558ae0880270115c383333b5b97097995e79c3cc97326306df7b65f631cf9669c8383a6d8d4614f471c875fc4d80582eeae0c14bede0860a03e9c817e522162bda4b7170cbf3aa73ed8ee2c54e90fd06f98713cde06cecde4ba6781d6c7787d39c4d7b62bd291c6dc27cf947441941f2a2b5c8b95ce7a8c5ebb35a4223e4f6910c3b1c65031967e29e530deea8b13241d0933e085dec880ab24ecdbeab3bc86f143eeaa14c152c24da7cb7e8a2348ed5d5eef3ddc2684b75c0bce3ee54301d9232daf70ab174de2ba1df2ce5b685fc9836ba89a374e8a94d066b661e9070e83cb36a570393120d773506b97d68709eff367967f99aff707c2263660aff697a8f2c31eab95c6b5cdd6721140c923691a86cf6f088e6b66de44b477431696b5b2d1ec5ee0f25d717d9862f8fc1ca63654bdc19e9ffea58bba94b8a54b758bec8de7e6bfc920f6aa3502dea9ffd5b7de6874731185acf36a2acf48c5053da2c8db5f6a627a364e81fc2ff89b5850c7d4946cd72207ace11586cd7a892cc6fe738e2f94f2016a21069da150f88f70805a5bef15ad06a2e78d0271998ada1be4b008746691cf18cb4720d0e1745a086c21e4b9a847856f472dcaa9e71202fb982897b6ff52168585e7350bfd23e36386c8e9976ce55d5c36a553371607d755d1671d4bf7e80f5346e0deecec43fe3a3e331a59415b8104ad7d8b04208089e0f1792d3ac3ba69cb58e81e2b3f3a01c5ade7dee651f4019836a315eeec20f22af027170d051240ab83195e3f97cd4b47194cef60d6a05efbb661409880f55944554f306b3f9705572e6839068495d700a4bfc2ccac39dca1cd3462357aad704d888aee877221a34646ba31187ae1b2f1ea9d9290045af10d6c7521fe609aef8062c407fc0c7fc28af6bf22ba260f06bd77937087cea6ad0c575cf3f2b63b34b6063facdf594b4d87dbc0994a8cb2565ca25b94e6440d15d6502177209be72b6576e8683cf715c3110d161202b9440d7188503884cc2311fa002b170c54c5dca67593c08b63a2712cef3d10f68f15c282bbb32e0bbb08c77b4882fc92d4c152325c1b410ff930b24b67ba70156ec162d8c9827a9e245e90b5a6d03c2216747bee8addb5badcd201b25475697b9e9c84611e7f4d5d1aafdd7fbd9bcf46ffa6acdd962045134f29f7176888879b473af4be6e17718aaa109b2177283477ba8529d0d486d7b1764c5a5528bcc10b329e9842633dadec6b3a42140e8d66e2a89675193ba0ac47935ab9c7c78d3c414d4f59fec28e51ff6e40ca78f314b412ecc3d2f022697a437dad054ed510a0b71e730c69d886e7c59ad5444839a0d76fd716c5b67b5bb318a30cb2647fc5a39f6de2c5ff341259cd8d6f1b2d382f17b10ccf2b18f5a388716f814566ee537062b68d201d023543a41816baf44eac2051dc79308d4c7b7127a834a2763be9118f3ed4a5ddd97b1495acb6082a309304e1b5ccae570a0033ab0bfd454d540bce4abda76771a63eccdf185f5e6328a1893c59e5ff84e1217fa46986424cf2b8b25a1210ac93969bbc73a74a0890986fb42a6637a0153bcf49822a9f6415c7ea328c5112828d999aca3eb20ecefe29140d1e09412b51b47f13fda0c9ab8f5a6e665e099267873c16b692078fe704d45cbb9066f5c415409da5d9fd9c2f962910d715116b9f9f301bbf3061a49dea064f940741add1c36d884b88da1d78019b05ecf53ca99e8aede8d02c5ba9dc2cb5da4a48cb02ef6dc6fc13602892ff7a88de066810b328896156a322dbfd604179fdfa1c6731054d740f01717557390591df986fc47016fedb5f689f514ca00925c9bd051b4f7a128587ba61157a55be2dff4878a92951e5c378462a16452699859a265d50428a4051b38b9d7b67f75b6a208bcec37630267896ad1c00677f2e0319ffc143450aee33ecd0112fd0bde5dd7fff9d88675d000815ad1842d5960f62d6bf98afe56b0b137fe80accea3201566a55a680f2e44b4018241b350ce7c2a94b291d4bccfce289a228b13b2911bafe15cfed9735f27b45067af98e2cecded4b845b461c3c17fa105bb4b992f2f54d8559abfd25a736ad28d58e15d94bee692ff8e204755c4daac218cf6661cf756b9a1782c81025312b0cf9d5431d248660d042b5d032ceec0bb6189886c3410f44ef2a579730071a7502b01d8f5619798043b3785091f173eac3f555a42ee2fc70ee4f45b88388a9fb45c63556b62b44682f29183749c20301773a0387fbd0888a8210ebe9fb4b769f54f19f60111370f0b73e9ac6d4e80f134d4ccca29984053eac19df8b2c69abeebed511d0c18b86f91f51cf928684696e46071758b1dcabb3b6ac6e54a3afe9dc29f3ce5a928bf3f640bb85dbaae65ad87db01ff6203964d1d3741f4d566fb0aa06019c81fd9e9a5cf3d3160d78e2a2616bebc1666dba8630acb183fbcf23c331f6cf8687e25ed90bdeb8aef8a453587f44f83abfad86a5f4c7e90ece3d4140bad8f6dd005526bd9f5619037b090d8b2696593cb1843c502c4f1ffb0e1f647e99f3cfb2ae752b491641a86f5dd73693629713a683370cefb270a6801d621a2d50894fb5de660816f091e004d7aaf6222509cd82df95900a011b6153f005f61d35fee9aa384b6f22e83b3e07d19141eccc1b6eb080be22729352aa88f29cf4b12a220e265ace76b20e02948213e1d79a46b1e0956ea38819525d789a456faa885a31ff85025c3ae285b91300c416ffc3cae78aa7d0281954b637677a622ea37dc7d3caa62a283fb64d3e283d1811a27cdb91161264fcb8b85576756715e49fd2198684344dc5c764b224b8e0a0207877de14b24117e6351a2eb15fc6168aace49ced136d6e1d3012832d48d26852b97c94f4f5cf7b1bd6b261482473d458cb3240c4f959ba9e5d1ac71f6b8e6d1df6341fa7e6041af3cffe50c6d301738887e4b8d7f1f8d1a12f040daaf40d6b09d1e32833a1607c37891c77c3811c9b37dabfe60280e946ba58c59eadf5dc02ff647d32ef2541172f6e829669222d11948df3aa6ef0bb14a59ead0e45cccf485a492f098bc86fe5dc75f19fab10731aa153a182bf0e833b97b680033d9c0e54144aedcf940e8561c1195bfcbe4a8c8b259b4a8e6d408008a599fb629218a456784f15cddc3706d135d53baf813a369e015bcdcdb267bc9ad98f4af7459062fdae4891d67fc48c87f8274c97478e34d879248f9511a8970906b8f017988522713ef1ed5c1895c18b2ced1c42e7f80e1b4e7168b0ca0d2a850874390d81daef5aeee225f9b4eb59f6af13c06675ffe55479876fa3550b65edc776dbc9b07352a0f2df5c9c2fd5982537d70c88d21228ad11bf6188160ded295ba2898bdf899f235d88cd98cdba5a2421e8006f3595f56d0d70945aedc9e5f4c6a51465f0483a758c912ece87e00694bab45a5d133d21ef67d041af8d8fc0550c4dad02f00ab1689e39c4a9c003318cbf254283715c4f5821abd54307a7c25d3e1e0c658b5d5ec07d03fc742f6111c9e6c05f82d0348e1742996fee651cc801e4ba8ddb9957bdacb52943328be143a9fbc56854f738a726a88b5e7da59de27a26a5c3dbbe51a6cf68f06a2bebc6917633a9ea15f2ce2e06ec9d9eda4ab2a629b6df19596632c3fcd231e65c283fa34b407831210e22a6192fe5e563b2fb960a70210ccec96702ab3295bcbc951512e40fc91e622e2b2987aff9186f7d46bb6781da599df8ca27075ad6c315de46dd50d329b09b917409fb9fc357c3836e3e2ad3edfc7568ef40513b432460fa018f37a091d55b2bac851c3306d3fbd5487f24a62a52dda781a9aa35e411b95a0cd7f14efe51bb078eaf25920342905acea0d84e20d814a37a493a7096c8928a7d2bc7b27b3e6ec605ef37fd152526095a0ebb44031c2c96ce6b60c0b01010005000000060000001000000000000000000000000000060000000000010101000600000007000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000e43800001fac47810e836206cd1595238d34b58e766776eb2d28399404b8fcd3be8ddf76efb9a6fa34ee3c08951aa291bee64d435075777cdda34fc33da74dae85c22ae42e8e9ab054b653a919010101000700000008000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001e1d508606894af39a381ca6e452fa4cc1deb1d34fc9a490d7cf3ad446146976ff02010100080000000900000019000000000200010004000000000001000000010000000100000001001002010005000000090000000a00000009000000000000010000000010110101000a0000000b00000065010000040000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000380e00001fe48cffff817f00002e71ffffae5cffff6ad8166e41d7d3dc192be6ce705764f5a0f57997a0b2a3753187b247af3be4b6d662be0a2d0aee0e0bd057eb4e9da5318842c34a0f9b00691934f0a1eee514034d25fc48675a306880c92ba34cb5b39dd3cecf68a4d1af418fdf5e32c30857edc9130bcf417b75158334be5dbb084537e78bcde6415689f04804ea18f9163ade2cd69983c8aa1a20bac1fe39ea48e19eae8e30416e5724692a94a933fdfbf06bdf93d91fe105fb1229e7006dabba78aad306e61d8a9206cf3fb62bb99e37df14313ab957b5d12fc66f5cab39e67883bdb656c18982811a56a7a5b75ec20d79544e0e7782d920a0ad2ae5e5d03f5f90649379ae209e5a0df8c26327a632b58fc0d2a4fa8e133ff9fa08fa812eeaf73f5f34146f22bd4227e7eb44d631e7cd59f4010101000b0000000c000000c900000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001eb6640000e1960000adfc3ed3329da9e13d992b9eebf01f0f62a7c80d0f59497aabf06121b9002244fba4d97a29b711c07a8b357c2807be954268a1e683de072f592bcb25465a1e49d5bed353196a5b886a14c5ebef7f631af4be11f50f11c41517c32b58d048a436e30a25fdb780afe737f9d3ee8039a2db729452db803224089c119e65aaa01664f02c933a217a793f087907b55c6f01540c0101000c0000000d00000000000000010101000d0000000e000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000e30000001be0a300001375ffffd50d00008d8d00002d3bb8951a52217ad235ed67701ed99f49c570e096b1ca8f85b45f1e70d98a7124bfb67c4b961ee1d2e68997aeff8971ab616d52c73770a7731d2958fe07900c3e8eb60e8ba3ad84e1bceac3aa26ddcf53eeaa863e7e0226d01af440f11f6a9e68ec9dcee24e67408f9a7b8a1a617f5dddd20516b4af63a71dbf3dcd56de5c13ffe3a35065820514388e6bd0de0b44e0050201000b0000000e0000000f00000000000000010101000f00000010000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000c70100001d92e4000042ddffffca09e6d7963d6c9e345cd14a76b936752c8f2df2b0bd5092aad965079b6ef99d54c2ff980e26310d81bdffc61e579a8f7df2eded6f369a99b340538eef02c7ea670abb055ce5ef249f3db94fbe495f5106e72c9cd1100b446423cb0a023686b353f4c4fbd5271cafa1e90cd573a11af31178380974b39b26c1b3761be9b861df7619b73fb658b20606306fadab2bd3600c010100100000001100000000000000010101001100000012000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000e20000001ae6d30000c2a5000098c90000f612ffffb66e029c64a283964de12a85b006dc6cc1262b4eeff728c28eec1255c1390fd37664926d416022c14cda436c06b0cf721d86bbeae1d1cb7a8300d4009fd2efdfce1e83d19d2b95dc522b51a5c3e32f64e64536acb742f0c0a86d1a366d6b3e27b403766136dc9584e2a52058feb5f404f911985c4977b964e6ebfa9eef48f62279add30d54232055e8037cab6e053caf050201000f000000120000001300000000000000010101000b000000140000006101000004000000030000000300000002000000020000000100000001000000010000000200000000020101040400001c0700001fc1ccffff41d6ffff473fffffeb040000411b646255785ad3efb60dedef7f18ed55c94c344a015274ffbfc22462e0a0cac8296c210460c61185df7c6d1ce6de4443361173643789a9ad674ed195ede2af597114a7427214543acaf2f58629e2dc0441c29eafac61e10b7660240807304f25e37ed6b10bb385527777a81968bb7514d756e67c078af4701d33a186a981bba6191946e91a69162da2b41dce5161710576f2a547f31945ef00eb34a386cbbd88fd4a90a116bf95eaed8c93708eaa8d3f43e5ef62690d58163fd41f2812cf87c09d0a00c1f18684ff932aa6ac74706b7259c8c3357b68045e5bb247e3b6c6917cabedbff46829e7d676861e7be6051a64d2d527644208f5232042ea5f00d7f60e6c213b0c7d145752b9b1a9c7259e7c8c40060c0bafbc359c03541196377731010101001400000015000000c900000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001ef903000014e0ffff9346c412941e39ac73c9edbf3a6786eb322370128803814ea2937f13e17fa1961ef20d1a03c6904cf0c3aba24e9178ada39b33ce50b1b1ed99fac22507d60fbdc64a97b9a80a72f4948d2e1d631b6acd6e934143b4e9ed3b12fee8545794be7e7c5a0441f2d17e934f41457a3ca69fa119b4eba8eadff85701aaebf039474c1e1ef605bd8b08963e8bcdb2ac56a74c310c010100150000001600000000000000010101001600000017000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001caa7effff4fe7ffff73560000a47b0000aba028d43498df0ef4377f22bbd6de13fc0145c0e967a77294bca6cb01331990e74a3044f98f26879359d6c6e7c13da304058d98119566a59d2aff3b711b397736142ff29aa6c826d88b7e75b4dc058dd4250b3c007eb6a71d388612b149688632a048a891c32c0fa7910b981fbab9a1981b8bf7012a18faa43a70142ee3b7797323e6441af05fb1844c2ac9f57bcfbf0502010014000000170000001800000000000000010101001800000019000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000c60100001c58aeffff0d6affff1d59b81d9fd96f1d2572b7e0efff712dd84645f5a7830946a0bce2d2486c5789e7bc7f5b18b66be972e2abfbe02a4847027839ea14021c48916c4432e867aa7efa46608ce87119281715725015ace020b34b82c535dde726d64698ae5b30e3cefac274e531dd5df96d2b07ca6b4f39f5d5774f52639e2bcaebe206efa224b9afce1db48530b3bdb96455fa6d8e06517e0c010100190000001a00000000000000010101001a0000001b000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0700001ea4c4ffff8d5a000035b0ffff13150000954765c0b25517ca1a4255ddb0b711de50b4da8f08777c084a1db68ffaa033e4752c6ecf968e514a3bd8eb99f96b17ffd546563ca12585767a1dcc95b2946862e4de3a11a7e2e038cb2f8ee5b60b0f5b3627428890267c1fbb8e9621502afca41f5b821968e161c5e112629672a127d7c373f2d63446b650f4c30315211969105b293b240ebfab76a8fb8b35a0110e6e05020100180000001b0000001c00000000000000110101001c0000001d000000650100000400000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400001c0700001e749b00004466000031b2ffffe97cffff66e93ef7fc9eebeac6ae348c57b8d7374d445e0b0352d78899acc9d56177c4098200d694f0139c434fcfab562449c0bdb1f9a518a41da3577507e8826e3ebdc706ddb75dd6e31d5ed15d13e99d7b897e4c35609522f9ef8c035d915bc1a6366bfa66483c58d070b24dccbefdff328d6998339f9bced8bdd1127bd53b626239b0f6c3da122b63e46089155f4e8eb2bc572b7114281845de71e5bb73609b898d1cb6b6da9a56cfb84e02966d85cc736c8e802434771d455ae037c75a5fd455ffdba27cafe4822924de101d582339fc1faf27aee99eb8036216581cb9b3630fd6b9f187183ac1f1c4ebeb5123387c57c942f0f054247eccace1a521b26bb550ecac838ceb8b50fdb7a81b113c62c614c14b70e4399c77308456a490f052cae26c1e1b0101001d0000001e0000000000000010020100130000001e0000001f00000009000000000000010000000010050201000b0000001f00000020000000000000000b01010020000000210000001000000000000000000000000000060000000000010101002100000022000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000c60100001a3476651b25a1796fc51d544eccb22ceeb5144914630a259482295ba871b7185aaed79d04c57cb42fff19cff75cc86415937699ce23f74000d0865cebf8aeb3a4da401bf2ef55d53e010101002200000023000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001d15a5625b9a68f6e198e2d1b9b6024856d14565a64b7867baf65b26edea15994b02010100230000002400000019000000000200010004000000000001000000010000000100000001001002010020000000240000002500000009000000000000010000000010010101002500000026000000f10000001000000001000000010000000100000001000000000000000000000001000000020000000002010104040000004000001fbce3ffff99f70000e032ffff6586000068460000485000009773ffff5744ffff0c760000546100009a9300007559ffff5aa9000032d3ffff750f00007fe7ffff688e36843a87ea2362f4d14b2b8e56901cb6a512eb127fd3df549dad80f90542954517ba1311463eeeb5e74c77e09f91a5664e874f83074704e66ee9088d7273b68d1f4b3f48be53c1d0924bd7319093ea193fc8f0a37653665483a96e4d65a1dab284a9ea66f50cd53c70d3037513f788c8f2a8b9b27157e0ea308872b7ee9d0901010026000000270000000400000002000000010101002700000028000000610100000400000003000000030000000200000002000000010000000100000001000000020000000002010104040000700000001a08c6000043900000b931ffff7480ffff11b4282cb5379cc9f7a015c1fea27acc7ef52cb5befb2967d447f4fd991d7ec8f51aa90bba9ef05b8539962ab1a369a7789fbc55eb58b3f73b4d8c12c5c956cf491f4bb8f06f5dec049729e552aa2d736bd9ac9d04686c3db0567632e916551627f4d453e5634a4e9638e41dfb12986d7d22b998693beced9b901afea0ee0318fbf31b49653a26408c4ba365ec5e51f0b2d2cda6c3a641c8f16f379b658c04b25dcec525cb3f99df5379c4268a9439af8547d7b101979b40a394c65a1deff449bf72b16d9223fa45e5ea7f5ed7782ddbac4dd52930a673ecfec471c9ffed7f783cf92f8e89d8c9bd8bda71eedcdd8983d388ec24fb245551a9faeeeaf72c271418536593e304e1c932ce7751303b4abaf780faee981fcfbd6bd82eb49db2610518010100280000002900000040000000c5a7000000000000040000000000000062e601008d5501007e4e0100d37800008f2a0000000000003d280000000000008d48000000000000d9d6ffffffffffff01010100290000002a000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001da98156a085c6701634ecdbff7bda91ed85e9a72a3766fc6ff342692e175bacd4af73ffcd8d080457e319e1faa14c60c57aa5dc41465afd75dbed71e0274a38e6bc9f07daa12d6d369869089441f7c3f63db6e89ace0742b77138eef82889c547010101002a0000002b000000090100000c0000000300000003000000010000000100000001000000010000000c0000000200000000000101040000001c0700001d196f7558ee0f99c97ff02a0bcebc8e7d99f17cd2b5e04d923ab18b02684bc1a6da0a68b5e9f03f84378a1cb1caf0f612ff68cd84683ce4f6daed98417c3dbf0c9314bbcd1d8b84185dd31484b96ca23ebf2a63dd1c4863f30942f212bb48de4cb05999832a98f4205cd68739b8c82b52836c4c624201e09c9a133961282509b9edc074d0ce7e53a5adabb2b9e7acf332d18dfba8ab9edf547cf153fc327b89621b38a4d8cf3d02af5af5e3b2296e6d2012c46622be69d0094a581d03616ee05dde9c313349ba826f2c28e4d4c785a2cc3e679de83f4a4c4c080101002b0000002c000000080000000000000004000000080101002b0000002d000000080000000400000004000000080101002b0000002e000000080000000800000004000000190101002c0000002f00000008000000c5a7000000000000190101002d0000003000000008000000c5a70000000000001d0201002f00000030000000310000000d00000004000000010000010000000010020101003100000032000000190000000100020104000000958d04007523030074fe0200446f0700101a0101003200000033000000000000001e020100330000002e000000340000000d00000004000000010000010000000010010101003400000035000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001daaebeb9c2cfc5d2776d257f31107f627cfc17fbaf7e24c0c2e25cbdda4a529d3050201002800000035000000360000000000000018010100360000003700000040000000c5a700000000000004000000000000006f2e01009dcd0100ae15010020c301002853000000000000138effffffffffffe40e0000000000001865000000000000010101003700000038000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001d1648cf9742b9d1faff4b6d844536275d78a10694aaefe3fb4274d151320f08f9010101003800000039000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000c70100001d679597097904b5dcfee022dd903d3e3aeb9f01e34223a3857f83b41a13cb44b7aaf5d409cb276cb128cfddae906cd898516a9705cbf15e37781e2c687606a642e27f1f9484b5348808010100390000003a00000008000000000000000200000008010100390000003b0000000800000002000000020000001c0101003a0000003c000000080000000000010000000000100201003c0000003b0000003d00000009000000000000010000000010010101003d0000003e000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000400001d530787ac0822ccf896f05870b56dd2bd05020100360000003e0000003f00000000000000180101003f0000004000000040000000c5a7000000000000040000000000000089890000539c0100ba0501006c66000027d4ffffffffffff917b000000000000879affffffffffff5b54000000000000010101004000000041000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000008000001f9ef96a54b4a6d7bd12cf892327216063d75a25149b545dde2339a9becb793fd3c225e23cd2b2c7fc1d5331553aa938e0de98549e6a3eda61e87360d7d48a63100e5367fc214b8e9e3faa4764cffe8e2cb97a6fc5ee62b20904910f7c43200dc8010101004100000042000000090100000c0000000300000003000000010000000100000001000000010000000c0000000200000000000101040000008e0300001f6bf708ce48c589de9bedf9077abb675a8944cbee8a2c279c749683d409e93a436208b7ea841a39d8950bb444b1eae372e2ed813e54e55d61e6da08e05317976d63327c7efdbb0ff2644d899f374aff76e689b9f39f3790aa4ad1841e6546e6f6edb4dcf454ca429d3406ffca828aeb5886312c6b437967bf97efa91308b9d9e8937d926e7061d586fe55d44d8bcac3d778c1c3b1331e9ff5c6a8c1ea7cfe6739477e179713f0280e1063ce4d91cb01d218d66672329f4a4c32f24349b8a5d19eaaf24c331dd6c824d760a93a54f99dac761d89f77b9bfb1608010100420000004300000008000000000000000400000008010100420000004400000008000000040000000400000008010100420000004500000008000000080000000400000019010100430000004600000008000000c5a700000000000019010100440000004700000008000000c5a70000000000001d0201004600000047000000480000000d00000004000000010000010000000010020101004800000049000000190000000100020104000000a4a20700ba0601002ccf0500f8dc0500101a010100490000004a000000000000001e0201004a000000450000004b0000000d00000004000000010000010000000010010101004b0000004c000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000008000001f68684bd939df1cec1ebf98561831d52c24fb3bfba10c929d63fedc7a417111c7050201003f0000004c0000004d00000000000000180101004d0000004e00000040000000c5a70000000000000400000000000000521a0000616a010017c70000cb5101005f1400000000000070efffffffffffffb57f000000000000c131000000000000010101004e0000004f000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000400001a3137372c63ed265185032012da48e16cdb720894df9f70a0598231dc95e55c98010101004f000000500000007900000004000000030000000300000001000000010000000100000001000000040000000200000000000101040000008e0300001a9594fdbb3e4845068ee5793b9955babc7c87fbb6ed24cf8d9bb27e5941185210bc19f56a53d58da9788f14781438335eb61411ef73d081080709c7b931d060a96263857b91af0da90801010050000000510000000800000000000000020000000801010050000000520000000800000002000000020000001c01010051000000530000000800000000000100000000001002010053000000520000005400000009000000000000010000000010010101005400000055000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001ab3ebb5a010f52867bb50fd08b2ba732d050201004d00000055000000560000000000000011010100560000005700000065010000040000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000700000001a8d8effffa14bffffc379ffffcfceffffb1965ea4822129f9a8cc3f9cf467aa9ca1bcd16d36543802a688d0eb6b14a07c57a0acf2b5201a20462fa829abd919e7e14ca71528c7f8094896831a40575013bd78356637952989ee9544825bbfcb9ff9276392245420019837ce5177fcca6adeb389020000b778c1d0635bd4926d94e09aaf6d3fe77efd9768adc10ac5642196b7a6105110cd2121a5547576eccfb254ed46cc7dec8816f3f53416ced59d88dd4a162adde745264c6051caa962a3595ed181ec0f0807faf807602e42ece0a0a7057c2ed4f0f4cd1e152f3c3521ab6ffd7cf4fd6c48b0e631546265672c52420b84f31f960f33659ba2c01efb8453821a570ee241bfe6f6c92d67c0350d88ac583354fce2cb8266f9cde39fd95d912b79cd7e46345425d211ae6bbf1b6675cf0b010100570000005800000010000000000000000000000000000600000000000101010058000000590000007900000004000000030000000300000001000000010000000100000001000000040000000200000000000101040000008e0300001b4a53b2d576a552b55b32fa57025217c865dc05b8635efc9d6a923c9ee093bb5b15443a82bd7bd3327205fb10d08156a4bc25e37c9cc1c9b9cb5237460d2b428e3f56d0325c8737df01010100590000005a000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001bb915bfde9fb87d6c928f8f77296bc93421f8c5c4a51d8663111f7bd98e6d730a020101005a0000005b000000190000000002000100040000000000010000000100000001000000010010020100570000005b0000005c00000009000000000000010000000010110101005c0000005d000000810000000100000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400008e0300001ebe0cffffae8eee4958419c6317b3801fb4571c30f3a0bd78d8022a81a00ca177fa214fca9b0887645fbd8fba4f3acbf0de43dea49987be6b57e7bea45bf73731e093734a409fa60ece43f8bd020101005d0000005e000000110000000002010104040000800000000000807f00","id":"lower_jpegai/jpegai/syn_y/8","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"refuse":"field_range"},"inputs":[{"data":["2147483648","-284","300","183","248","-300","123","-89","0","250","-11","202","-300","300","-300","0","-3","300","-28","300","-114","0","-300","300","-300","87","240","-300","-300","10","300","0","185","36","-300","13","277","-300","-300","0","265","300","0","300","0","300","-300","300","259","-122","300","300","300","-300","-300","-300","172","0","0","300","300","0","300","300","-300","300","-300","-294","215","-300","256","-300","-300","28","86","-248","-300","0","0","-300","63","-9","300","300","-300","-300","300","-76","300","300","300","0","300","-300","248","-49","-156","165","-293","-300","264","-300","300","-300","-300","300","300","300","-300","300","-300","-65","300","-237","155","-151","-300","0","300","-300","-245","0","300","300","300","154","-300","-300","0","-192","-96","-300","-283","-300","-300","-54","300","-291","-300","0","300","300","152","0","300","-300","264","300","300","0","-300","165","6","0","300","-300","-108","191","-300","-300","300","-22","-43","300","14","300","-300","-300","300","-268","-247","169","-300","-147","-110","-217","0","149","0","-300","-300","-300","-207","-241","-300","51","-300","-300","-300","294","261","-300","-300","-300","-300","-300","-105","0","237","0","-300","86","300","-240","-300","300","-196","-300","-12","300","0","-245","-300","100","-300","-222","300","221","-300","-300","-300","300","78","-300","-114","-300","300","222","-62","24","75","215","-300","-300","-14","-300","-237","-300","265","105","2","300","164","-300","264","-300","300","-300","272","0","-203","0","300","-53","300","-145","300","-300","-208","300","-44","300","67","-300","-300","300","77","0","-300","-300","0","90","300","300","0","8","0","300","-300","300","300","-300","195","300","73","0","-78","0","-300","246","-300","-300","0","300","-300","-31","200","-300","300","207","300","300","-300","0","300","300","-167","300","228","-300","285","182","-300","241","300","0","126","-66","-300","300","300","300","11","99","136","-207","-300","202","300","0","-185","-300","-4","-300","0","-90","137","-295","-300","-27","300","-300","43","-150","-216","300","300","20","117","37","-300","300","-133","0","0","104","277","103","-300","0","155","300","130","300","-300","-300","300","0","-300","-84","136","-174","136","-294","0","0","300","-300","-300","224","-300","-300","300","-300","300","234","-300","300","219","300","-201","122","-300","300","300","-300","280","-298","-103","-275","225","-7","300","-300","-200","300","-298","-300","-300","-300","268","300","-300","300","300","300","300","-178","-300","300","300","-300","-300","300","0","300","-190","0","256","-300","0","-300","300","0","297","300","-300","-300","-48","300","0","-192","277","300","18","-300","300","-300","300","-300","-82","-69","-300","300","-98","4","300","299","286","-6","300","-300","50","0","0","-253","178","-115","300","300","-86","-300","-300","300","300","300","-25","-300","-43","-93","-300","-300","290","300","0","-56","-300","-300","-217","-232","-300","-300","300","259","-235","-160","-82","-57","-191","23","37","-300","300","300","0","0","300","146","231","0","-83","34","283","300","-300","-57","-2","249","-223","300","-300","-300","-300","300","-59","-300","41","-300","300","-230","92","0","-300","-53","300","-20","-300","300","172","-24","-300","-300","-264","-300","300","291","300","-129","300","-129","-169","-30","-207","193","300","300","300","-4","26","300","300","0","300","-65","300","-300","-247","300","0","-300","-55","0","33","300","300","-300","300","300","300","-300","300","-103","0","-183","-61","300","-300","300","300","-267","150","-183","300","-34","-300","300","300","292","-261","300","300","29","82","0","172","0","300","300","300","122","300","-300","300","94","252","300","-4","-275","300","-1","0","-300","-300","-300","-153","-242","300","267","300","-300","0","300","300","300","300","-41","0","148","300","-300"],"shape":["160","2","2"]}],"scalars":[]}],"graph":"57484731010100005f0000005e0000000100010000000000000000040000000000000000100000001000000000000000000000000000000000000000000000005e000000a00000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000a00000008002000000000080ffffffffffffff7f00000000a00000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000100000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000010000008002000000000080ffffffffffffff7f00000000010000008001000000000000000000000000ff0000000000010101000000000001000000b91600000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000020000001a716c00009c9e000041bbc480d4448cc977836ff41de17d1db83d94e7eb8ba43ea626da746c551ca032196d0a30002e51749e0a292a67ab68878ba05cb4b46a88724ddc50c1f15b40dbc3b2dd7a4d7078cf8b3bfa27dafb04a4a3af19379fdf94855d5b3fe2e1e79da8049992f1c942c5d4d355b1261259d659a74d72f57bbd1343d09d586f156fe441da813c9da40ca2c53947aad457123aa568df5dcfec220936c35399fdb9fe0f21574e1cc24bcae49063b6dce7f45d6c5ca088440f2f51de47e81f486f12796b555f3553c2270eded5aae2dde4e2e78012f35fb8d801ffb56cd34522f540bec880eee8f2942088591aae802a60356920dd70324d2ce5407b14a3e7f5b921cdd3c854b33dee51820e3f7682b1df4e22ecd4e8b3b224fe6f05df5e7ae9ad913600de524eab11deb420ca54483907b21f3c96a11cd40399df1943c58d79410a399273f297d5adecb4debc76e077a67ec7afb83b4021954802a504c931c3313c8cc0f300cc61de44fa1c9f5c1633f8cbe7c4cec78998be7a7565a9734c50f96175e931306de53b98678b6348b3f04cf644f5a2305e91c241206230c9cb7834657de14c26e697dd8fd64f830fd5b0f98777955ff8131dfedfe6f55138f050c4a9ebba578beddf4f412d0de957d4c39cfe114a170cec8595977b58f9fd28f2a8766f6986088047f8f955acf2c6754d4405476ec6c96898a2a4fb5ff1612e8e910e417a98c37647c9c2d66a461e4b75fd9f809a6af54c3d24153601f8a327c1dad381940027cc3de03552b900c131b705d34decc170b921d3eb560c5d7f6b9e7ea0e2f1ef3c0031e8d9ec6cdeb68bb8beaed60d411de1804c42102685fc82d33ed17d6ccce8e707e4015749980e372b2e5f0e96b2afdda6fd4c30a9eebccb8b7a8a99cd218003cce195b5a9c791d563d313c8772915c797bfefe4ef6a083ad47c2c90c65962295e4e0e299f5c26ca2d80603c54f38a461f991ff136e9eaac117c0ae3d80d76cf7ad733e5ab5a0f5accb7ea983ceb1fee7f308b72766cc82b93c8353c0eb725679cd485b760a9d48eb1e341d14366f080f72e7ff169eb8777c575006f0190320d8c7dbbc54b28e9a3195c4929d23e50aa155e4ac69a37638122f066bf81dcf66cb4a2506c6257afd2f72895d7e6d3ef202ab52b8128100f8dd9db8bf7716f27585e0580d96ce1bfa38e5f26334c28daea8ae84b1d616c1c4bebe56d36ff89c73cff8ceacaf934b6bc85c0e499ab4cc8b1ec3cb856216a0114e6f9d47b1d1a6e8f25aa24cd15a45cbfd9f0227f277744f6b31f84483ab0303bae9e974e4028ceaefb2ce2e8610df67993348cac700220b4bc7cffae0f1fe7cfc6916ba139c8abb3090430b24118f3aeb39383e39c7572e4480da0d475a1277ad016e1fca4f81000be4b37ac787cc9dbdf64d7317f21bd82f54660af6e030cdbda9443e8d1fae34eee00fe047a87b0b00291f0a342bd00711db1d789777eea7ff0c824d83e9d72cd2f5094da411bf27ab55b69d70536435cabf0e7e54aa128f20d32bd888c193b6763f5f479e2190944cf48c36e7b2d236827c6d630910317e72d2b4d3c19c554b3b66e87e62704babdc599e19021f8ca8a22b79ef68113109476e725ec75cc47669d44415937edd20aa457972d75d74923e3b1f39debd3b6349d60330bf46bd4ddc70e321102068624a2ef18da50434a046b8402e7f04428a5c92d235f99a05258b57c05e5197403521e62ff79ee3d7a7ce3d1e1fd424cf75af81e88629fa79a6f953b8164ed1ca9f66db7263e2fb6fe868cfd276df64e2a07b5408fbf647e11697cc2a9453afcb1c81a349ef136debc1495800a7d03f12523983b4ba021677c110ac4359c879b106f44905f243fd77559699f93277540f282e4bc42a5c166b3445ec58fa7f03a4dd39efcba5ea937a1d6c5a385f96b8ff127375c1afd70cd47f409dc762f339b409fbb9ffb2adbd85e7f4ce3be9b338a7e306191a734057398a8a1364f525228216719bd9c200f552af5b39aa976851c891d2ac78d56083b712b54274eba6863bf98f6a67623cb5dc8d6c6a7f177cc77b3dc323fc493874896f41696b9550bdf57ef5333846297ccbfb01e462318913e5fd2c78a45affb47c5c010ab81bf3546f7ee537f52d094ef3cd7bae8705f34617b966f7b9dd592e21f922809ceb913b395cde7c09fc4677a50eadddab0ea8f4aed9d6c952081d0b04f3f1e28b8fb22cbcab3242d6b4a7d18d2896e20daa15146f0f61fd3c5f0db0cd1fa46cdd2b7ebe3f05b9133ebe0ec2b820d4dcf5ef866d1b709a51198d60fa59728d382731c2d8e02336bc021f56bec4c934461f6cdd7cac576884bcfc68349a31dbbe6edce0e25c573d5504806e69a9777b7ec4b7eb8218a93473299765d3f752fe27196758ab3f9318aba0335496d0c991cf97e711825db36ee2fb8f93e41846c8a0575232ebfbe4f3d458ad4d688f7e9bc61ac9803b164accb203d7ec47591debc621c4740ef3eb481e2e81446860fcfd13a4e8d963c67e648c8774612a9c23533f21f26aab1bbcd7ce292786606952101398a1095aa0bb56c259ed5562e757a7099e18b93c3254255c7449b1dce08977c55b0bad3381b2b5c2127b18480b64149f029f108a8550386857d49e20127301c44e4dee8152172b4ba7a78140baa1feb5497e117193573259b6044921aabca27766662068ac665a4c939e9f659897fae78bea8e3a738068fedc4a1537b37636a25b1b850ec6d64ded588455070325ac1bae4c7e00b7f31b662a14bb611443f01b6e4e9f9558bfab4d8b9d6cf42fd13ad4dd123bd84a104d34be75c6ced88170b99ebbfd3c6149a18558372ed12a568fae2212a48bde987fca975fd5445606c1ab68e9e17be1611d92b529fd9c1e773e3cafc3ec8bd996ee82ac1ae51f1aedb564d32cab7148896817848e574916b5199707e624f463804b73f17c15a2de0b45ecfe0a8a71f80339b4b473b9dd1d8d50568d2e2d132b1f1292f6fd8bb243c74381629cb156e119199850fb0eeee329573721737a16d987e0af097751e2a78969858ea3d2c6627c878a06172cc0f31e384fc49b7b885a9b6266c826daa29d74b090e0fd12314070ed812cb9110fbe0a7e8f03de23b632ab3638d9f971b0b5eec0718e971edb49286e44324ee3dc5596c3485e768bc37a790795745ab332ffe15eb241db3e0c102bc7e8b970af9a5c155d625933bf5ba89b6b950f4085740b57009c272332db106cfa69063c7ed586cde69ec2bcde91245ea92c81718259be53ec5e8f4e06df3634e4228b03630fd6cee8af3801394ea7c372bae91573b979e2481515da01b571d3e2ac4aef2cf3dc08332d60d81098eb6ea44a9b17b402ca8479b8f3c107ecdb55c7bbdea2793f260822bf8302176988025f8ef2e10cd0800d758518eb34001924380412acf386e8d891736aba4be0ce8381f960ec19d088d1f5f910ae7843e771607285970e1f30eb082bd05f713d74ed1d8e63e96e9d31f8e407305a8724c248da6a3ce70b5565f6e38959f2f4b86778562a283a4d2482d0bc5ac8c26387da6e9473c168684e64ce7e7a23fe16b694c3ebfbed72e2380769fc7c6f0ff26f608359593cca9e47b5ef3437eca4a0d48f602f03246d18ab9e257c3185c53c97b5def0b52ca916a39af81801730397c0f970a8285bd926b695366206710b687f4b4f406d5e2177ff9cbd6671e747265f937b6d1480838dba24c16cc7a7018730332ea01ab02068d2f7c862101e0c7a313f8231750f7d87ab9926e6a801ad2262daa2565a9504330e421f4edfeaabb9d24c38817ba18be965aab4d77e5ebdc7456337abf551f3ae3bede50abdf046a608adeb93829f218ba9d9fac04ab9dc2987622565048e111e69e95de01b7b7b9fdc3186b97d3076c4ded9185a2fe941365af2e63a13ad694ade5960e7583dd3a5dcfc23f1e9d414b2640cb0e551ae80c7738812ff7125d7db5fc81dd4b51f1c5b088d3649072e95bd2516bc49c8dda3b9c93c4b0e568a8f1268072caba55a77a4b92542610a62d87b6f368a8621cde80a080fea97bab46c62f4ed929fc76ad8c83d5f7d1418c6f980d4e1614b9be487771bd515efe8b9c1c3e1321ed73a34a4c732ff21c56da6c8659bdcfcebe6e1429ed9f45a178ac4d954a5eaf335c6a6573f645e5429e6eb68eb45e0cd8a397536e3a51b26b6d7ed3f2e1e1d7e40c0fddbb9f62bd9018e4d6dd9eca8bac74037aa1305c3615c12f9f1db761a6c234d591dcc3e5e1562a5ff41fb9d75ab6458195d962a57ab32a2e07545d8376ecd0f6f35e2584aa77a62abaaffda46e407532d90b139b3516e35f83e5c98396cdbd8584aff4b1d4f64d97d3d891e9446f0335b1b35d6c6a1ddb66be942d265a28762fbc0213bb4cd0b979623cdc4a65edfa411bab35e3c3fcb13fb3beb21ebc79f0a9d7bd2c8708554e9b3da5ce7ca3257e88df6fbb1dadbfd2286fe3d36e178a294a898c187bdcbac572768af02b36cd03804e22d8497c1263a81c001374f267e62dbdc8ab689ca052adf0821f3e2cbf30db6660ce40b228763ced8a7c1be31e81d943590e92608769401b35fa32a086e51acbb3d9a9b1d146b5b388b72e32023d22944fa377760c8f03b5c21d00dbe5b4d9fe9da5b40eb7091d59338ba25d7f4b2a8b2ffa460c35a9b89f9cccae7ebd9e5dd1b8bcaa4dabe04cadf123b77d04b54d9683baee1326e7389f45d66a8a43cd8605d65bf34c2c4c40f48e5a2c6e024c0e5d4c67b71d9b16af8ad31a118671c64c4e9ebbb54c661103905a4fca8b43f8994e8ac0157f508093137a85f84062485bbb81c05446880af42da609d932300b04d5b997389a458bcef48c66ffe93cba37c4d0d59eb6428dc82ed1db79ef1c27f88cdd9794d81c21939a87c2089751a0e403d715f7d50d6216a3708cf7c1bf3c8a7e3e900366b022979cd7234593c7035e1a84ae8bd551eb694343159404446e3011c8b2a6e845fe8817052bbf14b9791906ba4d0b23f859c3b9118a84e91385814dd86e0a7e5d535c2b328638afa436799963166cc1ff51f158a057ee368c84915b6bd6a2df29bd93053159a2fb857a97a4b408c204881c536054f7c319f922723a77247ffc7c8e61d00b2bba38d779909de96adaa04216a9e5a3335b6aacbcb7e0adf531267d8e8144fc27637814c09a95252e941302da416df581673b028a0110c8cca060d508abeabccc34a8dccfbbb06326a9d86aba5272342c173ef5d6960402a63ca8319c4e9694be979cf77b55b16fd5a863dd7a6e71c1a895960763c743a25923b02099a4dafd4f7d5187b65cd67a007e3dd9412c19f79bd8e518a5002f660749a820f8ac1cc92e1191a1226ccddbbf79bd6b0c6352faaa42c09237f7ccc924371a08e06cb71e7dff4838336303d0f2a3f99b4b964846ea5a568b98e34ee799655d4af7d0d82c6c631635ac5ff86d686701b60a32a66983ff5858ac1d9a37af83816db179b105daac593fdcc100673cca702df31b816b008dec64e85029ca695b03478419af6a20fc135101a280daffa0f0e5bcda26ed3d8b55e2f4130c64a92d87bcbc8b9b350f2c48623cb82edd2c3452139432166073bb108789043ed33b5daf80bc1f6a3dd789b0aa6f0bbfd09d33bcded535c253f1ca47d5b76fda59e2dd5f5fbc18efc234a2ce5af50aabba134fa5b2fcf93e3f3c231b3b929ee89712785149a612de5e2392fc6954ac8a11604aff6a7852b07df581dd5c2c823f4d455a84449e577b115237b040f0bc4f1edb3d87fbf0c2a02b773a1a7d2c61c0e1e334886f835254528387e28bbc448676388fd463a25ea674ee8279d8b5d15a99576debcc1123bd8a74c9bddd395867da6cd87d9d385c497f643f20f4016f936d3941476af3e7c78767d73d3f82229ea50630743bc32ac629760234e61599c7d7bdf2746c0631ddfd603e7868020718e52b8e7d24613ef29d5bf186323f39a130a596543f92643a7b04ff69fafb1c0a2d40c0b48a50023def4dbc74a1881c9dc991f428174890421a67e91285dfbb8a533e974e54c6ed5b84345c723d93be96670adebf843c29c6866a199fdaaf9b9d4df85a50032534fdb6e7de8e961d0ceb876e0c6b938ef6b5e7076fa7c877541a111e039a5eb6f6f4cd29aeb6880c5dfc8cab4c1a8809c0e721a9fb30325454b307841d58351babcdef59711418ac68fb23ebb8dccb5026d3437604db6d26668801c496a24e4d04be2b5093ae3078a345d963500ec3682d3060412113a3144cfbefbabeb2eb487d683c83f98b0c410fd562f1bb6023ad32c1ba35bfad42e303789987c601b96fad8cae72c8261b2d51b75c6d9eeff084a9f7f51a60c3da486542e2cf21bc8ac33e5555da027f820c7e0dea66ae18fcacc0105e2f128b2d19847f45b8541e5f168dd6d36f31654f27b16cb7f967b1ddd94c8fb788464b801f8dcc3951e974a575971b441cb2d1a0e10196a8773b4d5733e46ff404c0820c131193d75bba352b4f205677f4cd275a57d62fb34644a29a50a283e5327a42cddff2308cfb4a52a137c1186aca5b3f745dc8936154d55e3cccaed36f1c428494be14bd2ec79d86aeb0b8ef24fd9c962d9d7d5eeb94cd40e9cc99fe6f4dfda0148cabecb6edd9bd6df26ac3d96e79e7783300dc6ada98da97bff2cbb00aa33855e3b0745ba27bb79baba87f9e2500cb691d47feb4528a6dfbbe41e1934b2fc5bf74357eb385a97ec57b25015917f4cd709f9de4aa578b49fe8512bef75e6ca3d63255fe4d4f08d0d9adc8c8063d5d9846e0be0e693b2e916486deea1ab6269f6f9230488e4e64a23f9a2cac302dfc6a4f3d9bfc2e46c807723568e67f7c6876e9649e8dea75fd1bdf24b7d772c20c7ac7d60508f26d0df7e9134f0aaa155500bf9febe733b251072f84a8b20d8d7aad9f1a4a87635509c234d6adbbd2e9d44543be04107ea20cfce386b661857e843566f3a192304894f1139f6e90eaf2208b9bc03165de8bf6cc6a29f54e6ad3e805eacf6b823ecea5d36fda6a7719bed89104832d38902bf5489567a5cc888c622da6f3d2b1bfb261c3ca6f8b0bd824b2c1f27d8914602e41be79d1f161e62a9123ae345e1dec8165d6d8de3f88f62e85b93e52468c2e86c530f8318b5cf8dd57b9025dddf3094c1cddb98c6aa1709231976df1b166410a8d3d907271a0e582f241d4922f7429e249a965db42a433ea61478c25bbf557684873ebb66a14591557f1e06ad5766b3aaf83f3227ee094abb937d9c012f674d9e0b8702e53c26cdd1af8df91826c3a3eff8c855e4a5ea66491a9d35716c51d3c4745ad156b617e1ab296203d337d4387c342de578223b644727eadd2ec41d4540bfed7450cb39835971b43b3eb0a3278b2fe4f846db567fcaf077bc0c63019ad5f476862a0e775a16631514d53bc7330cc6af386c0ab9d2db5567bb16413fffc352c633f4f50668e038ceb4ce4c69b138f3837f8bca13e5f485d430be72af6120580cb4e1df1ef3899f192c1ad26bc5b9142ea5a67fb2cfaba8d4d20215f3c3e68e08b3b9878a8bc8a0293441f1738fcb020440ee1492c24bf5e397ebc3cdd20d358fc2f4b51144fd0240a9374e23a3bb84ffea1def8ab10113429b662bd78166ee5f7e720dfa1ddf1587334a5c97f4fffde671b87a261bc5ef413daf235afc37bb50cdc439adbb88f867f15acc29bf945a187df083f71a92e10c54d3ed49573724e7ddc526e49a9ab5ccf8ccd4f45e48ef622d9fa0b09a9aabb053da9bd8a3842a290a8898e25d1181dfa99ee09d41140d0d82ffe718c23864cacdd95a4cb4098f66788bdad8ffdfe7345d4e2f1fa24c7b7bb672d6692deb96ca8c64cec47faa6df2ea5e144085de8818df94c33445542596a2cbbe1b2c51057fcf24aa502257986a7769ae843089262c9cd83bb2834bb127c9c5df4efb082dff377822e70b2de22799c8309beea2cef5f1f2e05f757409b4bf72f6891da67f45262a73b91af554fdb995cca59812801afd09e647926d81b209506e2883be8997a8ac28bfaf4bc8f2689581b63171b685458ec56a25bed63efcc91d6a6c6c32f1733af6e958734ec0914ff361a12ee7e3147d4aa80f09b08d0fde53a8554402d8fb84f0b1525d08e025b56e289710c01010001000000020000000000000001010100020000000300000031190000a0000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0700001e2b8300003344ffff758200003ce4ffff43c1ffffc81affff5e66000095d6ffff3bd6ffff2b8c0000b7960000b3bc00005bf8ffff88ce000043fdffffec68ffff5b7f000051d50000ab4e0000e32e00009dd6000021f7ffffc5fb00000712ffff463c00000461fffff5d20000e66500000438ffff2aaaffffdff700007e05ffff3c740000c33d0000cc9cffff6fb10000354dffffe0f4ffffd6390000896fffff1555ffff08e2ffffeee100004f66000003deffffa88c0000ad2fffff45a8fffff6f50000efe3ffffd3b700005ab2ffffefe300005ba200004250ffff5a34ffff70e00000fceaffffc057000081a0ffffe0ac0000040f0000417e00002d15ffff1c6100005e7bffffff760000480fffff2f24ffff5395ffffb1440000ef250000d4dd0000cb16ffff5d15ffff768c0000492fffff6926ffffa63effffb107ffff68c20000d7b900001d84ffff3240ffff4d9b0000b99cffff75790000e66c00000efe0000f8e0ffffdb56ffffb600ffff8ff7ffff3e3bffffaf650000380800009ce80000029dffff049d000072c30000916fffff4293000001c500000f6d000082c8ffff976f0000ddb900002a2cffff2964000004d3000014fbffff113400000b090000c0b80000350d00000e4fffff3e850000e5a1ffffc149fffff35500009fd7ffff76f4ffff3ea8ffff8163ffff40ddffffb40affff1c170000fa380000366400006196ffff12d50000dffcffff30f1ffff8255ffffbf8e00008e3e00005cb4ffff10430000d97dffffd02300007887ffffbb46ffff0d26ffff0061000051bc00003a02000063040000eeb3ffff5bba000082610000d4efffff7e71ffff76f700008509ffff11aeffff8d780000a574ffffc173000053e900000e2c00001c09cbffe106e81439dae53d3c0cc74afa74fea19207002236ec6a336dceecec607a7bbf78eca13a799af487acdd8cbb7e5e6762a0ee0f1f9fa5d193b8e0b2129562de8f146f6132db3fe304057df092b30047f0c6215a09586fe2139bb0a77509d03b34a147f6e547453c87bddcf1eb377d724fafeadfc44a25f8fbac7163583ad059df1bb2406c238d60732ee4d4456ee85b60bb7b4c12c70aa6f8634ed1fe7ec98d089e8d4bc2891af3cd8e9a04bce2042b09cf6ccaa122b762602a43ecdb8d0ff88734dd99fa978106f628507f94203e0660b5192cc9ed99ff4d8d02f6f9fcdd4e820f04d224ed5445401af71bb00c5ff1637f060cbe1d10b5a4698d2b9aca2dd28aab71e4bb77c0c9861d8f832d2cba116193af99c23898ba9a9b67fc5e8ee6e497a16b9019e584816c38942a4cb3a2c48004958ea9db56a9e5a4350d7028fd74436015cac19ae377a3b36dabdf3d5efd87883f70dbd9b96a78a7215e62afefa27ddeba6c7026713e605b4fddd84dc7335182f00695ea1892f489d055bd7aa91bfd3e2aeae91ea5e21c63ec9ab0c1af9821fb6dae51aae7da7129f571b9dcead77849ff2a232a6e10ad219a0bc5b308b6d43b26d56d95047c44e71bbf1338af0da052fa683a3270f59eae152713dc4db71443f4934e5c23a422c9cfca8a1d50878bce8e66fede986391b530d60b77cf5fbc3044224c4d060aec99e51ff97364427b3d0c7868f847de5990057d5dc5c43b738289419fd6dd2759ae70aadef775bc8232b6434e1d91eb2d897ea4a9c1d1c5cd65b93836523a721d8e4577ac83d9fe2426e618b76b7e8a77c7416e962fa463b3e5247f24e99cb39114dc7593a6c2a76dc60c5ed02522a556ecd67fc0c689f0bf348511ec919a2976239b4e2bca86691656013e235f79f5aabf54ba0b0cf325106cfa77fe16b081e62f50ff0bd6166b0978780210a784d5f53eb61fdc5433285fa947bcfaa19dbb8f7e2a4cf8fdd253a83c2eff6a5cbef7b80fe3adafc7b8c3467b78c3e41cedd053d4885510ce29118453dfe67b119fd3022d9d1b3f6b57fb51aace302030c4beb0f99724549eb8d0c75e90d439de75a3faaef171548a5cc4bfa375863021a662bdc50f99455d56b38686261c90ce2f7f1d848772720e178b89bd077179b190a507d994afc0ff5f20c73ff2833b469685b60a26ad758d50e088caf29dbe41ed05ace17932e76affd19a187394d2030e4834cf2218348fe4d63aeb0853049208e78a9f94009429f6c09d30825c4ebe3d539439759a0358f6a5bdbfc9d50d92e7bb4c976d3831712ad97b3f9ca8147b67fefd4cfdd5202899c89619e3077bb6db8c3e31690fb1156982f398e13365398f76913cb225358353ec9ada79fbfdb01caa61fb1f85546f3967dbac49124edc5fd137b98195783203540d840d7a4f43b6031dc2091a99e3176691dee5f3d9d905a61e15e6fba97d864c367070434abdd16652f1de64f411e30cb13a6d20753bc503db87eb82ad267dba30369182a123c78253c713d497bfdf9655b9963c7c2683a04952583cf212ab704e561d38c722ad99fddfcef5f81dea60185ecd5e7034ae8f810d1c7898c9ad087b1a29ab75dd8890b43d3e492acb4c93bb8ae18faeff7dfea49b06ce3c0df6062d7ce86503a2360266da8e1f8be6b5ffe03e15559920f81b75247a04d72677b8796ca537423b27a5122633fb41a187426867b1838757fa1ccee3a0d79abbc2edd70155112c9fba47c87a571b5b4059e85cd553c7967a7ed2e7ab3b0a942afd1cc5f21d0d7975c58b0f79732b9725f71a7937d7188355b347e6d517009e6ea92b902def8abcd1ff0dd3eb740a10c612887003b6ca7ecc812363c258f8d11b8e269e1a84cd615b57abb887be3836a37548da440572688c1487167c5f018f4dcea17f1875885c436c62a177e2fb222558a5aa120af2ea992b348081e190d063ae12d6133ef813a2dcb81afb4eed93b35e0519727939953890d783f1fdff0454ee6610557757bf81ef5c61c317d84ad5186a21ca18b273057c07745ebab80ace89cafc0c35bcc845701eba7179c7475514619aa29f73c256b66f58869b4a3d6f50f23e6c00e03232a8ee5d6a0353417353f6b9cbcdaef873c19c05c0304caadf82febbf7237f2f0b47398e8d81577c17573e1fece9d615197da45005b0e86ee82cb7b4c014a2d8f05a046226ac9d1d94d9e97e1e76c15bac58e91d776c2bde2402c7d8bb657bb2758d7976f84a9d46dc0c1d367569354367517faa0d969f741a91af4b05db591998b0fd95af1cf3403cb3f8363dca62a302a85c2847065333d643bc7644fb33e1e28145767cd297d4cc3cad93185df7cc3a6d405a297bbc70d35168b5702d2d918623c40e5469be28317b454215c4c4c37f232f47f004be7b4552daacabd767088de8bec816a8449f7335e47728592fe90b370c14a29c0497a0bb45a698dde3159fa7bfa18f65a967ad619b5841a36f3fec104f7e1e033955df39664bec2526e856fa4f83a6236a5e526dbdfde3ff7c7de361cf8c1550cc66339fb11e7fdd944011968d08cb4df30a9199590faf72ef248aa8ad2955f066dd0ccf94a575330bee4195c0128fa501d9be6a997002493ec81219d1d9131cb4d6836be7d8469e58826ec5888a17d7e8920e93747ece309cf84f96d532a5b2b4fdf59ce39bdaffd017a5c41320fc5290b2809e5d91552d5a87bcfd3d0b283ec216096852a332fdf3f3d33e4fd9701fc4b024098ecd0f812a479a211ee08727be9f5c086d65e657a46655992528a92ee2ae47100649081f9980eed2c1e0cd0541da40d035544d06f41ccd4727f76fa5a2ef5a2f0d0dce462e6778789eb8811f90a39b7cd8c52cfb96366074d7db0cea8cd0726a28d9eca94f91cd698efd94031e35e21281472acafbc58eab1bfddeea0422e18f715deea0396696dac6179119be0fc848d407925b6aab5431e5ea3d92c55e2bf335a063b96028da4b366282185a5202c0c23479bc610722af6edd2d294d058952ef411000c22d7fdbb04c0a2dca7e5367c0cbfeaa730f30bbf029242763f702cd43ab58677db5d8be239408c7062110fe2f15fa764bafba01fcbbda9cd1511d06156725621b6833e7af360c5e6380e3d8f2ed4ee9048b977c50239d135dd3041b2cd04d628410ca153191c198c83f3baae59e0ac44c266abd02008e2c31dd7eff96b728cfa81afaa5849d9df6dafcd63dd67957c9a2538ee38a4ef8cacd63c23c0142bd4169d82f7675b243c03ba762174c6c6d128888233fa2878f45533561f8993a4ee91937d30a81137fda51dc7e729ceff21188fafc837fa622a9e11f577890cd3eae2b5af7f9a2dc5c13c72ac6373d8cb9fe7aac518e2de01c36f9cdf49760fc1cb21bae4a988cb3c62aea9dcbb66404110084c0b6dee63826c3d91d9697bdb4e9adbeff9b6f9ebb9654e262b801366e70aebeb2424ae6859bc3e0f0fc6df81cb48d4c286bb679220397de5aa83eb7ce1e8ab5d85593b042283653e057b1fa318cb265fa5be799c8f11bf78f8569be6cda7b977efcbf89d298c476a48a815c46eae352eed391485cbd01dac37daef2004092e6b39774e4c171a7feb5841772fbcd8f8a78197e105814ae4c0c660970f975922cc72aba1420af7b423a2773deb31b90bab0b7234c8f3b3db09854a3fda8726773f476de31e0d67f4b3da8dc7bf0b7e6db58e2f1e2815f41b8aee93f788f89c84debc20b4cef9217759e3289afeec85a6b1510f1e8c17f00e7968cdca2cb7a7667015ad0c71f636ae03270961a3d356ffbe155c0b3280440f3c1cb454f8c51136f657915cd987f7a98ccc564f6b1731920692714f2e6364751ecb9ff5922dff00ea94edc1cb755a1180e29f6e0752fdc888e1112b21929a0a5a6a4efd7a20318666b1e66607613690b27225da1923c206b649e224cdb188a535141f09c9cd09ebc326ab211e8615accd304ce57e988592a7396520f4ee3ae3ab8b2850bd7bb7f4e65c3d555793fca4b898e7d443b7703d5f52961813fb17cfe9d83d82d6814db809194e5913bbbb788374ac34dec178015918dec370818b7b8fd50b871d0d14e5b2737953a28b8baf3ab3c4e5195007f4181214ce541c79318115fc73a05cc4118b965fa9506a8d73b49888f333faecc863f40ab704853d7d6fdcf1d494f46b7fcf44438c32c4b869d391b43db934fcac5b22dfa7cc7d9c501ff277c6be3644155cdb7a4d2ca7a4d655967241e28d270c6e6b2a311471e4af79b7353e3632083c5355ec31e0d288562f30d4b964d67964cc38ccfbd5e06126a9963eb6db1a288ac4caa927a9948a56ad8d8c282ed83ac7f21baa66b712b7a09273a457b633368d6f84f66b912905893b16d18a938c2781347fafe8eb1100fb2fb0ac77b82cd12a14a6fb5949a0a76880a59ee6c31e59afd68a8d2f84422944c5d415f47ba0747e90202cf25f04e5187e1d67c2e1b3a84b3a6943037326475d32fa30d994c79b2a09ce0cd17efce7f34076afe9b767517223efa5e0242abeeedb4abbcc2cc27202690de6ae65d2ed2878948d5b4d1c04c213b1a1a52139bcba980e900794c619dd5e818b101751e6bf94985274712a2130bd8882f2ecdb8d1e8dda4d16293c838837e0644e1de91bf488ef78f9946fe05a94c5da512192a34f3a5fa5e9eb18211879740bdade0cc8331e0008499227c2281cab06ceea2f692a77eb032dae7a16f7dd371daff0a26c8e9b1645f5486488405d9d6d661cf9f316c2ee712035b0f425c236e8e257b63d3aed3203314e5745f0855f5400bebcd27008296b45bf9d30d3e74ad7dff2883b2668e044c1582186592aec8a0254597f9f79c8d34860d75f0976e33f71ec0fae2fb1d21ba05bfe7cb4614cea5ba1f953d791dc0600cdec3ee3ddc202ad881c147bdec3d0007a4eec232a8899f8ac33a9eca27709524c73eb9d3d88c2aec6e9b8c554d68195bd73e82bac6c010161b34c94ffa501019962cc48034031c4bfd723ab330a0561635bb4c241f9c86e74765219bf5a554b8d6fd5c46dffd1e7d203fcef991e168658c6ab9774debaa034e89ffcc19a57f40125db122d66bc08615bf651a2c18009ec5598884527e38b16305a49783ba8fe540b9b11022036ffe029d3811adebb08b04e541f8cfdbe62e884b6ccc31c8c59b7403e51bb037f438204a260a0012a36b041bced970dd0364026f75879a3b47738415a99a1e19027cc21f85290a0be1e179804e2dc872c3dca5529c166a1aa35d49bfb97b1c03e697bff269120ed8e894e8fe35b64a187e892e23e2501c51f4cc246c60f7574f5aa173504286ad0f0b2f03e1cc8b293aff0eb56073a38d1b50cdecc575ea4f78db347f5aee45e91ef7dd1a738cfac73d3ad06c2fd5347bf345513fe8e56a18b4adee960652259573fb80b8bcf3e5df282d400fc8972b3ab623e38a6f51e8b8f9c014765bf703968505b2342fb7397d9280335550e003ffcb0493a655b1499548bde341d11a64a3d73be4e870f0f2ae9530a5b2ba80a56735076554cc5c4ba0adfb6d787af3b5aa648e4a1382e20243d5edfe0b582aedef9b3f976699cf8d55811243263e5a23413bfd47fa7d10132d94eafe49fba22162980e3f344585c445b81854224755e3f4070f1144cc5f86614b290ca4fddd5d9c6f2274d331b18b2bf7f4bda08cbc733cb8be8cc4045a276e59015c879d84239ad22f7368269ebefa7ad1961b7ad233628bc11f1a2b6e88a1b88049e9f0b79f4a3a48333693345db5d71ab3ad8ae9f73de6bb27834e3c397d0bd4c5f3f17131bb6dd9030c25248aa82207aa71ff69b0357155e08bfae293501c8a0e562434c87fd29afde40a6f1c10b6efc187adda6c84ac285560fa1b5e1d533b6bfb4bf058f187274000f5e2f59faf7d72a232773d33ebf966569cb9d302d3b02d4c35287749aee2d632081a53a4fce4e1530ce3f2f8ee36d9e1f3017b1c3c16b5fa8753f7be69779421398e8f2a2f8dc590d153cb58062e1efb5be226c8222aa694c1b94321b67ed559a9f6556432b704ce5b0ff662e55abd3971f99e3fb112a07d8c9593caf8ea5117b6fc521bdc532a6c6fa1b95b2d20aff57d7a3e13d964291df324016d58105bfa88df786a0632591e683185c796936c1731cc8aeb001d1f6b271a4fa96aecf193cd20a7611299216211418a09fb0fe7d748f4d47d3dd257c31f90454548d0abe530410df93358c3331258e62c32ef3f5d5991c6dfa47ad2bb87df844ad98eb102946ab128c3496eb2d7b0d33fbda95085e04faeea48e058cba3e73bebb66718bde67042c49d5bbca7b569c079f1eed50edb497288c2e3c3a6e9e3301b4f8ae0fa0191a2fc3c2ade02e17bf26195993729a208725915db1e8be5077a11edf529bb67a495abc662399abb7b67af07d2c1590fffd7e7368bad48702c8d5a0714f693f655ed4e875ef5fc40a5472472ec9cc535903c0b0c27e269c1c69f6578933b0d2e1199d22a941afb8e1bf010ae3c29be8c77b41f37f0ff5f905898c5cbbef1a088a65354ed46091c0a89095c532725b0213f874221e5f01ace572add66f6ecf2054c6aa559ee317a6935babbba800484fe43b5f90c156662f6a379a47343ed293b836eccfe0f852d50d801efdc11aec3095fa87314e89309197191d40882a99a89d767936bcd39bf9a06627a223c7cae7ba5096e1f23cbfa8237f0de6fe7ec424f403433e391a7fffd6088c599ea6176262ec4999349ae608e94043608d4f2910d4ef0366799fafe859919250b3fddd18ab1792356585dd4146cc770eeac2dc57e9fcdf63701ad06fe5d055c81b3d50d52e20463e9fc4c99a59e24ee9e7e8fa8de605477d39d5ef39b9946a204620c3cd40607d8d5e34256fb3e68eaeb57c2544593155e05779bcd098556eb908666738577fa2328ef018375bad855b57ab2253380b494336acec1e96995bfd93e9537730e0bcff5ff6de1a4a285a30811279b0dc87f5a5941ee7dc9f888ad66a3d4a287c12e9ab5a29796cc45f2a7891345937eca42b3bb40fa41b1ed64a843e491fab3be1a70b55d1dcf100d9a203e305401660b1184aa799109de520a0f2c7c9a3ee02f3303916b4a62c0d51da608598b8a33dd93966cf949f1e0e1bb2615dd415cbd597453c1dca4903c0a75ce9161c6af2b09e74c66a0882b9320398343584c0235c43418efd8ac9a44f49a1ef0b83e9d83a37676c1343ef055a864b90c891c12ff81022918dfb4de1ef1d8111845b9c9da4646275278c5ae70f22e6ce0c96197501e8d92e1d4e30876580bdc87e3df902dcf165031d051a99bde7d6274b099f668e273ec82a9902ae8c9261f8c75d6fc092ed84a5b365d750ac48fd532fa30b7687901619729c9833208e61a283960c6dde3d1e0672c874d81ebb3281fcb4088c52fa04d8cc8c03d286029463c813085f8dcc7e216761ed3cc8d59321468c93b9c9054edba90d10aab684a53a598f7f0d3625ecc662e0c7fff4db278b062451cad430791fe06e539e53899dbbe658811b96838ed97a72388aa885d2a60b447fc58264c25a985d02df9545ccad4e86b61760d49f583ccd713d9c9b0935500077983473ec84c7a99b099b51409d7fbf1166ad809bd16fcca305fd6268b0350c16e31afbf311246a0ba9ee3838aa1191d4c8b5a1fc1db7eab93184a21150c3bf275322be639f3d47ffbc7a5e469b2a9493720eafb5b3bc9b293d902ffa28304a7db700b069a4f8d26b68476c18b7cfc773bc6c3daafe2032ccc358d4e2cce68f25e04bda389caf30840ea494a9f15cbc40c69a1b342b442911f3fe709fb22c279f8f7f8485be417a4f234764588316339f982b02128da5c8e6e856a595947ebaba93cdfde8880d88ef4e3657845b933285bf92b4e166909da8726619c1161bc805d6e89c6c363adf84a0f1b92ed2b5426336e1ad0fd929b2fc11f9084c982369110716fc5bebb9569a60d4d6c009d6822aec4a8db2794b05dcc2e56a24974cd5f490c0c2d84e6c60dc847ee8031dd26776281ff25a3158241e6e40fac7f4f554cff8e55011c21bd5c4faaa184e9fa4bc283e9e3409d0eb0d1a799a1b2667f79c43f597c74d373142a7caf6f4ba6b4ffb384da99a02660ca9731f4d2a6f90502010000000000030000000400000000000000110101000400000005000000452d00000400000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400002d0000001f18a7ffffd1c600002524ffff01cc0000bb104fd19dbf716b69bfdbf99dae6815bff896ca6698477de55d7d1c1de11ab53c3d5647cb4f9304f15bb965e3d856fb296a3d961c80080fde37cddf9d69a8df8009d5dce9dff45187494776767ac3e60e8d15d34b0ed817e35d87d5ae14569b538b0d4e52da8a8fc4f0dc9eba5c974d45715b1c4dbec4cda302fdbb0a5962b66ea36c70a59ff4bf5f31dde8133e29f2898c975f248ec834061fa09127c10ea904781fa29bfa9fcf22021418271a6ceb8f805a5d130ed287b4313bdd8ea49a33554f0f2d42ab066d2be0c6ae4b12f1b2ea18f6892913aa8aa15d31e05854ae9cd89512ffc272047769ea730e4b96c2fe522a6c8c0f452fe8ae8111b8975a02faff19f2dbd02951363e8f425c2e42b288bada0f7ccd17056e00562fc13b9a6147d2658b7eca3812c9035f763d9f25d09d1588c326739c8de13034ba8b68b775c0b06d374584d5cea65ea8ac5cf5a7b25a4296220fbf58d88071d33f590836c1de6468c5f50878d8477ed1e4c2c2bb0ce3bfd00c46ee40071cf13e154cda26e7e6d24299951fd408405d72df73820e75bfc3beecfa847bdc14c16bfcc6e1d5efa5c31e9c6fae44006841ea5dded52d8aad5e422879774b138bc3f6eca001b46b2289d64f47c12095732d5525b0afb3b0488177d28564850bf40dbea9638d26a772f4ac5b11a83593a9de0af6f41e073180ba2795e95d525d54ccbe525f218f3e6ec7da2dca359732d0dc966c9cd459ebfdc32661fef1e6ea84015093eb26b0a6326b0f2b276f3425ba4c2e6abed973db98071f9476e76b8d2c56be36beddea59fa00a5820aebc7606bb36ca6428ed19ce3dfd5a0e98c2e88e6d3a12ac14790099a2f01158b32015658fb22fbd0f9829b7f8943ca314b5104e5b3d916445a11515107df938dbbb1619fc8d2580a4c0f2395d7cc22996826cc54c9c5663d6089a0f9d37818f09ffae2ab0ab3408c5fc1ae69bd08074a9b90376eed23b487a3e381eb59c5338d4355bc94ea828566c00a56501af106e2c3b638957a7b709cca8058d90409e30c987d9a53eb5fb46707905c10fa987f5a0bab32ff53f74bf8fb98a7af87c51d5028019a14cb5ffe1ccb52ac0b32b3d3990f55c4abb199d55076d0b661edcb14a6bff8664c56f2993ec9f20193b97f4f98b5d4e826716b4efaf2d18d45976f313ee6bfc410a88367bd0e379db1448c6b9d9531ef62ba7a4b0f8d241e44a52d149a59de14aa9d1a5bad0086fe0a1935c4308a38d8c14b99202d99bf267f2e91cc22274f448455e923f8c320b6479b87a165f316f839445f63f801b6f4578a9a893f8048078ac47198aaeec63a06f47e895489d12766163971f4d0b2450980e695a99c6577da6bf75919923f569ba2a646d9bb92d03752462c16e9552f440fd0bc218ff061bb02f333ac9248011088572c98385330b663127c05b67c5a5baea3160a732c1a3028f4a6fdc35335ed5b536be7e8971431c9cd031ab0b48035da4e3eccbfa37f552aa553300299dddfb62e5d70b75eaefbc19684f566b6f055890225e14f50400ae0713b9e92455c676d713ede56bd3d68c3d818afb4c7d24ed7324a71ab6a9122142421f94fa6c769b714a6167afadce4cc436b35073379780c466020e287fd7be972f7c5174ef8437fa4ca03bbb6c098a26ce2636476e794ab4a24757edbf9f219d302ba9f3f103c258a20bd8ee61f157e9e6ce2ea05d4fe8a42eceabc47f1392f371c44d9f1ff0430b377b6d097cf3b06d88ca9fa39095989b2de82fc1bffa72d7e33df1dfc7931ee7d89c6dc7d033ee67371a3d3df494f5c02a15cbf61f53912b1e3f0270ab810112cd1ce58fe6007d2b7a4632f603926aaa7c431f666c0d4f5e2bd311ec979399a1d94bd6b2a94fb1e60a79307d3c3bab061e700ada54eeafb2b8bfcca92f72b78124b4f0e901d459a83ace3fdfa4336ac33d1821fb6bf08ca91f5a51481effdcdd6e0aa6d296f03811b4c805fe6628eae3e79464a50f18d3740c34774d87aa94d7f43483d02f5b5de75a23ce3b117291f0909ecf1fb949ac70539efd04c18624093c88fc5b79c919d8ccba34e71d8e4f1ad2f097bd005418b395af721bb6c493c9c6859ab9811142db20a7ecbdae45d7d629a3fc47ee6f6d8e081b4931459d37062c508ce8e4afeb8714fefe6e5177a6479a19deebd4c650bc6f5194a544a1f68c48a5f4a929c5e1657b20b9139b6a04789925d955465f46b1d0569ade0c4ec82aed10dc79cef8df23f5c460b7f7caeded858aee7fa24a686a460062855bcfc9edc96d3b97458f577cf077c9dc9ce46b75dc85f4a6a9f83c69d94772f9ad0a9f094a3aa07acb14f053e0dd8119304643a105d26ba1b27cb027bc0bc02589dce3c62b30188e9b39ba33f16d0f274b2c61e3af5db6fc5cbac59674982e276e333e0d3ccf7d10fb7eafcc699fe27c9a7c744998d19d29c38440484e6851c995884d97678b8e8828758202c4d3bf7273b908ce23cd0d019a4c109e29a64ff8f416c4917c0d0d03cfcf5e0499b99ade74e53d2dc800bf89ecb006c2ee97c16598a98af66afbec67822ee1496ff6558173af3356c6dd8bc6e4947b46ae234661b07131788140933c84d8e5230e3b67669e9d5aa7b5227f20b1ec7a344892d2c1c63bbb1b345d8680085b5038bcb4e1d5df275fddd96ec5888525084d723c3e57b3464536194ab1e1c5c86ab560aac88b2d9c7f64c196ae4b2400fe4b385b4e6f71826f7f1685bf0290234f8d86ccd7586d49e2e80b04f6a17a9f657310ff792c74ef63a0418583b0941aae1023f4912378ba40fb50d8026902d76bf35636e92c7533cad3ad84133f44be0af5697026ed3fccb6a2e42b6878c8056e00581610ecb6c168f2cc1249aa5dc037e426781e91f6aeaf3d9b9528bf0182bc9035736759bf6fe3a0760744e68c6880a51175c78c31529f87b4c41796d96aba918ae96c78644591d0aa078d58b8c7ba1eb72da495dcf56f37e201b1bcf3c09741f85622e66f6f6ff489a9ee3e1a96259369b3e738deb800413c29e29e7746c9cc0b4ef6f324c1702f3ffd2b4d43c679c122190590541ef3760dd820c5c36e15d27e99e48640031fc231ae22b01747a1aad1a43a1a62610833ae07f2dff0537fa8539e58b7847a20868a82e35572840c1c6c77c45968766475672caf1ecdfe6589ef1492b91c31124597816e80fb1b319726b24f27ccaa51946fd5e3f8335cbd3258a7e30ad7040ecd8fc2ec7dbbe91ece25ca1020d80137204bf365bafe78310256762f2ea27531adf51972ed10ea5a091c1ae35c51152de618041d557bfaf3a54c4e53225ab6665f08eb80fdc00733413771525418caa2bbbcbf05af6269d5fee60ebecaf1d8ed1542f7533fd786fa390a8d3b187a05ca89cdc20872d7eae333012cc36720f32360af10683614cc66a5094dba6c7d1af09e7eadb851c008da82ed515cf08616849b56c2e89799e5de0d69115e5c3f11a786c2146bda958807a76145df7fbdcc8deac643355c22746537543b124cb1ab92c98b65adb644abe8938e935ea84d5db1304c012c66b76e312758c932af011f5d88e43eee7d0a42122d45167f055d8be17557c6f2abe727c6fedf63511f8e85fb1b1c2166e98f551035e31afbca206804cbd4c6bb3260891f15570e2d5416c0f0323c3ee69aba1f9d12f63b5b1528b0989b33fb25ede167404a649766b0be301b1bb250a2e00c72e56d05651e61148aff18e0380636a4c6ebd454f89cb9c6000f5fa0be4e63ef6b5ae7526d09672d6d35324c683006597cfd2ea6598cb482b16ab2c3466519ea25e63c7d5cd9107d62eccbf08b0c4b5a4bf80129c92d5c567e7671fa55369b47055e9129147fa2932144ac5186d6b869d9b8933d0b3e9aeb6563aaaf23826c312af4ce33d6a3759d018fb6641c6fcc2e6e94f0c57498215e5808a3cbb0b722484b736f72a11349e26c29ca00bf4ff772299a89e81b5a04b259804062b1da8898615b6b9a5286453376714218e15db07c3c87ab09d566c2337e136691989181ca8b36f7170331125aa0f3669b8c5bb51a7940b58fa9063a69d2cc6fcaac9cb6de4dfc85393193958a4ad1db6243b690be81856cfabb5613c0912304743cff09ef8b47b64fcb0e13a3856769d7cdfae37deac486f00f2e48804b130e7d0e3ac4092bca5e37b111e64d854987ce112cdad0d91895cfedb13deab3b0a91f35177edec9418812988c792889806d93f6620a46d52b8b7db89c815b4cacfa6725d0c2af542c73938cc1e1c0ae05e795ad1cb87c78a17a6f81bba7836604b7d9caca58a2a6f80f8d6343e83ec56395a7dde0e48ab9d711dd12ffc9bad4577d8ec014c14b6a49455ee5c713ae322264b0f233aa8112015ed5028d2eacea772899aa8d0c845266d8ca6870c3575a42cd9674217d1e22edf52fb6d1f03ae846eac37fd1f2d0912b3f7ee94b576218c600bf5a6aec3a0a0c60d602f350ccf9187636e5b8e5e855b719f7c7b9fb857af659a31c027d57e5aa7f3e3fc32560cf1dc37ba0d0cc7732299247d4fde2b5e0c92b83db38324a8f15f24f97cfefb23c7d9eeaea1db8fdfb2c9a6105544ca6acdf66c95e1452f7d2729a6be9a61b06ff04aa7825b9c1465c916a8a9dc095832949362cdf63da3166cc511e9a703bb05dc796fa3c9387663656084dae7f0262ba269e28053bf4a2b40bc3e32b5511f4edbce5e31c002c0dbd2c54dd74ef586d33ae38e9a97ebd19a998f6708cfb26f0564dbe4cda4a2a7efbecb4cc0ae27e63f5fb746c919ceb7b539394f78667047e348f10883c531d4d969696a069d8769d0ba5057946b7e3c710fd4422e481cee3b09f309c14ac80238016b3aa2a29b2bfbd450e017b4a837854d0231b93f7538e7a045451a3ea4960101b7d053fc6bbb1d7d75d1d1fee5bb22744cf0ddf080b451defbcbd0e9ffea7e1b755f5eb52445793806e9d122a63f98cbf5c5560de5eea3e7ea7626f16c91e6dc7b744d519212d3166f50b074a0bef6ce5ca9c0177ae7333328df95037957c42e5f76c575f3246982986197849c178c2e3d8ad6dbdf034446fcd1813034e35bd1dcdf2b0e644cc0bb0d61f34ff3f89bc9f5c486a7988ed3e88c2098d5c74d1c4560f19f0976d4536998b945010bfb176800589bfd4772f631310541617f408fadeeefa6d02059b49d5e7112cf20dbc81fc3e55ea9f4bd28012d56f2c76629af32753b5cef2592f06292a0ee50010585be6392366746b4bf93ea82a1767f1eea045b22219b5c5f4d1c025a67503e047c4f56db52c0848cd5aa379a297e0c80cc5d7d46cf12c9be68c31e391e1fc61a11df97ad318b917a3379f68961f163d11baf4a6ef9790fb835f91e7627a856b0b2993ccab7b315aa0e0d740af93c2b4673673ecf079e4174403cb9d80ee7e3bfa09db8f47b46fc61f397c6f0c41af730fc7610998e34631ed573dd31438af7c1b6b6385772341cbd846c08fd8d7b83074471a3ca1f54639ed8227e8e6c2a30004527f6f0d30ab174b799df346f326e23701e76d5c14d0fdf565518dd38b98777d8f17e27dd5525e1e4f76d8a2414405600a21926d88f2f35f5a87af614bdde712146a304e7c77aaa2a7786ee7fe17d463de711a72e75d470bdb090eea73b23c20e24d7e1fe3debd84344c84c704ebbd698b8ce8fa49550bdf1ef68980b83797ab1075e1072fd903c5ba35cc47b2baf2ad6f28812f7316b977bbd6d7a9aa1895e585c8f5fb6a1431d897e0249c4ad0a1bffe40f5668b443cf19c5f49689b761134a70882840083f352a7d7f3521192e1204cf006f31ab166dcd3ac9af848d266ccd4eba9b6fbba03a2b41f9ed738e46142f98f93cb56321fea02f358376ec9d401ed72cb2247e940145d904fbd830e6fbbd0a41731bfb8bbf009bc037942fed300ffbfab90b7ce24e36389143ac0dbd2b3b7658daffb5d43a19d5acd4187a3d97e7cf6769c5c76ca90270ab80aabad8d3a684cf3ec9182dbb2226c3dad6e09d06a13313fe47fa7238db690991ac07b2fc10a3875d20fda9323723a01d8ce70157c8fac3d56b64ec2a6f32be1f9bcafeea1ebd4f876637043216cac56864f39b03ebf48acdfe203645e84a56fc1b07af1fc0bb79241a6157c572aa87646ac72133642400b9dcf4fb148f4fd02f0a4ce0f846d7859a4d5febf36e3d2cda34681fcd09133aac4fec4b2979ad982faeaa4203cf981834bbb1584995e3458923f1f8e66d88fd52bb513ded16c128753ff128dad6a26fc89ca1470cd80049beaaf5f804df41884bbd6bb2f5171f0b298e81c401987a6cb419fa7419255c625ce93248ce5034abc3066c6456282dd325cc8df306e905a1d83e27f4557fa374729d75fc251ae8c57b5a502288032ef610ed768aae03a22153dc0a09e1a9add1f3ac0aea8068f47f5b543b46b8d136866cc987f2a07f0e8c66702725b3ef6149a129c052b7a3b46440b09923c31b9a140f5fcf4c63eb6d74d3ff7ebf8b917a1f6e804d5e8a43528436469f9d3eca8bd35713090262ba1485aed88458835ce9f2b7f2ad473d4450bfba66faf1097620a04a08be20e1c2d3b96c4e8c878ae6b71502a736152759b78e6299b4fa663c1466d8699ce26396fa60cbd5c496f7c64fcb575bc6f0ca4936ca2a03dbf22cb70f4fa4fd949cb86fbe2a66bcb487bb8e5627a49adc48aa922210ccd27a44cb81fa8c459690b376f0625850e7b66f12fd84c89ee445b684d2c793df930077e90ea8a6ddb5385e5de5b1026bd955059189fc90eb75deb9290e5e7ade8aa15ad88635d723ceb99dba1659ca1c0f9d9fb0519540c1254abc29fa8c7cdf5270afe1f311fdf6f41677008a8fd6a2e6301bd22896fa89adbc0a8d9cd94b9aa26b87dcedadbaa7170ec793b7a3fcdfe48631305e31c6bf934a14597a2a9a5c3ac0b54744a4666370df8c72410d20ec708f7159fb1c24d9b8f007f6f4af396cab4db3f2d0263a44adca68ee77a09d38578ea31a57024c5527f1b055a6567f947a8e75f739311740c70fbae5b3a1f2af8719cfd3710b593aa1269851c7e49a1ab840032bc27db9d956a71daefa4abc0e1a252d6f55d340f794ca5c16a1105d707c28ce087877d38b7a69739eacf92a71c95a0c5f201718599a7ddba7f6b76475b8cefe050d8c8172c52a5a2e38cccbb678d469e5cc104390c22708145538804039813eecfe3a6af60ef99b3bf882525db8cddf6ff9969d71d1156c1e25e699fcca1e4588910d44fe7053a247c7db68aff94128b9b834470621718a241b102a934154f1214fa503857a8417a06c95dae7bccd0d026231d346676c53a8f1fb6cb3d16edb82be4225183621f987c203fae88713fc22afd0fddf84b0f601e25d684a23a217f96ee929cf089962c8cab26c1a5b2ea40c5188688a91ae0b95d05affff4ea29bcb0f1099d7e008b0afd54a3d3bff66fcd7264485576607a20d996c4feaa6f2de549e7d3cb3120fd31069840bf235f89693ae52867555f2d85d18fe754c2a533a5237b40fd0ee3efe6854b731597531a2dfe18fa8b4f8955dd25a06371b1c97baf7be73857fba7bb5a517e72df7c2c82555655b3d7b750e7c891b7a65d8baaae9d1e1cc2ef7d8d7ef713968dce88233108b6cc8cfd83de728e554c28bf9002307d73490e99077def4f3fdec14c26ad423e828734a07229f97879be8a98bcfc302e6c4bfa521082006322afbc1494c3a555e9d5b17b641164fdb3bbeb772d948e33ed5f6bcedf17d1e8a7f88511f7c85ba36103f713d15e8e9739f49f0c6cfa2b739e69b7baa0b08a965a2f85917a76868fd1aa2f696489f85dc7a0173ff1e41cd6d36a07253d19bf6a1e19a55f8c7f90d5795b409ea1077ae77b2366318d573e4e460e331b66511a090bcf50f45d8885ab10c9dd65b5e4dcd09ee96ec2f8672dc98c67b8050cf13e253ee45f95a645f1773a6188f82b5cfcf10d065eea4802d503e32fdb6e21e078b6d459807883a88c6575646d33a0c1d26cd4d98a136e4f4c940001edcf3b70210bab1017e4453dbf58b0d83793b1df0d4a543ac0aaaff17d062292112a82a4b2ecebbc4f7fd0f844b2deb8cdaf99dca1bd189d91e594b514a7305f4fc8b9e273bed6dfe67ee3607f4d31da8863b3433795801fdb7c5a84d9c98ae0f9f2e1520b2f1e352a31adb2880f9805a8d1120bbb3a97dbaa6761b9bf152764aea968b40502dd083f344b3b84814d93c745544e47d1ff3b731cb20365d683924ad1381f5a8c354a3b217fed8ca59b86f3f3eacb6de649e0466a4528b9c95b41cfdb31ce605f1ce2b8b1c02e71d01be36ad654355f1923f52f39888dafba82b8188743a2f292f913dba6a00b9611606ada5bc08a8873f5d7a283a1633d581c1edbe5ec5d21f652dcd063e6ef36cd7856c3dbb4a77504177a59a19d0d8eda3d0ae935ec2497f0861013d243f98c78e5137f361a03b7d9289dc346fb945af76b279c0418ca2fea0ba5c6bd5bd8c183a2a552e41c5f59a69d86266429bcf0599f4528ea94e7c2451ae5c1ff6d18c21fecec62faf221b5e0ca94d6e91f67268822e3ada0367065e179560716f884fbcf44f11ac0a136b7ea777a8778a93dce21181b4eb798ef2a2d1f3823d14ddfa3ea3f678a49f9d8bbbee9001f0f6049b332b9de3f86949a3a3179a5c388f6ae6988130a0b85f03c23948496fb3fcb1d2e85361fa11559ab2f3432945466b54d15948f059703359872b20a24aa90a9a210d443fd99a9b9661b0aed5aa884055da20f985f657027bc23609db6ec6738c58ba3dd3c40fd25913d360d12648b08d65e745555bab38ed37faca5366db87cb3499b1f7648610ea8c3147f16a303140133f591dd5fade84ea8840a71ccc3d43e5821563140bacc01387846c00f6c17891a56ba97977a86095153996a8dad527303ee557506c9126f96cac69dd1826f39b75106a2dc34f07c1abbff5c31759a59decf99caab0af7c1030e99a0b7a79ad5c9d43daad330a7a01ca4e02da547c0fa893039bc34fd9f8b412fd7314d29265d1a2995ba19c4a7d3a2d7f769105a2a68b562bd73f9a95a92033afaeb482be9ae2bdb53d179f2e0e131a8a813201b588e50aad3d59965369903c58c8a9ccdecb0ece676dcf1ba24d563037b835d886cd425b0e30ef4a77799b8c4f6481deb5f7328d6fe45fd2204f0f5fe7a6894b485d5672a485221132e61414d1fa98007eba365b3e517017576a57eaff61ca372cec966705438929484f19ba8b075d1d22ae81cf30ec66f3fbb6dbd09c217309447da6d4bbb82cc119967e3bc091b4bb5b0d6ed6ae6c38714728a8d0207c6eda5c0c30a912c087d81882b6df493c0d56922dd712ad857f8df1d9abc7076f54a95a9723131d1a5bb6e2afcd6bccee3132f3f9f7174bc549614de7976e504695427f7d9d9931c644213bf607dac0e9f4c306bfbeee548e6fe74b4310ea01fc082079c2626a4c80211582c9b1087dfde989e05d39de67d043eb4af4452d88c161d02bbb2a628c0cd3ca901e1ed5dc88c12c8c849aae4c519ed99886afaedadfd96aeb7de8e799899ea28001ccc68d2c31ceb7370d1223253e39144ca8e454a0c4e6aa4c36cfce0d08343674a058a26b08dc74fd809caa6d14b802dd9e1abac43e40e743694a4ae2a33bc426a5e906fb7fe88d171feb731bfa27031ae54c53af5c838c36e6f51f4976f513c70e0a1c843928848dc06d7563b23fc62bedcd6a9b28776c69b00b4f4cd926a27a5684d8b523350db21f6fdbde4faa9b98d597b2000e778b193e2843005f96a9f0515a8de8adb725f36151817c4c725eb52057be2e58e220f6127a117da9a9c404c39cb011adb38ec27388bc4e8b6879ad8f31291fdcdbe791f2314f1ec96a26c85181ad4482bd015c6423b00560c99fa6b53e85fa20a63fd8590d8ff757c0e1099200d0bac96c763f21d34466119757545a77336cf5783e2d961c9c56231f8195077892880aaafee3e501782d39266a1ea963c93c7055219695e607b4f60230301865a4695997049e3f8acefb736093e03289fa1e2d4f621b36dbc077b56b835b6e3b4aaf062ddc40dfc654b87b1cdb46ebfaa4f9bd43415025839999adb61b3a9e0e5ed4ff114336b816b4add0c85d1d4195b21392f36464a256490854346b5ddf6c3a01351c614c28b1fb44517cb3c4cbac6a0b9c125e19fc322e38e63c423ebc448d1fbf3e0333f9bf2ab46135fa7be60eb5c6bbd1c918ce35bfa8f3443bacd6bcbd251f9dc5957494df316a341e0eae5f3c498ba9015e8c2962150b5eaaaf208a406236b2cd92c2a3ba903eac9726e57dd9314ed2ea1e0fede0b582de71404748ccdb2609aac7db94a823666146e4b9f1e69c671300087fc28ecbe5122336d5b9feeec7fca8a0278df67e00c6cf68643c8b27b86fc758afff5278ff712ea5806c32b02f6febdf2a27cf75a320f84d558e41bfb9cc25843b6c8b7709d158584db4e722842e7fde138a42c6b035865a369bfd5a5d37c0291790a301205e9d5890d211f5eba6c180af6ef0caf93d282ec848adc583f8040740c83483beb232ad6900301e3e8968444575112687ffe99700f521d06a52be859f460348e35f40a96e1f9bc84a0b3ca173762b17aefaf0005dd88c459bde4fb81a974c4d5dd1094a6d0b3fc21d98901a115b064ab155f02d967bc3b28e1a09081a7945c66d9dc70ab01df9a062ae56dadcda23ff3baaad2fe56a9b61dcf85c2f2025278193117d34f5607aeabdba779ca75e6463a20479e004c9e60c9f9080a6a091c59c486229c31abab7fac50f894f1dae6cb42d68fe9a3fa14fb0ea7770b5c23c5daffb4c5b14825aba55c90de47955855dab5cd2c36d99fcbe066e74ddff21e1f1504d4f0ba73d38ec1faad89cb290f162ccdf4ca8ab77c36836c95012fb325cb62d1d9c7763000e1f93bf76b3c614cc07f4f246a37eb1460fb25a1e1b149f6082d3fe6bd0b29b525a31fac05b7d6d5cc7ae7ef4aa6a37694764e9d6f1c37dced5562043b11806548333fbb7daa35c43d79dbb809c5b20d0a13b1b71cc1c282438f9547306720409550d86a89bf830ff01ffa1b552c3846ac1e1ad1282566085ea239a58219adbd4505d6839b44a6e31c6feab14bd29d4da9d0ff10276fad6a5a31f648f1da01617888f83e4ecf817b3ada5c85a8f7258d8336ed6c73d227b9537b6773eeed5e06eb0296a1b22a2fc1389784ea8f306a57b44c7b05dfba2a411cb67b579144e2b9a34f77fa1caa84f80cd440380a6690af738de6163e8a95135e66ade21074aa31fe26a5fce90125a934da997f66abf98a814ba524ee3af603f8ff0317a1bc8ef8a823df1e402d261f4bd27c28c744c0223d4c44c5c6602c3058584afb790fd1aded4b97e608ca7e16a052975c93c944fb8725381bde3189cbf063f3289805b56d36d926ef4c51ad5791cc8f55bdcc6a264badf45cd6e761d0ff6591c3e0af9473a7e526c27dfae764a124bcf25be2787d2471bd66fadeb3c6c0c00bb875205f11351422366756b63a1a74654171cf15972c941ada4c2532b096fea432ce94e081fdae175f8bda1316c58132f8e12bb5a264b7cbb99b88c4e48321d7c365b9a00627d09734a66c5b4d446b7121af59d36f448e75cf8e3cc5ad5554dec77c1675ec781c3cd247f53fed5c1c3e6583edaf24f74a8d4c4908e09c8b60e29d26047443795be6c9547980fef741b98406b0744418d679c67a8007a3d8bc896a41099cef6b1acb17ae8e0361b29988520292579b4b2ece606e0981e6ec3bc8985dc680c004992d4e0a543d3e3fc2ccd2220f59d28b7f70cb1809232edce18fdf22123023db592d8ceea6a0f3ee1f0e9318c756d2796e372bbfe14392602ae117f591c74e0acc5f9570f496b37c44f84783fdccf1443e86e1d9b090c5004af63fa28758534f2cd49a1ae0b4f32d4b674366a60b82a4803a1079470bca393b66f3f71269755c8f3548dec0e74b346a1baa12f70f82bbf01ade29eaea4b5a96a27af01da96be23423b882cbaf6d8c84c0a5b6a25e432a3ae32f86cefaf28d3587c22bc7ae964facf6b71513052ab9c696af2d727ec12f1445e973050d8ebeb0738bb2f629a0f5f62df4080577d31882619526f7b87d77042e428b19dbf76e78dd86d7518cc6968038d6ea29488c335a23a51c7b9892f93ad0897692b811f2febdbd45f4fd6fa1369f026a4b3ecc163d6d4f364c8f16f751dc6ac03b6fb4dbee4aa9443ba40eff402bacbb76dd8354250f723a727f9e81c2405c2515c63236196a008289e0d441db4d94c90cdef1024aea9309bc046a2269ad5bf28df120f6bdb23529e95d634aae6b6527b1466bae5d51c7004b2d86e5b22633e9d3c41eb839df7e5543af202d6f558ae0880270115c383333b5b97097995e79c3cc97326306df7b65f631cf9669c8383a6d8d4614f471c875fc4d80582eeae0c14bede0860a03e9c817e522162bda4b7170cbf3aa73ed8ee2c54e90fd06f98713cde06cecde4ba6781d6c7787d39c4d7b62bd291c6dc27cf947441941f2a2b5c8b95ce7a8c5ebb35a4223e4f6910c3b1c65031967e29e530deea8b13241d0933e085dec880ab24ecdbeab3bc86f143eeaa14c152c24da7cb7e8a2348ed5d5eef3ddc2684b75c0bce3ee54301d9232daf70ab174de2ba1df2ce5b685fc9836ba89a374e8a94d066b661e9070e83cb36a570393120d773506b97d68709eff367967f99aff707c2263660aff697a8f2c31eab95c6b5cdd6721140c923691a86cf6f088e6b66de44b477431696b5b2d1ec5ee0f25d717d9862f8fc1ca63654bdc19e9ffea58bba94b8a54b758bec8de7e6bfc920f6aa3502dea9ffd5b7de6874731185acf36a2acf48c5053da2c8db5f6a627a364e81fc2ff89b5850c7d4946cd72207ace11586cd7a892cc6fe738e2f94f2016a21069da150f88f70805a5bef15ad06a2e78d0271998ada1be4b008746691cf18cb4720d0e1745a086c21e4b9a847856f472dcaa9e71202fb982897b6ff52168585e7350bfd23e36386c8e9976ce55d5c36a553371607d755d1671d4bf7e80f5346e0deecec43fe3a3e331a59415b8104ad7d8b04208089e0f1792d3ac3ba69cb58e81e2b3f3a01c5ade7dee651f4019836a315eeec20f22af027170d051240ab83195e3f97cd4b47194cef60d6a05efbb661409880f55944554f306b3f9705572e6839068495d700a4bfc2ccac39dca1cd3462357aad704d888aee877221a34646ba31187ae1b2f1ea9d9290045af10d6c7521fe609aef8062c407fc0c7fc28af6bf22ba260f06bd77937087cea6ad0c575cf3f2b63b34b6063facdf594b4d87dbc0994a8cb2565ca25b94e6440d15d6502177209be72b6576e8683cf715c3110d161202b9440d7188503884cc2311fa002b170c54c5dca67593c08b63a2712cef3d10f68f15c282bbb32e0bbb08c77b4882fc92d4c152325c1b410ff930b24b67ba70156ec162d8c9827a9e245e90b5a6d03c2216747bee8addb5badcd201b25475697b9e9c84611e7f4d5d1aafdd7fbd9bcf46ffa6acdd962045134f29f7176888879b473af4be6e17718aaa109b2177283477ba8529d0d486d7b1764c5a5528bcc10b329e9842633dadec6b3a42140e8d66e2a89675193ba0ac47935ab9c7c78d3c414d4f59fec28e51ff6e40ca78f314b412ecc3d2f022697a437dad054ed510a0b71e730c69d886e7c59ad5444839a0d76fd716c5b67b5bb318a30cb2647fc5a39f6de2c5ff341259cd8d6f1b2d382f17b10ccf2b18f5a388716f814566ee537062b68d201d023543a41816baf44eac2051dc79308d4c7b7127a834a2763be9118f3ed4a5ddd97b1495acb6082a309304e1b5ccae570a0033ab0bfd454d540bce4abda76771a63eccdf185f5e6328a1893c59e5ff84e1217fa46986424cf2b8b25a1210ac93969bbc73a74a0890986fb42a6637a0153bcf49822a9f6415c7ea328c5112828d999aca3eb20ecefe29140d1e09412b51b47f13fda0c9ab8f5a6e665e099267873c16b692078fe704d45cbb9066f5c415409da5d9fd9c2f962910d715116b9f9f301bbf3061a49dea064f940741add1c36d884b88da1d78019b05ecf53ca99e8aede8d02c5ba9dc2cb5da4a48cb02ef6dc6fc13602892ff7a88de066810b328896156a322dbfd604179fdfa1c6731054d740f01717557390591df986fc47016fedb5f689f514ca00925c9bd051b4f7a128587ba61157a55be2dff4878a92951e5c378462a16452699859a265d50428a4051b38b9d7b67f75b6a208bcec37630267896ad1c00677f2e0319ffc143450aee33ecd0112fd0bde5dd7fff9d88675d000815ad1842d5960f62d6bf98afe56b0b137fe80accea3201566a55a680f2e44b4018241b350ce7c2a94b291d4bccfce289a228b13b2911bafe15cfed9735f27b45067af98e2cecded4b845b461c3c17fa105bb4b992f2f54d8559abfd25a736ad28d58e15d94bee692ff8e204755c4daac218cf6661cf756b9a1782c81025312b0cf9d5431d248660d042b5d032ceec0bb6189886c3410f44ef2a579730071a7502b01d8f5619798043b3785091f173eac3f555a42ee2fc70ee4f45b88388a9fb45c63556b62b44682f29183749c20301773a0387fbd0888a8210ebe9fb4b769f54f19f60111370f0b73e9ac6d4e80f134d4ccca29984053eac19df8b2c69abeebed511d0c18b86f91f51cf928684696e46071758b1dcabb3b6ac6e54a3afe9dc29f3ce5a928bf3f640bb85dbaae65ad87db01ff6203964d1d3741f4d566fb0aa06019c81fd9e9a5cf3d3160d78e2a2616bebc1666dba8630acb183fbcf23c331f6cf8687e25ed90bdeb8aef8a453587f44f83abfad86a5f4c7e90ece3d4140bad8f6dd005526bd9f5619037b090d8b2696593cb1843c502c4f1ffb0e1f647e99f3cfb2ae752b491641a86f5dd73693629713a683370cefb270a6801d621a2d50894fb5de660816f091e004d7aaf6222509cd82df95900a011b6153f005f61d35fee9aa384b6f22e83b3e07d19141eccc1b6eb080be22729352aa88f29cf4b12a220e265ace76b20e02948213e1d79a46b1e0956ea38819525d789a456faa885a31ff85025c3ae285b91300c416ffc3cae78aa7d0281954b637677a622ea37dc7d3caa62a283fb64d3e283d1811a27cdb91161264fcb8b85576756715e49fd2198684344dc5c764b224b8e0a0207877de14b24117e6351a2eb15fc6168aace49ced136d6e1d3012832d48d26852b97c94f4f5cf7b1bd6b261482473d458cb3240c4f959ba9e5d1ac71f6b8e6d1df6341fa7e6041af3cffe50c6d301738887e4b8d7f1f8d1a12f040daaf40d6b09d1e32833a1607c37891c77c3811c9b37dabfe60280e946ba58c59eadf5dc02ff647d32ef2541172f6e829669222d11948df3aa6ef0bb14a59ead0e45cccf485a492f098bc86fe5dc75f19fab10731aa153a182bf0e833b97b680033d9c0e54144aedcf940e8561c1195bfcbe4a8c8b259b4a8e6d408008a599fb629218a456784f15cddc3706d135d53baf813a369e015bcdcdb267bc9ad98f4af7459062fdae4891d67fc48c87f8274c97478e34d879248f9511a8970906b8f017988522713ef1ed5c1895c18b2ced1c42e7f80e1b4e7168b0ca0d2a850874390d81daef5aeee225f9b4eb59f6af13c06675ffe55479876fa3550b65edc776dbc9b07352a0f2df5c9c2fd5982537d70c88d21228ad11bf6188160ded295ba2898bdf899f235d88cd98cdba5a2421e8006f3595f56d0d70945aedc9e5f4c6a51465f0483a758c912ece87e00694bab45a5d133d21ef67d041af8d8fc0550c4dad02f00ab1689e39c4a9c003318cbf254283715c4f5821abd54307a7c25d3e1e0c658b5d5ec07d03fc742f6111c9e6c05f82d0348e1742996fee651cc801e4ba8ddb9957bdacb52943328be143a9fbc56854f738a726a88b5e7da59de27a26a5c3dbbe51a6cf68f06a2bebc6917633a9ea15f2ce2e06ec9d9eda4ab2a629b6df19596632c3fcd231e65c283fa34b407831210e22a6192fe5e563b2fb960a70210ccec96702ab3295bcbc951512e40fc91e622e2b2987aff9186f7d46bb6781da599df8ca27075ad6c315de46dd50d329b09b917409fb9fc357c3836e3e2ad3edfc7568ef40513b432460fa018f37a091d55b2bac851c3306d3fbd5487f24a62a52dda781a9aa35e411b95a0cd7f14efe51bb078eaf25920342905acea0d84e20d814a37a493a7096c8928a7d2bc7b27b3e6ec605ef37fd152526095a0ebb44031c2c96ce6b60c0b01010005000000060000001000000000000000000000000000060000000000010101000600000007000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000e43800001fac47810e836206cd1595238d34b58e766776eb2d28399404b8fcd3be8ddf76efb9a6fa34ee3c08951aa291bee64d435075777cdda34fc33da74dae85c22ae42e8e9ab054b653a919010101000700000008000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001e1d508606894af39a381ca6e452fa4cc1deb1d34fc9a490d7cf3ad446146976ff02010100080000000900000019000000000200010004000000000001000000010000000100000001001002010005000000090000000a00000009000000000000010000000010110101000a0000000b00000065010000040000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000380e00001fe48cffff817f00002e71ffffae5cffff6ad8166e41d7d3dc192be6ce705764f5a0f57997a0b2a3753187b247af3be4b6d662be0a2d0aee0e0bd057eb4e9da5318842c34a0f9b00691934f0a1eee514034d25fc48675a306880c92ba34cb5b39dd3cecf68a4d1af418fdf5e32c30857edc9130bcf417b75158334be5dbb084537e78bcde6415689f04804ea18f9163ade2cd69983c8aa1a20bac1fe39ea48e19eae8e30416e5724692a94a933fdfbf06bdf93d91fe105fb1229e7006dabba78aad306e61d8a9206cf3fb62bb99e37df14313ab957b5d12fc66f5cab39e67883bdb656c18982811a56a7a5b75ec20d79544e0e7782d920a0ad2ae5e5d03f5f90649379ae209e5a0df8c26327a632b58fc0d2a4fa8e133ff9fa08fa812eeaf73f5f34146f22bd4227e7eb44d631e7cd59f4010101000b0000000c000000c900000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001eb6640000e1960000adfc3ed3329da9e13d992b9eebf01f0f62a7c80d0f59497aabf06121b9002244fba4d97a29b711c07a8b357c2807be954268a1e683de072f592bcb25465a1e49d5bed353196a5b886a14c5ebef7f631af4be11f50f11c41517c32b58d048a436e30a25fdb780afe737f9d3ee8039a2db729452db803224089c119e65aaa01664f02c933a217a793f087907b55c6f01540c0101000c0000000d00000000000000010101000d0000000e000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000e30000001be0a300001375ffffd50d00008d8d00002d3bb8951a52217ad235ed67701ed99f49c570e096b1ca8f85b45f1e70d98a7124bfb67c4b961ee1d2e68997aeff8971ab616d52c73770a7731d2958fe07900c3e8eb60e8ba3ad84e1bceac3aa26ddcf53eeaa863e7e0226d01af440f11f6a9e68ec9dcee24e67408f9a7b8a1a617f5dddd20516b4af63a71dbf3dcd56de5c13ffe3a35065820514388e6bd0de0b44e0050201000b0000000e0000000f00000000000000010101000f00000010000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000c70100001d92e4000042ddffffca09e6d7963d6c9e345cd14a76b936752c8f2df2b0bd5092aad965079b6ef99d54c2ff980e26310d81bdffc61e579a8f7df2eded6f369a99b340538eef02c7ea670abb055ce5ef249f3db94fbe495f5106e72c9cd1100b446423cb0a023686b353f4c4fbd5271cafa1e90cd573a11af31178380974b39b26c1b3761be9b861df7619b73fb658b20606306fadab2bd3600c010100100000001100000000000000010101001100000012000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000e20000001ae6d30000c2a5000098c90000f612ffffb66e029c64a283964de12a85b006dc6cc1262b4eeff728c28eec1255c1390fd37664926d416022c14cda436c06b0cf721d86bbeae1d1cb7a8300d4009fd2efdfce1e83d19d2b95dc522b51a5c3e32f64e64536acb742f0c0a86d1a366d6b3e27b403766136dc9584e2a52058feb5f404f911985c4977b964e6ebfa9eef48f62279add30d54232055e8037cab6e053caf050201000f000000120000001300000000000000010101000b000000140000006101000004000000030000000300000002000000020000000100000001000000010000000200000000020101040400001c0700001fc1ccffff41d6ffff473fffffeb040000411b646255785ad3efb60dedef7f18ed55c94c344a015274ffbfc22462e0a0cac8296c210460c61185df7c6d1ce6de4443361173643789a9ad674ed195ede2af597114a7427214543acaf2f58629e2dc0441c29eafac61e10b7660240807304f25e37ed6b10bb385527777a81968bb7514d756e67c078af4701d33a186a981bba6191946e91a69162da2b41dce5161710576f2a547f31945ef00eb34a386cbbd88fd4a90a116bf95eaed8c93708eaa8d3f43e5ef62690d58163fd41f2812cf87c09d0a00c1f18684ff932aa6ac74706b7259c8c3357b68045e5bb247e3b6c6917cabedbff46829e7d676861e7be6051a64d2d527644208f5232042ea5f00d7f60e6c213b0c7d145752b9b1a9c7259e7c8c40060c0bafbc359c03541196377731010101001400000015000000c900000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001ef903000014e0ffff9346c412941e39ac73c9edbf3a6786eb322370128803814ea2937f13e17fa1961ef20d1a03c6904cf0c3aba24e9178ada39b33ce50b1b1ed99fac22507d60fbdc64a97b9a80a72f4948d2e1d631b6acd6e934143b4e9ed3b12fee8545794be7e7c5a0441f2d17e934f41457a3ca69fa119b4eba8eadff85701aaebf039474c1e1ef605bd8b08963e8bcdb2ac56a74c310c010100150000001600000000000000010101001600000017000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001caa7effff4fe7ffff73560000a47b0000aba028d43498df0ef4377f22bbd6de13fc0145c0e967a77294bca6cb01331990e74a3044f98f26879359d6c6e7c13da304058d98119566a59d2aff3b711b397736142ff29aa6c826d88b7e75b4dc058dd4250b3c007eb6a71d388612b149688632a048a891c32c0fa7910b981fbab9a1981b8bf7012a18faa43a70142ee3b7797323e6441af05fb1844c2ac9f57bcfbf0502010014000000170000001800000000000000010101001800000019000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000c60100001c58aeffff0d6affff1d59b81d9fd96f1d2572b7e0efff712dd84645f5a7830946a0bce2d2486c5789e7bc7f5b18b66be972e2abfbe02a4847027839ea14021c48916c4432e867aa7efa46608ce87119281715725015ace020b34b82c535dde726d64698ae5b30e3cefac274e531dd5df96d2b07ca6b4f39f5d5774f52639e2bcaebe206efa224b9afce1db48530b3bdb96455fa6d8e06517e0c010100190000001a00000000000000010101001a0000001b000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0700001ea4c4ffff8d5a000035b0ffff13150000954765c0b25517ca1a4255ddb0b711de50b4da8f08777c084a1db68ffaa033e4752c6ecf968e514a3bd8eb99f96b17ffd546563ca12585767a1dcc95b2946862e4de3a11a7e2e038cb2f8ee5b60b0f5b3627428890267c1fbb8e9621502afca41f5b821968e161c5e112629672a127d7c373f2d63446b650f4c30315211969105b293b240ebfab76a8fb8b35a0110e6e05020100180000001b0000001c00000000000000110101001c0000001d000000650100000400000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400001c0700001e749b00004466000031b2ffffe97cffff66e93ef7fc9eebeac6ae348c57b8d7374d445e0b0352d78899acc9d56177c4098200d694f0139c434fcfab562449c0bdb1f9a518a41da3577507e8826e3ebdc706ddb75dd6e31d5ed15d13e99d7b897e4c35609522f9ef8c035d915bc1a6366bfa66483c58d070b24dccbefdff328d6998339f9bced8bdd1127bd53b626239b0f6c3da122b63e46089155f4e8eb2bc572b7114281845de71e5bb73609b898d1cb6b6da9a56cfb84e02966d85cc736c8e802434771d455ae037c75a5fd455ffdba27cafe4822924de101d582339fc1faf27aee99eb8036216581cb9b3630fd6b9f187183ac1f1c4ebeb5123387c57c942f0f054247eccace1a521b26bb550ecac838ceb8b50fdb7a81b113c62c614c14b70e4399c77308456a490f052cae26c1e1b0101001d0000001e0000000000000010020100130000001e0000001f00000009000000000000010000000010050201000b0000001f00000020000000000000000b01010020000000210000001000000000000000000000000000060000000000010101002100000022000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000c60100001a3476651b25a1796fc51d544eccb22ceeb5144914630a259482295ba871b7185aaed79d04c57cb42fff19cff75cc86415937699ce23f74000d0865cebf8aeb3a4da401bf2ef55d53e010101002200000023000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001d15a5625b9a68f6e198e2d1b9b6024856d14565a64b7867baf65b26edea15994b02010100230000002400000019000000000200010004000000000001000000010000000100000001001002010020000000240000002500000009000000000000010000000010010101002500000026000000f10000001000000001000000010000000100000001000000000000000000000001000000020000000002010104040000004000001fbce3ffff99f70000e032ffff6586000068460000485000009773ffff5744ffff0c760000546100009a9300007559ffff5aa9000032d3ffff750f00007fe7ffff688e36843a87ea2362f4d14b2b8e56901cb6a512eb127fd3df549dad80f90542954517ba1311463eeeb5e74c77e09f91a5664e874f83074704e66ee9088d7273b68d1f4b3f48be53c1d0924bd7319093ea193fc8f0a37653665483a96e4d65a1dab284a9ea66f50cd53c70d3037513f788c8f2a8b9b27157e0ea308872b7ee9d0901010026000000270000000400000002000000010101002700000028000000610100000400000003000000030000000200000002000000010000000100000001000000020000000002010104040000700000001a08c6000043900000b931ffff7480ffff11b4282cb5379cc9f7a015c1fea27acc7ef52cb5befb2967d447f4fd991d7ec8f51aa90bba9ef05b8539962ab1a369a7789fbc55eb58b3f73b4d8c12c5c956cf491f4bb8f06f5dec049729e552aa2d736bd9ac9d04686c3db0567632e916551627f4d453e5634a4e9638e41dfb12986d7d22b998693beced9b901afea0ee0318fbf31b49653a26408c4ba365ec5e51f0b2d2cda6c3a641c8f16f379b658c04b25dcec525cb3f99df5379c4268a9439af8547d7b101979b40a394c65a1deff449bf72b16d9223fa45e5ea7f5ed7782ddbac4dd52930a673ecfec471c9ffed7f783cf92f8e89d8c9bd8bda71eedcdd8983d388ec24fb245551a9faeeeaf72c271418536593e304e1c932ce7751303b4abaf780faee981fcfbd6bd82eb49db2610518010100280000002900000040000000c5a7000000000000040000000000000062e601008d5501007e4e0100d37800008f2a0000000000003d280000000000008d48000000000000d9d6ffffffffffff01010100290000002a000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001da98156a085c6701634ecdbff7bda91ed85e9a72a3766fc6ff342692e175bacd4af73ffcd8d080457e319e1faa14c60c57aa5dc41465afd75dbed71e0274a38e6bc9f07daa12d6d369869089441f7c3f63db6e89ace0742b77138eef82889c547010101002a0000002b000000090100000c0000000300000003000000010000000100000001000000010000000c0000000200000000000101040000001c0700001d196f7558ee0f99c97ff02a0bcebc8e7d99f17cd2b5e04d923ab18b02684bc1a6da0a68b5e9f03f84378a1cb1caf0f612ff68cd84683ce4f6daed98417c3dbf0c9314bbcd1d8b84185dd31484b96ca23ebf2a63dd1c4863f30942f212bb48de4cb05999832a98f4205cd68739b8c82b52836c4c624201e09c9a133961282509b9edc074d0ce7e53a5adabb2b9e7acf332d18dfba8ab9edf547cf153fc327b89621b38a4d8cf3d02af5af5e3b2296e6d2012c46622be69d0094a581d03616ee05dde9c313349ba826f2c28e4d4c785a2cc3e679de83f4a4c4c080101002b0000002c000000080000000000000004000000080101002b0000002d000000080000000400000004000000080101002b0000002e000000080000000800000004000000190101002c0000002f00000008000000c5a7000000000000190101002d0000003000000008000000c5a70000000000001d0201002f00000030000000310000000d00000004000000010000010000000010020101003100000032000000190000000100020104000000958d04007523030074fe0200446f0700101a0101003200000033000000000000001e020100330000002e000000340000000d00000004000000010000010000000010010101003400000035000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000004000001daaebeb9c2cfc5d2776d257f31107f627cfc17fbaf7e24c0c2e25cbdda4a529d3050201002800000035000000360000000000000018010100360000003700000040000000c5a700000000000004000000000000006f2e01009dcd0100ae15010020c301002853000000000000138effffffffffffe40e0000000000001865000000000000010101003700000038000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001d1648cf9742b9d1faff4b6d844536275d78a10694aaefe3fb4274d151320f08f9010101003800000039000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000c70100001d679597097904b5dcfee022dd903d3e3aeb9f01e34223a3857f83b41a13cb44b7aaf5d409cb276cb128cfddae906cd898516a9705cbf15e37781e2c687606a642e27f1f9484b5348808010100390000003a00000008000000000000000200000008010100390000003b0000000800000002000000020000001c0101003a0000003c000000080000000000010000000000100201003c0000003b0000003d00000009000000000000010000000010010101003d0000003e000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000400001d530787ac0822ccf896f05870b56dd2bd05020100360000003e0000003f00000000000000180101003f0000004000000040000000c5a7000000000000040000000000000089890000539c0100ba0501006c66000027d4ffffffffffff917b000000000000879affffffffffff5b54000000000000010101004000000041000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000008000001f9ef96a54b4a6d7bd12cf892327216063d75a25149b545dde2339a9becb793fd3c225e23cd2b2c7fc1d5331553aa938e0de98549e6a3eda61e87360d7d48a63100e5367fc214b8e9e3faa4764cffe8e2cb97a6fc5ee62b20904910f7c43200dc8010101004100000042000000090100000c0000000300000003000000010000000100000001000000010000000c0000000200000000000101040000008e0300001f6bf708ce48c589de9bedf9077abb675a8944cbee8a2c279c749683d409e93a436208b7ea841a39d8950bb444b1eae372e2ed813e54e55d61e6da08e05317976d63327c7efdbb0ff2644d899f374aff76e689b9f39f3790aa4ad1841e6546e6f6edb4dcf454ca429d3406ffca828aeb5886312c6b437967bf97efa91308b9d9e8937d926e7061d586fe55d44d8bcac3d778c1c3b1331e9ff5c6a8c1ea7cfe6739477e179713f0280e1063ce4d91cb01d218d66672329f4a4c32f24349b8a5d19eaaf24c331dd6c824d760a93a54f99dac761d89f77b9bfb1608010100420000004300000008000000000000000400000008010100420000004400000008000000040000000400000008010100420000004500000008000000080000000400000019010100430000004600000008000000c5a700000000000019010100440000004700000008000000c5a70000000000001d0201004600000047000000480000000d00000004000000010000010000000010020101004800000049000000190000000100020104000000a4a20700ba0601002ccf0500f8dc0500101a010100490000004a000000000000001e0201004a000000450000004b0000000d00000004000000010000010000000010010101004b0000004c000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000008000001f68684bd939df1cec1ebf98561831d52c24fb3bfba10c929d63fedc7a417111c7050201003f0000004c0000004d00000000000000180101004d0000004e00000040000000c5a70000000000000400000000000000521a0000616a010017c70000cb5101005f1400000000000070efffffffffffffb57f000000000000c131000000000000010101004e0000004f000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000400001a3137372c63ed265185032012da48e16cdb720894df9f70a0598231dc95e55c98010101004f000000500000007900000004000000030000000300000001000000010000000100000001000000040000000200000000000101040000008e0300001a9594fdbb3e4845068ee5793b9955babc7c87fbb6ed24cf8d9bb27e5941185210bc19f56a53d58da9788f14781438335eb61411ef73d081080709c7b931d060a96263857b91af0da90801010050000000510000000800000000000000020000000801010050000000520000000800000002000000020000001c01010051000000530000000800000000000100000000001002010053000000520000005400000009000000000000010000000010010101005400000055000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001ab3ebb5a010f52867bb50fd08b2ba732d050201004d00000055000000560000000000000011010100560000005700000065010000040000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000700000001a8d8effffa14bffffc379ffffcfceffffb1965ea4822129f9a8cc3f9cf467aa9ca1bcd16d36543802a688d0eb6b14a07c57a0acf2b5201a20462fa829abd919e7e14ca71528c7f8094896831a40575013bd78356637952989ee9544825bbfcb9ff9276392245420019837ce5177fcca6adeb389020000b778c1d0635bd4926d94e09aaf6d3fe77efd9768adc10ac5642196b7a6105110cd2121a5547576eccfb254ed46cc7dec8816f3f53416ced59d88dd4a162adde745264c6051caa962a3595ed181ec0f0807faf807602e42ece0a0a7057c2ed4f0f4cd1e152f3c3521ab6ffd7cf4fd6c48b0e631546265672c52420b84f31f960f33659ba2c01efb8453821a570ee241bfe6f6c92d67c0350d88ac583354fce2cb8266f9cde39fd95d912b79cd7e46345425d211ae6bbf1b6675cf0b010100570000005800000010000000000000000000000000000600000000000101010058000000590000007900000004000000030000000300000001000000010000000100000001000000040000000200000000000101040000008e0300001b4a53b2d576a552b55b32fa57025217c865dc05b8635efc9d6a923c9ee093bb5b15443a82bd7bd3327205fb10d08156a4bc25e37c9cc1c9b9cb5237460d2b428e3f56d0325c8737df01010100590000005a000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001bb915bfde9fb87d6c928f8f77296bc93421f8c5c4a51d8663111f7bd98e6d730a020101005a0000005b000000190000000002000100040000000000010000000100000001000000010010020100570000005b0000005c00000009000000000000010000000010110101005c0000005d000000810000000100000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400008e0300001ebe0cffffae8eee4958419c6317b3801fb4571c30f3a0bd78d8022a81a00ca177fa214fca9b0887645fbd8fba4f3acbf0de43dea49987be6b57e7bea45bf73731e093734a409fa60ece43f8bd020101005d0000005e000000110000000002010104040000800000000000807f00","id":"lower_jpegai/jpegai/syn_y/range/9","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"outputs":[{"data":["3361792","7208704","3032320","8153088","3446528","7671552","3020800","7274880","3317888","7334656","3040640","8042496","3424640","7667328","2987520","7283840","3319296","7320960","3041152","8049920","3436288","7688960","2987392","7235840","3314176","7320576","3091712","8064896","3404416","7715840","3364096","7349888","8668416","3673216","8236160","3230080","8583552","3306496","8601216","3282048","8711808","3488896","8337152","3291008","8570496","3291136","8567168","3307776","8694912","3508352","8307200","3296000","8565888","3282048","8586368","3341568","8701824","3502080","8292352","3355648","8627072","3209472","8656128","3165056","3134720","7817600","4975104","6778496","4082688","7807872","4961536","6868480","3086848","7724544","4801920","6775296","4091648","7816320","4951552","6887808","3122816","7725312","4855680","6796928","4123264","7770496","4957440","6860416","3119104","7722752","4809088","6954368","4088320","7661440","4769536","7374208","9641984","3672960","10151168","3626112","7999744","2592640","8938880","3177728","9603072","3589888","10153856","3600128","8008960","2605952","8920448","3104768","9602688","3604992","10216448","3587200","7994368","2588288","8960000","3092992","9609728","3610112","10010368","3445760","8124544","2660096","9814144","3607936","3498880","7459840","2807040","8199168","4017792","6643456","2475008","8087552","3461760","7553920","2836736","8114048","4004096","6694784","2471552","8037504","3466624","7551744","2821376","8103040","4014720","6690048","2457856","8017664","3468416","7547648","2879104","8116096","3978880","6738176","2753536","7976192","9254784","3428736","9054464","1823488","8303616","4997120","8561536","2779776","9268096","3291008","9112448","1872000","8318464","4926848","8595968","2816256","9259776","3300096","9099776","1891584","8300800","4946688","8584192","2836096","9266432","3304960","9063936","2044928","8372736","4847360","8533760","3037696","3223424","7833344","3100672","8915584","4060928","7420032","3540480","7373824","3226112","7737728","2969472","8927872","4061440","7371648","3554176","7354880","3210752","7748480","3018112","8945408","4069120","7367552","3555712","7390976","3240960","7726976","2903552","9018624","4093440","7272320","3216000","7080960","8902912","2916992","7425920","1579008","9537536","3697408","8867840","1495936","8892672","2880512","7529472","1569536","9516160","3659904","8888960","1495552","8904832","2892544","7502848","1558912","9522048","3674240","8881024","1442560","8895488","2892672","7378432","1489280","9681792","3737728","9235968","1918336","3348736","7195008","3040128","8140928","3414016","7665920","3020800","7291136","3289600","7320960","3052928","8019072","3416192","7687552","3008256","7257472","3294592","7303040","3055360","8046976","3412608","7681024","3004160","7260288","3287296","7305600","3107712","8045696","3399296","7749760","3432960","7331840","8628992","3683200","8162688","3281664","8583936","3279360","8510848","3441920","8633600","3492608","8203136","3339776","8583936","3259264","8533888","3436800","8642688","3514112","8200448","3333376","8579200","3263488","8506752","3491584","8624640","3508352","8152704","3431936","8652288","3165056","8663296","3158144","3145600","7859968","5001216","6697728","4089472","7853952","5035392","6866304","3198080","7761024","4900992","6758912","4136576","7795840","4985856","6855424","3172096","7781376","4913152","6747008","4134784","7813760","5020416","6862208","3232768","7757696","4919552","6971264","4130560","7632256","4783744","7430144","9650944","3713792","10185088","3726080","7982336","2595328","8962304","3184640","9565568","3638144","10294272","3684608","7986176","2582400","8978304","3141632","9591936","3650816","10273920","3698304","7975936","2584192","8991360","3116928","9575936","3658496","10133248","3518592","8120576","2640640","9882368","3688576","3496576","7452800","2799616","8227200","4034560","6631296","2465024","8097280","3465984","7548672","2791936","8094592","4026624","6682240","2459904","8019968","3465984","7544192","2792192","8114944","4034048","6664832","2445568","8036224","3474304","7544704","2840192","8090624","3991808","6728064","2750720","7966464","9266304","3430912","9068160","1769088","8316160","5023616","8575872","2791296","9243904","3305984","9092224","1884928","8303872","4966016","8597120","2814976","9258624","3307392","9101696","1856128","8303744","4991488","8582528","2841984","9242880","3319168","9045376","2075008","8359552","4873856","8523264","3043840","3229952","7831424","3057024","8924416","4062848","7410432","3549184","7353088","3216768","7751040","3041792","8952704","4049536","7381888","3544192","7340928","3219968","7746432","2979584","8943360","4081024","7366912","3570816","7387264","3238784","7730816","2957056","9026176","4087936","7287040","3217152","7066752","8884736","2906240","7403136","1554688","9559424","3694336","8859264","1476864","8907776","2900096","7482496","1528960","9527168","3677056","8881664","1490560","8890496","2889344","7464064","1516416","9555840","3685888","8873344","1412736","8910720","2910080","7350784","1454464","9687552","3753600","9231104","1937920","3345664","7194752","3039616","8135680","3419392","7672448","3021568","7278720","3291008","7318144","3046272","8026496","3406208","7667072","3000960","7287680","3293056","7302912","3055872","8043008","3417984","7690752","3008512","7244800","3287168","7308800","3101312","8043776","3391488","7732992","3428992","7358464","8617472","3683072","8146944","3281408","8583808","3278208","8528128","3420544","8644992","3494272","8214528","3341184","8576256","3271808","8500864","3439616","8633728","3514752","8190336","3332096","8580992","3258496","8525952","3481088","8632832","3502976","8164224","3436032","8646272","3175424","8640768","3144704","3167232","7853568","5013760","6708096","4098304","7836800","5021440","6856576","3162880","7769088","4875136","6725760","4117504","7841152","5007872","6870144","3194240","7773952","4923904","6764800","4144256","7792384","5004544","6853888","3209984","7760896","4895360","6949632","4119040","7667200","4790912","7435392","9645568","3721088","10208768","3722880","7982208","2590208","8953984","3188352","9582464","3640320","10245504","3695744","7986176","2598400","8948096","3137152","9585280","3653888","10300288","3687168","7972992","2576128","9003520","3121792","9579392","3654016","10100736","3521664","8116992","2652160","9855232","3694336","3498240","7451904","2801024","8222080","4035584","6634880","2469888","8088320","3461376","7550208","2803328","8111488","4025088","6672000","2460160","8045568","3467520","7546240","2791040","8103296","4032768","6670208","2447616","8023296","3469952","7546496","2845056","8097408","3987456","6722688","2750976","7982848","9261440","3434624","9059968","1778560","8311296","5022080","8578944","2785152","9258496","3296512","9105920","1850880","8314496","4972544","8596608","2814208","9251840","3308416","9093888","1875584","8296576","4986496","8581120","2842624","9249152","3311360","9051648","2060672","8364160","4873856","8521600","3035392","3235456","7822464","3049856","8922496","4058112","7392640","3589120","7363712","3204096","7739520","2964992","8921856","4072320","7341568","3559040","7362048","3212928","7738880","3007360","8938240","4060416","7350016","3583616","7371648","3231872","7732608","2953984","9010432","4078208","7278848","3216896","7076480","8895872","2916352","7383936","1549696","9593344","3710848","8869120","1454080","8887296","2891008","7439104","1530624","9583488","3691776","8882688","1436160","8912384","2903040","7429888","1510016","9592448","3709312","8877184","1430400","8900992","2902400","7325440","1455232","9708544","3763840","9217024","1926784","3347072","7194112","3060224","8144256","3420928","7687680","3014272","7269248","3302272","7282048","3082624","8080896","3424384","7708672","3033088","7239936","3299584","7300352","3076096","8059520","3420544","7693312","3030656","7265536","3296000","7295360","3105536","8061056","3398400","7736704","3453056","7364096","8621184","3684608","8148608","3271040","8603136","3260032","8541696","3437696","8642816","3543680","8185088","3311872","8604416","3241856","8560128","3444736","8648576","3520768","8205312","3314304","8607872","3252864","8542592","3454208","8634624","3525376","8163456","3424640","8664064","3175040","8655872","3137536","3094912","7878144","4994432","7023744","4230016","7676672","4869120","6648576","3062016","7866752","5033344","7058944","4255104","7639168","4877312","6649856","3058304","7853440","4989952","7060224","4238080","7663232","4861312","6659328","3071232","7844992","4978432","7183360","4253824","7583104","4652160","7415680","9725312","3755648","10082432","3529344","7975808","2584576","9023872","3192704","9662976","3690496","10128640","3568768","7967232","2570240","9090816","3213440","9648256","3672448","10094976","3555200","7982336","2584576","9047040","3188224","9658880","3690752","9996160","3463296","8060288","2616320","9967488","3637760","3513344","7440512","2883328","8270720","3988480","6738048","2463744","7945856","3510784","7457280","2845824","8252416","3998976","6736512","2466176","7929344","3506816","7465088","2853120","8239360","3984768","6748544","2470656","7934720","3511680","7464576","2898176","8240256","3954816","6786176","2722048","7844480","9322752","3448064","9060096","2005632","8257536","4881920","8553984","2667264","9328512","3426304","9088384","2030976","8248448","4896384","8552320","2679936","9323520","3415168","9091200","2045440","8257024","4867584","8552320","2681728","9330688","3419264","9067392","2168320","8283008","4794240","8456832","3105408","3191680","7858944","3052416","9074048","3515008","7857024","3131264","7556992","3165696","7837952","3044352","9047680","3521920","7849216","3146112","7548416","3163776","7831680","3040000","9021184","3516928","7851264","3140352","7563776","3167104","7831936","3035776","9013248","3548416","7863680","3515648","7268992","9375360","3018112","7169408","1860096","9800576","3844352","8121472","2071808","9351296","2993792","7137920","1805184","9815936","3854720","8146688","2078336","9341824","2990208","7165440","1825280","9796736","3841408","8132864","2085632","9354496","2992256","7209856","1894016","9795840","3835136","8796288","2309504","4893056","2252032","4814080","2867072","5475968","2680064","4810880","1789824","4936448","2180352","4793600","2669440","5472512","2661760","4757504","1767424","4947968","2204160","4784256","2726912","5500288","2688896","4782080","1731712","4944768","2195712","4831744","2668928","5500288","2639360","4980864","2126720","10955264","5990400","11048448","6005248","11179648","5805440","11564416","6638080","11051520","6087552","11143296","6028672","11186432","5839872","11578240","6620800","11025536","6062464","11089152","6004608","11210112","5833472","11596928","6649216","11002112","6048896","11083904","6050560","11041920","5717376","11144832","6526848","4681216","2375424","2953728","856832","5043072","3688576","3680768","108288","4686208","2272512","3053696","1000448","5058432","3641600","3710848","182016","4698880","2271616","3036928","1037824","5050752","3667584","3688960","167040","4693760","2253440","3294208","1196160","5005824","3412736","3898624","1049728","11048704","6184704","9931648","6634368","12405888","6907136","11238272","6133376","10982912","6159744","10081024","6531200","12395904","6877952","11286400","6142208","11000576","6160896","10065024","6530944","12437120","6871808","11275008","6080256","10973952","6170624","10196864","6368384","12188544","6894336","11068416","5909376","4681984","1926656","4534528","2299136","4620416","2894464","6659968","3317376","4736768","1895680","4547840","2207360","4646016","2877568","6651008","3246720","4747392","1913344","4530304","2221824","4662912","2909568","6661632","3243520","4744576","1913600","4604288","2156672","4708736","2892416","6121984","3551616","10713856","5621376","11700224","6000384","12110336","6427136","11518336","6822528","10773120","5681024","11689728","6003328","12140672","6451456","11542528","6825216","10768000","5667840","11683968","5992320","12147328","6440320","11543040","6841472","10741504","5644032","11673472","6045312","11861888","6206464","11513344","6586752","4689280","1997696","5374976","678016","4459136","3121664","4416000","549632","4725120","1844736","5444992","908544","4451328","3104128","4406016","520704","4729984","1873024","5466880","870656","4465664","3123456","4450432","560128","4731904","1831168","5731968","1037056","4422272","2839808","4408704","1136384","11130496","6848512","9145728","7720448","13370368","5420416","9746688","6464768","11087744","6802304","9277568","7614848","13356544","5416448","9789440","6427136","11077760","6806272","9261696","7627392","13380352","5410048","9760256","6386176","11086208","6817664","9361152","7460608","13047680","5454592","9938432","6652672","4930176","2293504","4737536","2833536","5475712","2655744","4647680","1748864","5028480","2272512","4672384","2674304","5493632","2663680","4658816","1699840","5003264","2259456","4674816","2690048","5493120","2664576","4629760","1699712","5034752","2287616","4731648","2676992","5538688","2653312","4934144","2092672","10901760","5950464","11040000","6026624","11106944","5781760","11596288","6594688","10931200","5989888","11027584","6025472","11130880","5790208","11621248","6617856","10924160","5989376","11040384","6022016","11120000","5786496","11626880","6608128","10882176","5950976","10955392","6047488","10943488","5617280","11105536","6530176","4737792","2377344","2880512","929024","5061632","3666304","3755520","176128","4804224","2247936","2957696","1196032","5051648","3626752","3732352","192256","4786176","2251136","2946688","1156736","5058816","3643392","3765120","220416","4806784","2229888","3255936","1392512","5005568","3363072","3888768","1121792","11023232","6196352","9934848","6608768","12344320","6944128","11305216","6142720","10993920","6195072","10063232","6474880","12373504","6909952","11294208","6119040","10971904","6192000","10053632","6502144","12372864","6922752","11313024","6098048","10986112","6202752","10199808","6297856","12119296","6941952","11020544","5873408","4659840","1903872","4550528","2305280","4596096","2888448","6675456","3350144","4754304","1923712","4532736","2221824","4654976","2915456","6673024","3266816","4736512","1905792","4530176","2215680","4639104","2915328","6673024","3298816","4763392","1943168","4593664","2160256","4720000","2922880","6128384","3570560","10715776","5634304","11697664","5994624","12127744","6432384","11542656","6811008","10788864","5685632","11683072","5992576","12152448","6434688","11551616","6842880","10778752","5683072","11694848","5990656","12152960","6434816","11552000","6826112","10761344","5649408","11677184","6043392","11855488","6184192","11505408","6594816","4681856","1978496","5360128","659072","4422016","3134464","4418560","468992","4740096","1881856","5464320","843904","4467072","3138560","4411904","503296","4729856","1869824","5451904","841344","4433024","3137024","4458368","503808","4744448","1862912","5749376","991360","4443136","2858624","4413184","1126144","11143936","6855680","9110528","7750656","13387392","5401472","9745152","6512256","11098240","6787072","9268864","7641728","13384064","5415168","9738496","6429568","11102080","6805248","9216128","7657472","13401216","5385088","9750528","6439680","11103488","6797952","9356928","7470848","13059328","5460480","9907328","6661760","4945408","2308992","4723712","2846592","5482112","2663296","4668544","1740416","5009152","2253312","4668928","2647552","5479936","2653696","4627072","1720960","5014784","2271616","4670976","2706432","5500416","2670976","4651904","1694080","5024768","2273920","4727680","2647424","5526912","2644736","4916224","2110336","10886528","5936000","11013632","6019328","11118720","5782400","11599744","6608384","10946304","6008192","11073664","6035968","11112064","5794176","11610368","6599296","10915328","5979904","11015040","6014976","11133696","5787648","11628800","6618624","10897920","5967360","10994048","6057984","10929024","5621248","11092864","6518272","4751232","2371840","2869760","959744","5056256","3671296","3735296","154880","4788992","2248576","2953856","1146112","5068288","3629568","3754368","210816","4795776","2246528","2946304","1188864","5054080","3643392","3753216","211968","4799872","2230272","3260288","1362688","5021696","3358976","3895168","1129856","11030144","6199680","9918592","6600448","12358272","6937344","11297280","6136960","10974464","6188672","10062080","6495744","12355072","6920576","11315968","6146048","10983936","6192640","10046976","6492672","12387712","6916736","11307776","6087040","10977280","6199808","10203648","6307456","12109184","6950528","11034880","5902336","4667904","1915136","4542720","2314496","4604928","2897152","6687616","3336960","4740608","1902592","4535552","2203648","4631424","2893952","6674304","3284352","4747520","1918464","4522240","2221440","4651904","2925568","6672384","3287936","4756736","1930496","4592000","2145664","4707328","2908288","6126080","3575552","10706560","5621760","11687552","5991040","12130688","6430336","11541376","6825984","10780544","5687680","11692672","5998720","12152064","6445568","11555200","6828544","10776576","5675520","11688704","5987968","12154112","6432128","11549312","6835072","10761088","5656064","11686912","6048000","11854080","6193152","11505920","6588160","4681728","1976576","5367680","668416","4409600","3131136","4383616","487040","4725376","1886080","5430272","849280","4403200","3113984","4389504","507520","4723712","1883392","5454464","826112","4423936","3140736","4414976","511360","4736128","1872384","5725696","975488","4420992","2853248","4404352","1126016","11139456","6853248","9103232","7746688","13369216","5380352","9744000","6458112","11090432","6815104","9217792","7619840","13366400","5369600","9745152","6420352","11087744","6797184","9230336","7643648","13370624","5370496","9721088","6402048","11098112","6807936","9366272","7460480","13040000","5451008","9895552","6657024","4946304","2311168","4745600","2857856","5481856","2653056","4656768","1676288","4995840","2270848","4707584","2750080","5504512","2667392","4674048","1673600","5002112","2263424","4709888","2700544","5485824","2653056","4650880","1685888","5014016","2277760","4758528","2665344","5522048","2641408","4923904","2112640","10870144","5919744","10986624","6022144","11109760","5769216","11639168","6624000","10882560","5950336","10976256","6011264","11113088","5756544","11623296","6630400","10904704","5967232","11009536","6029440","11099520","5758208","11630080","6616704","10891136","5956864","10980608","6063104","10906624","5593856","11091072","6520192","4721024","2410112","3158272","1230720","5039104","3467264","3550720","59520","4755456","2378880","3194368","1305344","5030528","3474176","3528960","81152","4756864","2375552","3221888","1303552","5036544","3445120","3571072","103808","4761600","2374272","3442560","1451648","5030400","3221120","3895424","1222656","10935552","6187008","9945984","6454784","12423936","6897024","11146240","6182528","10861696","6220416","10084096","6377472","12436096","6897408","11140736","6139648","10867328","6218624","10098048","6365184","12413568","6895744","11160448","6168448","10865152","6214144","10187136","6210560","12201216","6948096","10983424","5920896","4597376","1852288","4590592","2406528","4793216","3003520","6544768","3097728","4586496","1827328","4618112","2386560","4806016","3028096","6551808","3116160","4594432","1828352","4626816","2371712","4805888","3007744","6540416","3088896","4595328","1833088","4660480","2343552","4856960","3012096","6013312","3476224","10703104","5624576","11691008","5933184","12007680","6297856","11473152","6906240","10775168","5691264","11727616","5926656","12009216","6282880","11466624","6910336","10789760","5704576","11731456","5937664","12000640","6289920","11461632","6905472","10767104","5678592","11727616","5962880","11831680","6152832","11451776","6612480","4523520","1667584","5876096","584576","4763136","3161856","4938112","795264","4509184","1692160","5897088","508672","4764288","3175552","4930432","800768","4515456","1698304","5880320","531072","4770176","3156608","4947072","809600","4510208","1688448","5968384","584960","4809600","3050112","4888192","1221120","10821888","6497664","9750656","8172928","12776064","5460992","9887488","6736128","10854656","6483840","9780992","8171776","12785792","5451648","9879040","6726272","10862336","6481920","9805440","8138368","12765952","5466368","9894272","6720512","10844672","6487168","9849984","8065024","12617856","5542528","10472704","6826880"],"shape":["2","32","32"]}]},"inputs":[{"data":["300","300","300","110","-237","3","-300","-12","-83","0","-300","-132","300","-139","-6","300","300","-62","-300","300","-242","-193","43","-300","300","300","0","0","-300","-300","-300","300","-300","104","300","74","136","-87","-202","-300","-300","300","-300","-300","131","-61","-300","4","-277","0","-32","0","106","-300","106","-300","286","300","-300","300","-79","-127","-300","0","-300","174","0","-300","-300","300","258","-300","-300","300","300","167","240","300","-219","240","300","-300","98","300","300","-300","-300","0","300","246","239","128","-300","240","-300","114","-257","-300","300","-217","-167","-271","-300","300","300","300","-300","0","118","-300","92","-184","198","0","0","-300","228","-242","-300","300","0","8","-73","5","295","129","-75","300","92","300","300","15","-300","0","-300","-300","-300","-300","-300","-300","300","-300","-300","300","-300","-196","-60","-300","12","6","-93","-287","-300","300","270","-72","-67","95","-263","300","300","-300","-41","-300","0","300","-300","-255","-139","300","-267","300","195","219","-89","154","300","-300","0","-261","-300","-56","222","252","300","300","268","0","300","-300","300","-300","300","248","300","171","131","-300","-300","300","-261","-300","0","300","300","294","300","-269","-300","-41","-20","118","300","300","-81","-281","300","62","-300","-68","300","0","300","300","0","300","186","0","-265","222","300","0","-300","-300","136","-300","78","102","0","245","-272","-300","-300","-300","-300","-300","51","84","-300","-44","0","-237","300","-255","-241","0","118","284","0","300","-300","300","300","-300","164","300","300","300","-20","-161","300","-291","211","241","243","300","173","300","-300","-179","-251","-300","-300","300","0","-273","300","300","-300","-146","293","300","300","300","-300","-300","-300","185","-300","300","-7","-133","-300","273","-99","258","-22","254","-300","54","-300","300","300","143","-300","-300","300","-300","300","-300","23","-300","-155","300","0","193","-21","300","-230","0","232","300","-300","0","300","0","-300","300","287","-300","-300","219","300","145","87","47","300","159","0","-300","-300","-300","-300","-96","-300","300","152","152","40","300","-142","-149","0","273","300","-300","-110","297","-300","-300","0","66","-300","232","256","73","-300","-237","-13","253","-300","300","0","74","-258","300","300","85","180","-128","0","101","-300","-300","300","300","-229","160","-110","300","-34","-102","300","-300","0","0","300","-300","-217","-300","-300","-300","300","0","-253","-300","300","300","-122","-300","300","0","300","-243","300","-300","-300","-240","0","0","170","-300","-252","-300","-131","-39","0","0","10","300","300","0","127","157","-300","300","300","300","-300","-255","300","79","-173","35","300","186","-194","-134","-300","-129","-264","53","-131","220","300","53","-300","300","300","68","60","-146","-159","114","300","0","-300","113","-300","-300","300","-116","-109","296","-68","105","7","0","-131","43","0","-237","300","300","300","-300","-6","147","-300","-300","215","57","-300","300","-23","-300","138","-300","136","43","-300","116","-11","-266","300","-183","300","-300","264","123","-300","-300","-101","0","-300","300","300","-300","206","300","-300","300","167","86","110","-300","-300","86","300","-276","-300","-300","-300","176","-300","0","0","155","206","86","-300","300","33","-300","218","269","-300","300","300","300","84","300","300","300","-300","300","0","-300","0","25","120","-240","-300","291","-215","-300","0","182","-300","-300","221","131","300","139","-300","300","-300","289","-300","0","-219","0","-73","-111","-300","-300","300","0","0","-300","-300","22","300","-300","-43","-300","300","-258","-300","300","300","-300","0","-300","300","0","-300","-300","-268","300","-300","-300","281","300","-63","148","-54","0","300","178","300","-300","300","-300","128","20","300","-200","0","284"],"shape":["160","2","2"]},{"data":["-168","300","-300","-300","-112","300","-217","296","-300","300","300","-284","273","-300","49","-300","-300","300","-203","-70","15","-300","300","-300","9","300","146","106","300","242","137","-300","167","-300","0","300","271","269","6","300","-300","300","-300","0","300","182","134","215","-86","-300","-180","214","0","300","0","0","-300","300","-85","0","-120","143","300","300","218","300","17","-212","144","-300","-300","-300","-30","300","-300","269","-2","0","298","300","-300","-300","156","-67","-300","0","-107","-300","-300","246","-300","-300","-295","0","300","-291","135","300","-210","242","222","296","300","300","262","300","300","-242","272","-300","-300","119","77","51","-300","300","0","0","-300","-47","-78","63","-300","-150","-300","-208","-171","300","300","-300","300","300","-214","-166","300","0","300","176","192","-63","300","-300","-300","0","-300","-300","300","-300","300","-300","0","-300","41","-295","300","-300","-300","70","300","-239","300","63","0","-24","46","-138","300","-300","193","300","-8","-300","0","-300","5","0","0","300","-180","-235","-300","300","-188","-236","-300","300","-300","-300","46","73","-300","-300","-300","300","148","300","300","0","-300","-300","-300","-300","-300","111","-300","-300","-37","-300","300","0","-300","-300","-267","81","-300","-300","0","0","-300","-300","41","-170","8","-191","300","-300","203","157","-300","-300","-284","300","218","-159","122","60","300","-80","-300","-154","-300","-295","-273","-121","300","60","225","300","222","0","-300","0","292","-300","300","0","-300","0","300","111","-300","-300","300","-79","300","-300","300","300","-300","300","300","-25","300","142","0","175","300","83","6","-28","0","29","228","300","56","-48","300","-11","-116","-300","-300","168","300","300","-226","158","-300","298","-86","-300","300","-300","-300","253","300","255","-244","300","0","0","-300","300","-300","0","-175","300","-300","281","300","276","-67","300","300","119","-225","-143","147","300","0","-300","176","-218","0","300","178","300","0","187","300","300","63","300","300","300","35","26","300","0","52","-300","-19","300","300","130","0","300","42","-102","-112","300","300","-160","-266","14","300","300","300","-300","-300","25","-223","-300","-24","300","-300","-63","218","0","-300","-17","0","0","0","-300"],"shape":["96","2","2"]}],"scalars":[]}],"graph":"57484731010100005800000056000000020001000000000000000004000000000000000010000000100000000000000000000000000000000000000000000000010000001000000010000000000000000000000000000000000000000000000057000000a00000008002000000000080ffffffffffffff7f00000000600000008002000000000080ffffffffffffff7f00000000000100008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000620000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000100000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000080000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008001000000000000000000000000ff000000000006020100000000000100000002000000000000000101010002000000030000003924000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0000001ee0160000814a0000a7c03c7a71cfc5e928e0f1f3f2f1716c3919b087c4482b9bc2bf9f60ac0d8ca6d15d96d228afd2cbf0bfd77e66e1d263ddcf76e3835b671fc353b33cf442bb884cdc92bfdcdfaffe07f99190aff452d00c86189e3f4a2b9f89804b6a27893a665a5d168f0417f81222ef0cab9784ccb5a5c93fc2ab7bfab3632ae6408e2d017b769997d06ca7a7ebdf0e0e1976c05391206f681be5b3dd7763394ff0f58ee05a76764281d93264d722cc007006be6ec37cb642f26c6ae04425ca7d5a3f4389bbd2a24431b51bfbbfc8cd226e3b0544389278213520358a3c7f14ee9836fb50e2033f690cc243449b62cee3b0fca359a6795c4281f17414ad26cfc898be98a2ae4a476380823b4234da25b1df7abedc4ce55e190cc0fc53311b5332a5cf29ed61a82ad549398b8989af490a561fe1e6059baa3a984f6f5c97993e3ddbde5b7685a5391086635cff1b4bed76538d965e94b22c5a7531c9ea727ef3bbbd5c87053dcdbe4d37a01235a0a944610375fd1b4cb3e040f1bec2b1fc537a6ff1a1fbec42ddb3a5c3eb57cd7f014711baf0961c04dacf0d1ce13e7a32a2b0dafbc424f9e2f2c76ce11c06ced8401fadc0846e7f1dba44586ab3209f97bf78d5d0fe8b2abe1d1913db0a0aa7d5852fcc6368b5238c7444565ec9bbfc38f92dbeb58392343e66a49c2ce800d7bb6555cb7b484602e503713d9e730911e4d63e8a2aaf670b85b7b394e11d2cad81a4d79ba46a825ca6d8949c68a5a73049235616511721cb5037c522a03e1040e865360ac5b56c6eb5e00313dbbbf941baae6d704641e52afa8ecdced29e9783e3744639818a0d0be456dfe44388e2dbb7e8a4a7b04d653658490bd62b78a2db5d4120ba42b8369e6d5b379cd63ef0d7c8b120f93a56b9007ca86ecce554be36b299d23db9c2d264d99f02b3961537be280afe348fe3f084a80bd472d425c127c28e1ac6547cd472ce70150d0c1bb7cefd086a9c1df2263c414f3b6fc19b4f87eccd6f511bfc56f048eb83c34f7a1b1bac914d2c3ad52c7843dc57bff5455b858fd316175cbf3344324c7eb7a3559a5464c754965df77adba336b4ad19577af495aa3271f7013c8ab00d6ad9a6e92b6ced2b2fb8a40bf3f1fc54a5d3ed77bf528f225222f1088097427078829a1a76d5cf53fc831c8eeb9eb86b9dcab911ca8ee62f9c7f52714c344f5ab6405de399a44e148f1fd9c3733d2df5eaa8019598248a7663b1f78f221da11a4c1212000a17c58f6b593a3d12f08ec61ede2e0536e846050d2e9fa6e84016d3b993d547ad2440859a807d63abc0c5a1fb5ac11fca3fa8fe668ab5ff5b00d599460cf826e816b6cc0044db784299277b307caad9a0839eb1fea8fba193e941e7e748b556043e7d5033002e7eaf1851613c91ae2ad5933d64355ba25b30a914dcab411e71b663172a580c252254f1b4d80bb8b9ae5189e03b7c2a47c54185d544a7df20d1a898b8b1acf0a119266b9f6d36b81bd9c92e4b857a95fbc9a7a4a0df42eeb53a8b7200f04875d0cfbf93dc224b6a3a2228d149636404134e600f39c74dd6643cf58b52a4f21a37d7aa80b9a6b0eb506f12a32895a150d04043669ca5236ff341e944149c9215998c0bc063fcc3e1fec19ad9cb13b791b192c45004ab3824f8a56e74e33e35d60c0c769a136d581cbcfc557044775b02cb18a8b17a282019355c782ad0ccb4299dc2d94b8b4b84422a36ed1a4f5e4538553050219926c2afa4e441040a61636c34267d2011ad4d0edd63a1e314036af07ea28e53fcb05456ee758a0b0b94d8eb1e82f67572f7120ca9da2936cd0c487e6ccaed40408e0960c60f8d2b0281ec640f3f4d2e3690dc075311dbc80a1f1bf1bb142fbb42115c0c8b49269f6ba1fdddc010f30e2b2f87a9faf800c93944c243615eb2baf987fcfdbdb51608f762c850c1cdc14ae507d702c6d69ee17ffcc412560418dc980edac2230de41c7b0a7b2a87fd81a0db5e308603c1378dbda578aba02b56197bf2c1a48b25103afa47e4ea94326cdf40425d4a3a12d7c56c455a4e855242c2b4d23da78e59d8b6def24fd6c4655621cf8fd313d92e4542f582b836cc9062bd21865be5304bcf3dcbf748c0bd64d19251daed3d7cba250ea2bbcf39d2e32e332dab049d3a90f16cf26a39310f97ad16ef6f7ece003d78d6555a5c5d11e0a5b9eb32b68449b5f10ab8e4097570105abfb4d311a0c2d1378561ba0f4c0a0b3818d2ce967baaefc24a52acefbc7823e56732d3a2bd8f4282b395e303d435406e1ab14800dbf42e8365a286a79920ef3e49540e7a222fc817ec712f2edde05f3db99b11077faefd8859911f47aa8ff5f3f720c29ccb625d87926466374c617e23645b3a253d88f3867573c8da806a382c1bec522f7edf5c804d117936c0b09378c8d7e3ab52c414a493b6b30ef024d26fed6d6c2fbe869c714ae74bba67068ea827d3e3ba50e0ba063a297ed168ac25f73d685f0d49df1e2134dbe2aa172243dc07e44f9435267974bcfc248f55555112431330cc026d4264429e81c8fbd86c53131533e92464b4e3d70cad6f037b7ecbac04f06e101b80baf6b30f40302f22f072c7eac884605267f68da3d0b8937e5dbeebdc0e6997f7cda26a0bc9b318b30f7a2edaf98afc05e613599952a2da1e2a5b7f02359022e19368f6a72317bf748063517216aea9a3df2193d97cdcf298a7d1fc401c9f88caa5277d920a707abd000930a31677d9afd0a4dfe7e8a775e3c586fd63e047ab016e1a67148c9cae58f6dae7df698a4c03d1b38c11d9db0ed37a6865f0193ea911cbf8a2dbd2f20b22e5be55cc7fd899249f088adf707c8a3f3881f0049f048375ced53e9c9b86f0b8df3eb7b8b3639d19f01bd7959b20f11dacf9d8da74be98a6a7219cb1227f59598da732f43c32c0d6b6929496c3454bd62390916ce72e40c278f44d0f3ec236adc7e76834362febd3ebae728438c998655cd774a8a0b0b6b2f37bdd7c39812da031ab4f153412a22e757335ea82cb59afacc7ae6babdd62df5b9542e72583453dd0c1447c12f31ae70ee5529a17834788b56565f46701e1baf5cb1c0e10ca6731787a35cb24ff7a55601b1d801e3bee4361bbc70cd60d5d887a030169bd4040d165225588d5f12a1d3ac904331e479799e7c973c99f4876ba32d521f2f9b9d3644b0f42eabc832f9c00b629878a522796cf5f76103e8c96e5bdcb7ed557e02a71186c339e1d596c9da20dd724677884c3c7856a4d1d75d693cd39406f02694cd98fb204cfca8ad6a257c5fcd55f49822c833631adece0ff56329317ccc0bbd9d2174e284659637f7480c29733dfb1ad14c53bf7abc00b314e3a61a043cbbc20cd5371e4e6b4e371b1b2133250c401b5d6121d2645e35cc631e1d10b06bdc89c7c614811673bf5b058dbc59a71c5af2be8b0dd56fac83a4f789c7dc01880535308b32af110dd393e8a79406b848e0dea2d1bb12c8b2b8f6e5c0d4976df9c3ce5e6fd224a70b92a28c371e674884e41169fefbcd275eaa35670a6cde7cab3ceb758357fc5083aedbcf0a3c8873c61d714cc2a2fcb3510ec00cbe5fed50a6df6ffb2610a5c8d52dbe606f13537ef84dc18e1e95f859e1294b33d35e987d4cd15d5437d83c741dbbe287c3de5f161b9add6369524ce574d310915c333ec86c64fc75a8789b69a258818b43fab06a5f919687062fe93aa8970638afb8d8ca1ef14383f1b34e8f8fe78654aaa63f84f60afe1fb8f1ba30130029daeba6bb5f4a3b577212b8935e65c641eb1a90cca1982aad4610ae914c7fa0d895738a645685203a16a9234cab40afc2c16ff7534dfd58d4caa706965efea4fe3009f00049528d91e7cffa3736ac2711f8b5fecb079fc188c5c0bd5a2716b9723696c1a5fe949d4dce6f4f8c1e75181795d76fd3ec9b40092fc5f0d2eccbed5ae7889d478af41249cb7c8b293c8e0a35dcd75627b8697d0b92f65a63202e6d86e34b7fe40df91255bb83816b93b4a25fad27118c7c1b494d0a271848cf7d5ace316fb98a922a57a009abfa8cb8f90c7a4b582bb022971ee321a8a44d7651f763261a8ecea8624ca81039dd117f8789bf5d7783b9cc778752e89d06d3d35cd3f77fba2a1e29a1793c2803e238b783f2ce945d6015d018ad697f9850f065d45d860ca7cbb25fe962b5995f4165ea62b9c1bff74b49665094fe817b854a5f158dd2c2ca0fc4027a6081240e0afa8dd619249692a7d0783e11372566537cc15c7a67621a42b515d45e3c89449730901eb36c29f92c11d4dd2caa0b7eba55f3206b4ae4ee8473b12a2cdcf3afae52904d24aa0c5dc2ca086315eb2ec73335824ca47c1d06a2c12a6ee11df1d000e1ab86152eb32296a42de7aabb8bc1a17e3f4d446572d1aee48fdda47aa91d808d0e6d44157644f62d51ed0751381febfa5bbbdfb91f986506c044a0ce02115a7b81c7c2df761b4533486d3b664f8a685c40672ea11726ea8fc5acf2bfe3d83ce922036110423a6785d9e59f9bd5b7e99b7ee9d97e3f189696e4b3b41c6adf1f149fd5e830cba06741a85f3c102b487077befb6d8588416917a426ce0c1a7c4800814a374157bd3e2fb109936b7ba70514235cd0de638a3977d9a3bb2735877ec6ac6f1a4874def41e0403984028f3ea1b8143f84733c98481610a51035380ccf698231c676c761a3bfb49d79e8c979c964400d1dcab7b3cefe2ace8763d5dc7c00f5efb78b37c7e824b3721c44f5d2b4d79af13bc5aa41491eb6b51c8aa76be38edf2bbb20ec03928bbd7d1d1f0ac2c96764f5e4ec402877b1fb30d91c2dee788c8f57321921952263c0440c2e65e516dc316f054da14ed54d08c02ffc50887a5c2a46edfd8a1a0019ada120a698e99b5593278ba3732fb5de5d53d9dc5c5b1b05b1b8efecefb81f59b0e417a353cf539cc4e1f71f9f9fa21ca8692ecf2d2c2b8966b1da2890f3d2817d8d6001c86ec19a5ac3c4999b6c7cc4110a8613b4c5c26b87996873d6a85b5d31c75e10b7536a95d32d350bc9c8183ec6613f86aad5fc5a24985c5d0246533d7e53bbbf260307c139c48deebb6798c0364d5fd1d6d49938c69eabcf0f1206b4668fe29c4ef074f17aa272003c84ec240fec19d3fb5202792528ee93378df072bb24f17525bda6748746e7e2162331a2125d38f7d9ba2d58edb39ba19cd3e05ec985d522a54b4ea549c35c9f60ea516cbce1a5375956a5a935071428e4137f561bb78e0d385be774744eb3b2390c147dcef635d0cd29c6ec05fde6f72ac90ea6acc1201826cb868f038797f1133d50367f1b590a467e0368c8bd91cbbc6534547af519602f413b293f60b547bdeb23c64965bf0d7ab58f53d7e58f4afb0bd0d2d60bc450182605aeac8676221ff68b03c0a323eb64eea62573634f70cd7d37ef36753ddfc110a51e37e80a81f4b2ac003a3577a04372205db79f5b97ae990875f8003c8fdeaab96fda929f737c061fb5b21571ecbb7b1e594749120ff0c6bb8607c5113d8f1dcb433a9db5e56248c8eb0ad64c42f7fe7febcf740f8e85c7a5c195eeab515d8657713078a09e72381bf8f4527f44a8399394c27be990c5d3f94a15f6dc62f3048eeb786ec8aa923d994d4394c995f7969e3f87f3fa4ecffb80a78dbb93c39d4572fc04d1bf193ff6ea7e2f067088c80033deddedf357551f4af378048d452f5b0472f87f35345ba2056ce76074ea2c16bf6343c40faf7a2d524b66d924bd9e5b7703d46d5889a3f56bb6bab9fe0af7ad4298a055fd400bcd308d8f8db6ad296ac8c327843d57ab6fa0327fe99fe40cb37cb2898eea859631d995ff90e158f382aecb317490f26b38fda64594992328f743e85a1dc4a12a6afcd9fba7cd08111ff5a8f5ed61bed0bb6dfa72349b6aeea3345a243b4f8c12e78ca68ace43de94da840ed63fcbca133bda90b9bb736a6e2530771dd574ae71456764b7e7c97c4f05eb61c92995047d445b0b3bb0c5835598286023c353c9d80ef3987caaa4afe7a55c4c4d0d4c4d9adb9985c3a124a582b1db836546dc3dd7f973f833f469101323004ffa8cc67c5120a4c586dd411beb3ce0a6765abe2e8b83c6b5a4c1f51c2d6b24d6b521cb0f6b7e08f4518247df91e90de021d505089b4517a2fd60504498804db6f17e24b8788fc489142adab60d03790835729be8684575235d5b443dbf32e123a7044eb9b31037a047bb0d82e7f19177198c8bcf317d6e859cbcc76464767954a1d4342ff4a6560305b1d5fe4ae16ab7a90cd435b77b047ea75942f8104b55af8066bc22e49afd3163d2399e91014c3c1e0cf9554ca6af2d97e0e7955d12e07f80ba144127447452a9258eb9b83a2ad4ffc14b748027175b869bb1494e7f8e0508553128949fc67b0b6b6de979eccb839fc01d2f1b88e177af67bea967579b5038c3225a12fa377ffa6d0abac3eb1434bb2a3d5d04ba45ad7c364deab6026e836f08dcde428d8dc24a6e459592b561cab876dd24087b825008c236e8baf3876ae4a8adef951e47cf9e841c0666aec00f056d0f773faa3bd7d2fac860fbca432808fc2891e100fa03ca6703063d0d06ff3838e4b25c09049d98f800fa86316cfb18ebfdd92d30f80538fde7717d4aa66283e28d9214f48a44a80bfa146525e77a8b747789f2cab5e4df2ae019b798186af607be23c5b644a9c68130eb33f08dc1065eb4142fe5becff27c2043a3be04403f4adbf9f85cd9f1330a703b997a6ba87a58911ff81fcba5fee0561b16c19bf1d68728a097f6bee335318fc0dd7fc31a21c9067e5b90539beaa1641b3fbe2825bf52d8a97417cc0fbdc578b8109740163c46007faa15da35e57d673fa816a7db86939cc1b7c0e8ec775c2a264699a74ea5a9762f80b69d8a9a2458bc9e4710e9ee0f49f0568a15f335ae8c14001583a833d258cf0a9c3de7290b2143db70f3194b6ccb962828f30bb65403cec4f916d70233557c02ffd2247f7ccdd7a4ff54880daacb72d66ff5be50af1978865b8e6bc9f3c8d3ce75bfcec631d68c81670809059cafc5996cbcdf469863312f5ba4d7dc6e7e53a33f398201c96d61c903dabd21155db43ca8f6b12dd76d8b5d1a24fcd7382135fdb702fb16e89b9c08777d7dcb21cd2d031c3290d97f557011f4d94570e0d3cbcdc427270f4f95c29d28711c396fa6c2ac5c7b1257b67966bfd8afdce7e6fd9b3e176be3145cec65f3da8defe266dfb502eac0f1878c6eab8a2bd6c0d99b9c5fb1a32cc260ca8f1b557c75a9ce273fb3597e27df0421b5135b6532b497f4cb055c898096f426bb8c0ea467426d6ef363a22b8c43efd62886ffa0eef959c824f19df3362de5025d452b2f6f31cc70c05c72d306847747e9141154680be7bcb9f38ebbb270c965ff0c0641d8ec86eb5e7083b13834cb7fafe1ae643a221b9f0be3acb640c99713c4ce64d138602af17650bb48e41528babc21c9ce16b8de0a44a0d18a8b6638a30c16466cd1410e8868601695e5f0cb8f07b486a6a0f3f4b0729e2d519157fd00ad7f6fb15053a7fb94c8358475fd6d0445aff3d9abba2b3d35ce64a30f2435fd21a882b8122e45cd84b93ad825f2c8c7ed86cd6aa3c2e9cefff382da2f9c4cea9ba5a9135b566e204e15396fbed52e78424d190f403f5fc6ba48ca8cd3af262887c690141d86c4401d37497d7698d0dd0646ee12fdb8f0c0839bd8015b12651b1a482b38b5e860892afa973328dfca568045ce164e53fdfb1d232255022a4a356d49bc5e13d1e223fbb8300d3c4ec8293b225b7e36868ad0990ae73f1213fe5f0594965e8cc94aefedf91c9e1ec7156413fdab6cf91fd16c9e6ac4c5e5c4f787668a4308fceb30d5a30d770166491bde9a8ef79404ddd2cc7674a73b1461568dfe2ee2ca1072000942a3b0ce0cf1af0e779c4955fd4c7fbeebf3899eb92d1503b33b035172bfd18c27c2b7bff153bd71ab4d966564bae8cd2519385a3bf1a2ab5bf9662a2d88932f791298cf4511dcd79adfe1526b6970e3448d588073a6de0e92417b9d94a8d50241af033605ba1a34c7e9ae6af6f182137f3f337354525473f0b2881bbcf354b36b80b24eb3644729a222d3df27f9d3b68b3f1408abee95b63028f631ba9b6d89645481fb292009374bac5ca5ca0bb4c378913759f7894bf6354c056bc0927d9f9d5733a80fb56cd385f5d56f715c8b90592dfa934c4f2919382a45c56ea86ad2fa2fba51ea646abe9c7510f72e500a0745a23ed89a89471a38ce9b40ab4306da945dfddd5e0e2e4e4546d56b2b072ddbbb29fa86e62cae73d7de7fdf5be7f562b3dcfcfde9773e7288c52303c84173cc388de764ae06863bb3ac591d846de3d51ae50ca838365dad43d25785f7a99b63254a0e2cabd789edb07fd5b217a1de2a98f60d8cf665e130b9a0aa7a4df164ac24abeea0d6e77fb165dfaf2c327d2edb6115a8a70dfc7d1c9634288cf1285a7151a2adc553771901a51b1edc78d80c97356ea67bcc20d8a0eb8ac9c8477290619a24a175989ce27f5a47ce0c4035f3d0744f9a2e22b0425cc4fc9cb5b90924538dbc2e1ca2e3cdd92216bb92a6afb40166474f7c31a6de5a00ac65cab2d3c3ac0fa917306a6343087f3b731b338082c70f994bd0adf6c458ff3fceb1b32bd74dbed86ed2801700d930a5f83d7a6a80c6c84052d56349187ef3a34bdf9c593e3665d4027ed2a08692bdd95e9e30ddf65d79fe201b3556dfd402a6615d362cf04176474d9e7bf8dbf891aa57040b329c3176d9647be86d26ff3ae7291a612b26bdc0ce60965acb8b767fe502c65345240bb0b95bd5808bb57999b98181538f6ada431e948ca98f9b0c9b512fa190e11e94d8d11204fbc6b791829885d1c3573f56a9c407f2007ef2db13c5b1dba2be18032f622d4e85a68935b3b835c82e29d51eec2af4db0a7864abe911858b08fd75837388fbe9a898a5d3b57ea4d22d92f95fad46d9e999cf4176f446109c7c124241b63bb31de1def3d581ddbe1d7ad0ba531d5b1f54a2f74d6f47b408b9ec87d397950025d37100b4f05ef913059ab0a658e488f5904a1262c0d1d7fe43e4cb2d3801b04935ce1db176a4e0076ef366b0c2c73d874522fce9d13b0fae2e6245354dadd8e7ded9dc34241f783c195af49c69bedc044cd3b9ee1aa218ea316c4279bccce2892612eabe1a3000e42610f0f8c1f8b05034bc776f7a170249b2873026916228131d0029b37fe6dbf3ad8bbbe23d1d84f660f0a008eb18c1463fcb7339ddfad56ff180acd12c49880c818a7910f0fd90a7d686b031b80b54116e22cca005df23b0c18fdfb65060b60d1b90e9be155dd4ca987248fd8a3477b679357eb7d1618bc07f3a80cd3af8fef52f75e9e9be98f1a6811b5437f4090057c7eab37be64a60c3ffbd2685068c0ae5aa65bc490f0902e732cff7cb6e004ba290219eefc0b37d3732a95bd07555a2160e3815b07b14e09ed9c42c0a06b4b27b8167676a84974f9cc9193738397116ff251032603dd229780fe3f87b497e26db384e125935ec69d2a84155cd636c188196327b00841fd49c02c2730532eef4e0d8093f663af47fa05bc315f769dbd2c47ed10a26129783947e4b8f7613fa97f21927702ca7249433e0138931449c0fa201277a3d7401921b0f76402284a52edd16181fdf6d4ee7945f72930cfaac44f5a1ce1412089b47fc3f0155abeba2a5faa97878fa47795b914a9deaac757d73c96ee4a80d8ca1ae1edfbf841c5c02536bf0a9ff3f17f379394972b7421dd400ee055f26d21846cb4a099eace5eaf1dfc7a9cb8c9da02fd1da9e8539cf2623b008aec07c3062b668d9d50c517d188d2e69349436be547923bd1f5dbe56e15728a640f08e3434374f2471fac5095d07a6d7cdb7a3e07d05e212ae4873c54dc8a7b55b8b03e3c1329224369aa5d02ee9afef0179fad7e6fc90d7c3b5b1f995d88cc6883e87ddb1efb0cbf558110acd43a2cdd968bae45cb648400ed71da579d94be781f5fcea84cbc7a170cc3df28f0f2a9fcbb71fcf952597af63a6099a88b3c90b7f6a0e84686c779382db6fa760ec224b6a8724a055548f17e432c2a0bc787b3ca21b4dcd5b1078ebf0fc090451127e97d56cce456dbd1697c5d8913bda971e07f1a85ae61f815956dd17c93245d6012cc57575471cfbdb3d95a9fcef49c8a9efa42aaac486f04a99801033bb4762035018901461c973d56549c531c0e994112a4f2bae1a0f15b6c38c9506dda1a54d02625019a538d21e61190395afa3619b12586e0ecfd7011869e9757d8d41e4b3468d259504ddcfe228f075ca4dd2b5d55d3eaed6d9199d50488b06d8f96a7af7128b3eaea38a5b11414f05e1fa5030b3afd455026aebf2f2c48b1cf14b023624cc15550ef04d919b04691bed49dc596747987e2441f36f1b4126199950f795be49d74f3940f2e5eba8f3013819aa98c152483e74dbc43867dbe6b4cb7e767e6401b6fed1dd499bde8f6223dc7346412640775656dc81e12d60b0ef1fa3f8d7577606a9880f04e87d169d5632340e96a61db6ae6ba3b47f542f2b6d59da233b7769fc694d98d3017e6153cfea04b3947a27c1490eb2ea005d8695d3fe9d0c8f6e623b06f8555eb3cc0138a9b19949e84c7c0d07e6c7001df1197681bb0ce537c5978bbc8246a34f6f2cc9fdce9658dedfbe87a01acb9d47f9a8ef04804d1ecf951df6aa471df484c12c7a28b6fa861ef183dabd819e3c7ed8e62ee1805709a4398ac83cb441bc59108fab675a5848079b9ca1bec5226f284a6b6bd4cf5cffb4863e3f04a65e5e0dd9791b4773ccec0916f05c13d2a7802d26dcb6b5bc98a8d2cea87dd6ae33c3d3fddad9b1f116898c59875f084bca199d440eba995966598b966ee881dc3a8fa429635c3c154f7387c08b5fbfb69df04f042bdf10b080ba467797eae6e7d4aa6b12a12ece9633e8f64c710d17484fe7170486e53f5f184a59b27322bf8337734d471a010e10ee4847d2f0c308d663d8b0acebb7d313b60510f3d95a4613f923123eeb5522d82334200009533e40b5da6c37cd020f183d3f249901ad180c0916fe45b8954ed1526d2f15cc76983ce094696d5cf04b974359becb764cf589e66f2e1f435dff26593ce11a25af0b4adf5890f0cd007041287654f20162be73b772ef3cda54f19952621589bbdc035908446b17606a5728fbdbf73ac39a3060fab5126a3e71c1aa04893cc2eb9bc76d2776d47ce8f5064d3d1a75e7ba4e8c94ca5dc66c0f4a86f6e6db6006615ed0462c95357456945484804fa0f3a4c60e81c7f11f0b3af04b676165bf7bb3da767b5d27ffceb1c054043108208a8af7d2ba0605147a8ae0e264747b7e2444850233dcfe5264e5d569f90c958bcbcc6525b99067a1af411b738e40befe5ab60860fe1296fc9081325c211b5c6e3010b3058ccae2bcd7b20eef31e2f3d9ae3dd4f407e5a871f7c9a9813d2ce6c81ab222edf9431010d5eba3b4686dbb68e7742632538872c86e235af4a1a9430f371558ad6d392507693f23af0e632980767ab6131927267a2ff4b0154d6e12ba52549e41ea91a729b2111fdffefd72d26a54d0a863603ef38e1964cc122e652727c7c908459613dacdb9249ed4b107bac25d1c4394901936d2a13c5d6463be679f00be88dc0a1419aa3aef803443939beecdcc41d8b59cc750e4e44ac22479a9a2bc0b7e47af9f3fa5edf08c088ee933e58aeb994705c4927756d49bb442d0d84ace413257af27658fad1e884e6061fe2d867a72cd2dedc4074f372994c8f339f7d66ee65709eb1927c31c689f578f9df001edf43a0731f4aef1c5bfc16c04e6d64f7c1cf4b739c704af52006d7506b1e1e2c3ebd7d97c18511658ebcfff9195edf5a51d6d2c60a4661faad5a4567b7780eaf312bd771500b232467a3529ba26e3244c1f48ffff4d24fe029f8ef6618fcce6b5362649c694a38be735d699e22a12e05a971cfd727412592c69e4e332c1f733eb52cfd71fd84751790bb0140901f6ca11340ecf4bad280ccbcb5fc3018da129b4a2e903b88169ee0525d533b6d0eed8f57b7b135dfb5c7ec4b2ab475495d4f68e07a2c1522ab31e943c93037f58aa4df6707dc148f54cbeb491c7e670d99501a55ff759c806218b332a14c8b5e60a9d7f0ce99d3632c9d0ab3c4139a636dcd6ddde65ab1803cd5588386d8b5fdc3195fb27966f3200c8485d108578d324e63bd444d223e83d4004d7ffccf30b5dbd026594584bfc490e5dfae1fd944a6a4b8ac3f389b1a97291e0200672eaa5589f01332bbfedba2b3f71a4e3a9547e1a503de2d3ea46b86c989280d73c975e55ae0afb51b1dd3fa47ac069fea90b8b74138e7ce3fa47d32c9cdc499144dcce0ebf89ef3b387da52caa590efe713a854758328d573965ad6a48e8e5f450af5c5732619ca8ad6d5b9c808eb9c310557749dcf67e8ac1f4e71a84e217483a656edcd06359a353649e80c0b45e82fb105c1e2d13c0c202e2c35c292507c5920328e1f01854fb5949d7014a5161d047f83d5139ff1ee9b92649c25ed3f04c403f4a493e8f566879f7fd23a997a61d48d405f170c2e0080e09f7117a36d60ade96da5e039eacfa3f30111f44348ff6bd92eee1888ef3293e0acb96d71c60e31815795d9e26866b0ff3abb0d4be29dd878e59aa93e67f76a1f385c54e4b44cc4127bf0ab1d75a230e9e235e8eb7bd2794cef2c83ce6daf7563beebff616690736456de8ca37e46139279f2262edc1a6db335d4e7513f4aaff9c4bfbcf26af2d716c51fc455210709ac5318ec9c9792eba40cc0d31dee65a77b71d58781352d29daaf0429339506465d0017f09c0a56f4e9de7de86c34ba897988381d28d7b9f80ead830dc2a534d5cdcb3dd5ede1dc8e35d1d9253634ddb990b12b7013a1d32cc1a72648f904ed5511327265ab181fcb0c700bfe69db1cfccdeeaedfa7e7535e457d98f0f64b44892ebe6328c224b1c03962115fceb8954b779a85af0970bf133f35cdbbda1a6a29acc7051cdbc4ff22d9cd3e702bf80b5aa0602010003000000010000000400000000000000110101000400000005000000d51b00000400000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400004a0000001e0cb20000c402ffff1d47ffffabce0000ab9d0a70386df120daadd0141b448722406deb28dbea8fb53a85b78c09aa959c39333fc95a39b360ea6416411f4de7c4ca7d3636bc9b7d15542e56cb22be24905d7f484dacdb89e57629d41cea6254b450f59b795c55e4259fde3218406dac32bec56b1c128cf41f53d5c592c13c993e1cdd3e493cac9833d5b907cce201983caa4cc8d2ef572352058d2906adc67a34d0df2a7c12698700c70d47ee4d1913a6129f58fdc176d6eb6a9a895d8aea2a5f4a540b94ffc171fc708bbfa6ae80dbd9c24da2b453a6dd9ea696891c98613de41c4d2fa09b8ced76c43639f331cf4633051951312f65109ee00c61f9804b4238a7dca513062b4965691db2f7087e4a57c7659656b5227b341e6586ff7e94db162272f7ef6acc97bb7af42fd4ee5a17f96fbb73c0746885a6c0ed58a0636703e9d8948defa4c2d7fd5cc3ec19c992e5689829642c8c44ef96db2bd7e3137e1b004d715e39196d2e76b9b8806ff98ad238bc4f990b565d49772e9dfabf186def6cdea7653ec837dfce7b716ab07913d5142774c10d9bd029f7111b2ed2252bc8994ba625818fb8be28b2d878fae978f13c7babd208dd3dc528c1b6c8711438ddab9957f396f57c66adb2ef44095e9e504bf8f7dc8f336e20ee8edf193f9dd5c0023db6f89efbdd4d90797a6f5f745405b1984b7958e835ce80bdfe95a0a3986d2f2a4ae077557d4859d8790af655f18de7a55bc056c28b2acfcb10859108474d4251e281f5961925b505ba1ba61e72320104184b35db694fe67b8150bfa39ce8f809534ca92f51eab5036403b502903ef0399b9439035cac3fdc06ca780a6e70aa2ce1fba46335e79e4bf23690560914b4bd7fb6038f62084871e76152f65ad86852ee9ebf476e2c2d6ef2da3645de3087028d4066b25df783312681a57f06b24c3df8a5950d75895d00b9cdd35dd5d4ba4932c149678194e55a5cdd51b7b9619a5beb1812dab823065a0f0be7554162fab4f3645ebd7917c3604b04abf88b09f61e6e72fb908882ae494869d0fff3524aec996bed6d98510d77922f674897683676e79bfd2e93a71a4298d867b38acf2bad7756dd780dd387baeaf923a9977095f4341b8ae0d389b05ee6dca6ab74d99cb42646288b9dd2f07719d60b2cf23b69b9ed6ce595621024a8cb4d148fc0991da8d6976ef6353d6143ffadfc605be9768f3708377c8c0b9508d21ec1c6c77de3e69ced0fafdbadd9229bc3a6c30499404e23eadabc33a8c504088a97d2177e864f33757474d3c9e2055728c3f1dfef6e9ee0d0e8fd0c0e9bdc50d2c2d6e97e673cef20e9f68034bb7b8fc2f3e6cd5b3a47214988ea1ecc0e85840ed558771e064087b3495c4ad6969691752ea3045490fda8a3a698923b74a779918954be7a56ef66ebb4365a8def5d3486a0f7c1047d50c9c35786bea04087538d97eb3300965a06affebb11fa5847ef2ec2fbf7763d841f3f121677a77774e560f72b326292493b2313a38e35d4c8d664489613f355a6dc5ffa1399fe1d46b3866ad605b6ad30dc72b40ae8d34c6250a28f29463ebbc9be7e615a325a05cbccac4261223377bf5a148d528d098ca7fb4953a1d9e28df069430578782c01a689853c96873fe8174d806e71ec8db84c00bcb8b45a75d70cea3c76970eef7bde7904876cbdd462620723f7be4e7c3f936d0d4d73c08cec96bced188442f4ff811c02f098f7df6ce53ca92a3490d58270e5c0aa4cfc0a87238e6379f87ad71122da5f8a7795a244f4b94a9b19d759852f7cf3a5177b0637a2824db1cc02517395492061d23dd831ee395844fac10968dd2400d6340c41871a28f6e402763245efa7ecf447f7ca3dda74d677acd7f0ad87f9b8047bd290ec5b33beb2dae680b7c9ac86315a7082e62a83c8b5bee9ae9376b2597ccded0fae4afa035a17e75df016cc8ef730940cb6e7c549c08bf98c2408dbd61ed99bbe64b0ad6a1b164ca5862843dcc5de24a10439cad02d1bf90e4bbf5acc7ba67ff168c4e618d3dbc4c8580086d60ef3b8155b9b441c740b278c640997cedf46ee0b4f6d374104a9df6b8070f03c27f2d1cb69d732269c2478d4092ce9af6b19ab45925542b3e836a569025de587a31aa494d1dcb4b626fd41813e338f128df9780fb760013ce103f32d58b5824fdc958bb3c6f477e78d255bd1c5e81c6687c39c7618a6ae4fad8cd831377e76e01c1bbaa77aa1db55d5eec16573e45224217b3ee0135a08a89955c8cdc8227b52e1aae42e9d8ebe28587cd8476538e096200872dcee2f23bec544094cc424a3fbe7543074a4bdf3bc08cdd2809a9c23a7bb52e758887b98c2808f0ec4635f34c39a4a8c6ed53f921ed4ad974c0559cea0ec4e1e008294d67ba1e6086ad0fcf1d61fbe660051698cfb18211aaa0e9d123c4f517624ebc48c9134c665f8651782417af1e533882916bf895ce97d63238a951d4a7cb590eccb5fa56a1e2afb1df5d29ae7fa7dc25a79214b9cacaca892c3b5e3b7b5daf7e94ce0e8314f7979a9c07b1eb872d494430edf83b972dd4609477926f0b7add1c7daf8e383798cc034ce443bedf8430e90b7695ce5ce719c5814d7b0063da835a5ab7fcbc701eb1e9d307fee16ee83fb8a6ad208367b44fde7d31738b37c1cabf2e7115ad915b02bbf32fee4a8de3f7d92ca54c079df83694deac9a322ded79a3d2284af6420e0616fafc0859d810392020bedfa350a61e2523f1390ef8494250e201cacf3f8c185ee5b7ee37abcb3dbbb5bc6fc515b2a45c35fc95a19a6ec10b9a1f2454cae990e11b84722958910cc6398e6efdc01f61943f26ca125f9ccfdcdc8f3f7979a0c596ef165fcca527aea0a75dd4eaa1f897b885bf8d4e6d8a98f49c5f03552d3b2cd7daf4ed0e143092ea6d6ed2ec0644ae88f6ed8d18180057c8a0caca815b6ea08b0419175bf77e4ffe1215fcc6784740036c53dd995c13a7c49f4841924b58c66b0ce951d379d78b5b24fc646b6599c6e5c216fac57d358eb56e3cc61e8bd3b96b74c780aa44591a8965e62725e948f667ab786655dbd67117d59d9ae86109e77cc99f9dff66098030f1d865e8455c53c0dd8281e50061cb01f96221ff0aa6864d7c27ac14ef493c1e9cdb2a140d729e14d021d8fda99fd2b86e7475cb2e530462c234fd370fbfe06de291395a18dfadf503942369445398b45f562dbbf99000fe57bb69bdfb6a154ce4c807574e6990667344979fefa693e9259908999be5ed4a358c940cf53a53179e039badb98ab0cd643382cceda278c9e475cb034b64ab4fb12594c32e4d5ccdd1e4eee32f71962cce3f6ae2517f9311487ad8549b60b0c8b22bb0b3f489b85e9d9c6899f1f6dc86c59e2810d92c11da56dfa431b63c8994880ec189eb93fb5d921c55c756613f02fd970c4785d858e0aaf125ff30e6cbd69826e2bdf434522c565e63bcc3921a746c4e460e00e3a38c4f1b3812e4e7881888a8fccab2896e0ea89ad3820e408db39f0f4a7f75ffdf745410a8b81e87e0f2ddda7be73f10b7adc5e8dc6c8089ceb169ad2f81d3d1c570c2278d987363130bfa881e358f06a1ede9a94001a4355f1d3ac391122ea027401730abf05e1ef2bd5685846606c25fccb5e0b9d5a09b98cec16cc137a3a0d1d0ef92c010c932fd614a022a7804ead045af72c98e923d9d8383ff5d28ae466847530b7b91e9eb1965a49ebd38a797d0455ff500f3b34a30342c8cf16b65140bc74ad55565de93402513b0bf2039f17ab162c37eba093ccc3a5ff73d0e055270f2bca906148713b24dedc8adf594db7caf994e7c93701f2c001f14d7747729c89223abc0f33f26fe1534769a243a7c5e9b4b7eb13e209fbdec331863a79289a87bbe0117f2304334c892676acf6613527c33bb28ed184db12cd80b2937e7711d957168c12e8272879ef68c883a6d31c5e6d92eb1220fbbc9ad974620a4057f0ccf1d46d1cb3ecc83efecb1140741610dd614ef910301f7de4af696315725028925efaa6889028d5c516c0219fe0a5f97dcec31ed51ab46731b1809ba95a81576625e364246a635cd20ec47a252ef3b26894b123b623595e89a0015d1e2241521b76ebe21a10e57d272b802709a8776f9457a9696c35f244c711e3f859a4cf6d39ab9235195ee1479a6ffd9eba9a5c9f105d73e15870c0221676e59556a3830a70ea3e6d745b18552f08cec68ca8af02f501e8fdc9cada72a48dc96234f6254b08fe02980dc73116d93dbc3cbc99662bf4116186da99b9f03f727357a8a687233c8569756bd7eeb7cd6275e4a4dcb20d01d91b1751cad28824981a7cd13b58cecd5f98f91dcf6ee7cf66afa211d076a0d7a8fdfee9e09435fe59c745095fa415e79bc55b8831872db78284fd870b76c36cccd1c269128d5f1c38bbd641e2ed249caf46951487503f6fb9790d2fce14ac6049a2f76e3d79c1629a249ec2a8f617ae8b5f1206f93889c9af719457a60399d146a1ce65fb1879f6bfbee1e395263f6728984521fcf00e1f459ac2924e970d9ec186074f19c74ddb3f0d4034b5ac2644df38cf986d39e171eb04c49214ab7d840a1b1053393a0502f7c801100030ec3ed449ffd513df1ddfcbf9c0105c2261997eafe0c10dba6472b558c848e8f016687461a4dd18221a15d9d2a7fd51ff6c5935f3a9765646737f137c59aea085b36d5ff5ac6e8ec9a3ebb71f11f882bc7a66b17d6947a653276229f7966c38952b38d32706bbc036e9637eccb3a5a4a1000e06fb2aba148ca3bc05137bc3c414a6f9dad1f9cd0a44d992dcac6edd414063b511cebd5b977df4cb63b0c8732f7dfd12a63aedd33d9c215cb15265d4d848116274f2aff5fcc85b3daf54042d328983f15cae930156629fdeb1bdb53582e42c14398dacc464276c544253e7e34dd690d9eeddb8c396d4a03a4495e97fc9fb5ff90f08660ed8a6abd7a895314527dfc3016b8d8fc51c50bd72f9f5d356fd89b46b1ce552c495cbebbf540de7b837520e0c4eb5b1f154bb4fd1652b573d0b2d0760311e20269df7f454ef05155db860866302d78c746b1507faea97108ac27166c139deca9a63edb7bc6d108f0f5d1b400f06f411b9e9171acc63d6ba257aef52563ea5ed6d1dc4bd114755a97d99fd9c91c9ea609b16f1803be264d35cb9f812c3f408c3e116c74e8ea1fbb540e7eae6fda3f2d728b00be3a5c7effeb2bf9d18568fa8ee97932ef4830503805d99412b0a027cf9446081b874e1b0cec290177b284d4e41162e62b62b36e4639dda047e783bee0299276d10ef75e0a2c4b67076378337c7a049cb67c4a17060601d0290d05b277e69a067a8f94c941a316f5241b9608a39b2989f6a40c67fa8502fd814bdff354cb9d2a1b5b71179dfe71e53b8c585b84eddd06e8b6f74fa4f07009ca3fb8f2ec77ca9c1010a485a1f4eec7304b4596e780767faff34f6d2f3881a620317e1a397e765510f1633a20012377e20e72676374ed822133f9d478cc6c7d4b7543b0afc68204f67a84f11d6459b3abe7dd5b4671cd54cbc86f95979b23cc3c838918d5972aa6ce1ee086aed3155277358f52ac53b85845366e7dbbbea2c3fded48735a8fa3867bea8fe58ee2eff4ba76ac97755713630cbccdb018b373389bf3697baa3200f87cab7e3f85edbaa2b25df359d0a885ff01c6a3cbcb056cf00008e1c330e3cc9513cda309825edbc326c2781898d372174792cb3c8b0aba9e41cb09e57009d5233e333ecb8a3c304876df5f8df8b040ada1ed0dec6057fea78e66caf81c4d9f7367b8c8c807cd0172b29399447ac233c0a542403a822693c5bb06c0778ca6536a042d0fda948c7c23e8cf51d80ce899399e3ef911597cbf585b7077b618b86c45df9b232ae662e9873a514744bcf3c06b5d1b864501fe725a682669487664c2611c78b4b3117249c3aee9d1807b40b4bc350b9dca246e271c72a4cd6bb3cb92dcfbd8131e673a38931dee764950e0dfb882c14a4c4282ff7be717842e14fa16e80fee8b965c76d683d4e21f5a2a216fe7180c2318559df79de1bcb8eaeb24ee1940260660780be55b9579fe1daa3cc331411b684a3e19cbd1c2709d0b06b7a278d9f08ebd5b8c16d96a5b978a601b2aaf69236d82eb47e9104ea7d2f86c815d8f82a4ff7d9426faf3fcaa0ea5b4aea49813aebec7322c4032c9d0a4c2007e3ae4070c092a312fe07d7e97c4e5bafae2c4c8830384461227e3bf432d19c3a480fff9ece54e3b7ba06b9c183ab4ffb5c5fef2421e6a23c3e9dcaf9b39eddc4c6ee7a5ab85022acdb1c9e9d7b5903e8a597616cd2868fbef1a55d7e4899bab5dfc4ad1836ba328394d0c8abbd228cc8825ec3881c8139835c7382f1e76c40803a4b1159d8bffd722038999665c54a52fd41601236b9512ebd636316d70dc61aa67207e38974226654d1ec60e860197d0c848b9e8556c3324142934aceb18ac2251307582805796cc57bf52b9c179c3ce850a387bb29880ce243885790abf03865aada62fc042680f26fc88d6800ee691ec3c167f0632b934fd4e480f30a1c6f67b57dbcee75d0385b4670ad1bfd4d6d386ac976ff0690281956fb0832ace679f126719fb2048d77de134fdccc1e7aa781b55ec5cbe9d436e250e8957d97b66eb8afc70336974fdee69086be41aa1f1523bcacf09f20e7a551b766acff04e2bf4b005ee30c681666d8495abe61843c6ca76469567cee040b0126a531f5e3d843f13deb78c76dab3bf78a5e0664d5e66166b0b28a5057d14d5c821d8f38a1d2075b564f51ca1eca79053a6a0bb74ff6d3e7c7327956f78e61d8ba54d3e38c81ec281a0ca60d66c5972b5b8bf4b559ca751607b0785167d29e721794c1be1127f37d43c1e44ec02d18729bd80adf979d068138e2acf5c8258284ea46b9b9b18738d72ef4a03ec356768197b118e83c9b2620b7f78ef60dea4fcde921d3268cc7d987eca2c72e112ec1c75df63efbb1c80dfd8be17f562989aaac21336cf35db2a5f3bc6bf4efe685a487b60d82568769b43b3b2ada4811349a8ffa74c3060b51689277a5885b389ce041be4596df170e08a3292e7d6c561ce7a1052df6be0609025d2cdf5cde87f4d30cd83b0ff7196a9be210329ab5b1eff8bdca3264ccee5582b003ddd561c03791725a9c4dcdec3214319ba08347fd828fdc646df9bee5d5b62a43342d4d04de9bb0022d799a39003a80922d761c833ee95f5d199575c28d76ebf61a4853747237bb09b2e9640588e3adb300d40cbbeb3f8b3dc2bf0d4ccb6ab62eb72ad2be8da0ef2bf0ad044ed4d20a80e5b46aa9da4909eb6cb454080a5470f04e8433254843c66daea2de0faaccc8745f224817632ddb2bb36972b3c7feb8151784216a669c3c7ac1fb93fe95d5372f1906f92c592c2597071e74d2cb0ebd7be3699b223d24234202b81d3692a9232f8e73b7d0fba429436fdefd27ac59f9ce989d49acfee437d675bc1541ccf3241e6549f8b98226f0e8c52eaedbaea32250a4d4aa1e16cfd67ff8df2296ca1588adfc798ea7f6e7908e666f657eca4bef59ae904be40fe4066a2c082459f25646aa726c4a254785fb5b0e3c4aa1941e96748397966f3215b8ad1a0a774af25236a11c1cbba2a9744c8f7f0a175de8cb5c485fe89d28918fcf27685b22096738c12084d862f3e29cb149d4cd8ece2ffe6d3155e7896749d27ed82544b3cb9f4795495511bf23d70951e6fc3da649c63506086c1125d97f4d30c10ba1b6529f965308e3f5d3b2883a87190a4092e1f7d6c161cf45d9aa15dd59ebebfa42cc2a2e98464fbd73603109233427e3064831dfc1588b1583614a95395d903875e3cf3cebb3df3169299c20929f73bd1962356cff9e6ebf3afb25b70af34209b5eb94819dc5937483cbb92f22860d160e9dc73defb1942d232d2bf0abdceb43adfbbf4dd637f1fd6ed380a661732de8e1d87f41d386c32f62c862bf3babee368cce80a1fc2bcc39cba8ea105df9d61f8a75ab56a9a98d64bef9bf5bd65d213d04da72b4af054e376142dccaad41e60ad16dc2500c07761a691159313a69a7201f46f27c5cc018d96f2fe3da49ebc09b906b53179ecdd1db2a0f82e7aa4a6f8a86f2d0b2fe393b50c280f87f353ded342ea885effcb5a7a0abef40f273613e2282212e61bb9750cbf41c228561c419e5c6db830c0ddcb4d225a674075420713f5859294299a6e68f7c03e040896a8ee4e207a97f6164d19e9f4852f0e28776db12e154050fff7b4e3cc351b5e1fa16da3b22a7f662a43f9212136600e4a4ca11a3dec4f77f3bcb941e1e6af39014823bfe3b9aac45d454541982282692f78815d7e5f409ddd936554ef37aec28f02c66babd77140d74da2fe27d2a19e80a3a45a46069738cf1b71439d6715289f3364ba42f8be382ef0cc09679db3e22a5703b3c09af829fa5e844d8e1b74196e68cfa3c6b48e06d7fef67c988726141479168d25f77ef94212caba207fff04823a5f0077e8c493d52c239c11015b19f653b9d2d7ceea88204d98ea5f4ca1e5ad03d3e4e729cd154cdbd8a3728495f9453852c0df05c7adc73e032f9923c1a2d12d9672d36383f99207efd545217e291db475673c3473a0761f3cd58f59d08c506d3435d541d91c47faddb594c27e0182ec9faa88fd0fbbd67948f2e22abaf8fab961341158af90576492296dfbb54d790b5d49031c13b8b368c8cbc5f2cde6a13a2e80dce713d0ad22af14ccbbde87e07b46bd63075dce35c1374eb21743f1d72df6b065407c2f2a0c0216aa0766863a70fdfa1956e097c142f68c8c861b7a76ecd719b69edde7cb246c4441049ade369f62e35e3e1b25a98c169858a5bb23cbbf41b9628c563fa394831bbc9b8427e18400c0495bf640d77cd2f6185574d2579a8149250301340eedecb5352db056482d731f168da21b17d01ce3a55a393dc3b6bfed79f33bfde2b8a69ea8024a5c04bbd9519a20ac975d1573a22fe86b48166de9fe96bb79875fb19340a4576f0efc1dc2932558df2a4c51c4006cf3f7748b0e402fc5b96f242ce984d53b2c1303986570866fdbf4790791f88113587a0af6764fe971e3684d4b96fb2cf1408db74651cff81a63431678a62603fa021bdfaffa15ab0a75ae9d0c2256f8cb9b52c70dfa3437314e6a2181e356a7ea5e148e96f4552b850846e64795438095f59638b8bb9c9d3ac5fcf1128b1fef93f09964b95399aedfd03f160534e919977330095de61eb4d6d387def0efce29da5eebb5ebbbe10bf78f8db1031e36ce8fdf3d9eeaa0bc6d7f54c27625094ab653e2886f0b9bf332ad0c4631b3f2428e4b343f66ee3928fda4a46844f898042f98dc0e677ffcf6de463a587eb27039f1906f1c88017bdb0cb372a9797c948c4d49e2ca0cafbc6f846e51019e03ffa22141fac0f1ab9f3efe28e5351bbfafa41f5586dedd01052174847431b206c12182c9869845ba148e6a5a13a62e06767c8a04da0b318b0f0b55d0f3735866080ec7b573da0de6285d25436c35ad28dd2114ee25608cf31e334f6870bae00e0dd2a34bdf13111160f458c9ab5f6efd6415ba35385aa32c85b454768fe63f562b2ee81a618450f42a2dffc18b20bd1136a910579a15188ce362865e4a8e4cfbf5223895c454371a7ea4dce827d969a33f7e0fc9006f9a3b8c98999a2570d2e995eff8333047db7582fff08377c9656b64d05f18de15b809b1e4d0edbba99db64f44d89bc72d5092a18af4a2ad9d80be3e71ffa75d46180f8d0c5ab77e330a38088d351713ed8ebe9c41efd901524f46fa82a4f38d96d9f0bb050a6e3d744189b18d37a0cb1362b2d0f1d7b27091f51ccc533a6e85b0c2b8b1dbc02310a04fa30eab8c910a79f798d0c265fea9181aa02449b45e913897585464fb2e16e2a2ae2852320bdf1fa0f3529eea3b93a4e2dd4d10b4a9bdf8211afb47d5d4de31986ee5ef5b86c933992290c3b5a520cd7c150e1c9cab9b60b4fca6ca178010101000500000006000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000c70100001d03c2ffff66f90000ca1dc6087e1a5a8496aede3816ec019e0bc5f43adebe740d38dfad9a545a6a2430c129aa6b2328b5bffa2f495c7d3e12608a14bb158d123bcf45fbc8a688950362b8d80f38d2fb818cb157887b5d141f6a9593b4c8d78a0e4d100c2f0417f1724b57535f60f3283cf6826de43edd38419bf6ad8c0cff919589ed0b31d7a43900845054e5784101a0170a25782f110d0e0c010100060000000700000000000000010101000700000008000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000380e00001e40ff0000c64b0000e0bd0000da9effff5118b46d488de14b9e6efab843f40e764a3f9da1fc29cf7ef93adfd02188587bd7e36820858e37800fb54126cecc3d47ddc9b3b32b8592bf900f5ed37b2a63203330403cd0913e4c258e5dbf5c6e1fcd1f00fa8650209ae94364974a7ab7a32b69cd78d67b29eca88abbbe78525e3f77f98d85065405378aa83f4c083891e32f31e741a400a67b25e6efa41bc70e10e9050201000500000008000000090000000000000001010100090000000a000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000e30000001cdc580000323effff59a01905893e5850809d39148aa25b3225f5d3dfca057ff07076ecd8d19e1ff4cce1533665b1e65a60ad8f09ac7f7638b30224388efe5ac1f89a2c8dc7d78760368fbee24981ca088c09a1fb151d493424c62f11fd054fff2ee8173855474d5e45b74a0e50f78da478db3d7622cce34a9feb99a53649854b7865fe777c51db89710a0023be7ac72145dcb7c81572233a0c0101000a0000000b00000000000000010101000b0000000c000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0700001d6065ffffff00ffff0164ffff31e9fffff9b4bb457e856e840503bedb10c2a20d89770c77746c0b197ec2c509cb86c63effb76b0c201bce5033c295b98399a39bc464b58ec290973ed50e4cdaee514cee2a0d51858f7aa3d6f59f6a77d8e37cfff9163935fa91e10d3e6d98fb3193e04d8014859a4fdbca52986007d1a1f4711c224e23f9c7893ac8195f90aa313d942df82d9a3e6d1ae25991e4720f07fe171d05020100090000000c0000000d0000000000000001010100050000000e0000006101000004000000030000000300000002000000020000000100000001000000010000000200000000020101040400001c0700001edcbeffff12b1ffff427affff6f85000028e978230880655891a2c67f9bcef221db7a21af0ee75e25a5f93c1ca4b136369206cee1328b4c415190967dae2f6fd5bb97eeaddf61188f3178f35d163ac56cf6d0047ac916d981d5f42a70e76fd732835f208e79ee8bb1042da7651f445e0ec6b2e07305952151f82362629a53a522918bf3d84580fe70c56ca3547fff312abc20109905bfa5da6de4ecb0d631084dcd40e7f24c2bd425b03b83c54dc069104d46783550c049973f1e890765ae26aaac13d157fd1667fff29c4fac6d381dbc0fadbbfc720c67a3d318b3dc71d06735c216966cfdc84a6f5ff4765ac37e93367a733e59b2bea425da88f06cecef87a702d3f0c51928b7cca051c34cd618b15ad9c514cc8718a7c48158d6e0aa0bfe733e5eccdf60f8976f07ac7658057ce5fb010101000e0000000f000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000e20000001b5aa6ffff500bffff09977d1b9697680af049e7edb71743106b2ae909b7cb32a4e7edc2b8a6d15feea5f840f9d463e5fe1d1d31b87440bc713bb29ccfc368980493f629c9a9983aa8e7ccea74674f089d91ea871b26a6c20ebad1d2c807a76ac7756e3ede9325cdb46a2c8684fb1f6165a1d03c28305a0b53ea6f4c5250e6df39e150dc85add6dec9a39f585e96bec39181a63d2b02ca600a0c0101000f0000001000000000000000010101001000000011000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000390e00001fffdf00004c7f0000818effffd0f10000d3f59b699fd61b3298c957538aba06dab759c83b12fe583bd2d53d4ad3207f94c89c9bdcb5588ede9043fba300b1474e46f720cbd6dab19e969d270243e899a412371c75c632a56dfe31961c720a89dacff1a1d588f2f79e111774eddf81541c98aeb86a4a5c9d3347553e394416a6c3bc19e06bb781ea0d075805000d2a1a7ef325aba7571e271c5c5e2a075fe3aedf050201000e000000110000001200000000000000010101001200000013000000c900000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001ee789ffff5503ffffa765267e8dd4e650a36264d7dfbecccaf929c049764f5bc9e857673df617ef27be9ce126ed3753f489de05fd42c95fd11fcf54352c8e42b59d94cc03860aff66db28cbbfc7cc7846222f6e384fe1b97f0c7ae3c3756d6721e11d5d452bed6ade67825d66eedc5f1edfa92fdb834a3f1d53edf85f696d76509fbde130212fe03e1408a8dd7baa894e2a45e985d60131400c010100130000001400000000000000010101001400000015000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001dbfebffff8d56000003d2fffff87c00007d8d2f3469ff01f4429370f5a1788fe03aa8db71a37c851b1f46a4871b168256ac412b022b200de61c7f6244ca97e8200367fbf8d35d3a4f5329bb49ba0ecc0ac68f173ae1c8ffadf9c376445563ec9ed68d7b4b8d2d8afe08d1eef513aa41c8d7f042fd13708c15c17dfdafdf9d935a44bf283cdd66876db324d828de9cc93ef2d17ea7bf89f11f0792749f6e05cc08050201001200000015000000160000000000000011010100160000001700000065010000040000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000c60100001ca133ffffc026000015d4ffff7fdeffff59a0dc590091146e35ac92c414f44dcf824b6ce247e78c4ba10eade56926256f3d418779547e3da8bf62c50a92751c8f815d9225cb5a0249b01b7a4cd20757f8b85d6d023a18001222ed7ad46e6e64a5fa51c3c087ddbeea5536f2872ca220009cd82406629f9152f05740f3567754f4ffe0bdc55645f254cdffe571672753c39e1e4affd48b2efc06fba26c3e432bbe326b25400f65ca10e1729d81758637de2dcde72ff39fbe426c6b6195930966f529f74b48a2c69aefb37cfe85effa129e7364683b3cc5eff6040e7c263a3dc2758e72437469be143033e08b03bef864473c230c30e14c593984a21887e30ff60a85b304d660c273fa47964409d5a3ae8ae2f7e59a227694dc64798561097fe0ec2e89cc820dbca4fc4bb22aa5569787341b010100170000001800000000000000100201000d0000001800000019000000090000000000000100000000100502010005000000190000001a000000000000000b0101001a0000001b0000001000000000000000000000000000060000000000010101001b0000001c000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000e43800001faa085005e7b6b5b87b7751732ff8348f651844b6ba4d8eadadcc798c1ed0e2ae520603f2b65e4e4d6b46cb8f65a2414e951cec9f89087ad33dc38600362fd434cd2efda1885e5148010101001c0000001d000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001ec6e8ce95d03edf1e5c2b7099d4e741b347df67947f490aff27e5c84de2f34035020101001d0000001e0000001900000000020001000400000000000100000001000000010000000100100201001a0000001e0000001f00000009000000000000010000000010010101001f00000020000000f10000001000000001000000010000000100000001000000000000000000000001000000020000000002010104040000000400001ade8bffffbc8b000096c7ffff8587000084aaffff31bfffffdf3b000090cf000057690000da09ffffe4e9ffff484dffffcfc60000c15dffff3a63000044b90000bfd6bc8dbeeb4b782e3ecccefe1b3c24e4d160f0ba9aaff815d8f48e960fb02b19510ea439469d251d257472f35c7773f70580d6242b3f9a5d638ea8ca7bddf283a53f6e6909af3f177335c8a48ab0a81690ab4cc02a14ae7dde293c7da45a59cdbbd21f7937f9d68fbb47aa8c963533c28dd6056606d9da2f6c038300bb8d84090101002000000021000000040000000200000018010100210000002200000040000000c5a700000000000004000000000000006b4100005aa001002d01000095720000b04c000000000000856b000000000000cd83ffffffffffff73faffffffffffff010101002200000023000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001c41b04cdcbae9417db0b5bbf39d9259dc8c5d8eac4ee4ff4cef546be7005b0f3dcf25d5b065dd47609a769b7653a3c164b04e481ba549235c714d813a321c72aca6b649cfe9b1c4e0e682f06a76819676ec3680b6874a6e208ed42eb7cd725a9f010101002300000024000000090100000c0000000300000003000000010000000100000001000000010000000c0000000200000000000101040000008e0300001cd1b0504c299f06bf6196b1667721de8dc0f0b45c42e85ca17623fe85dd2b3f421e4a4c28b075577b76f91b2543c4cd9c9c98f578e1bb1db4d3aa237c34bdc69595c36fa8d08cf302de3fe62bdc22af43e1e849fb9dc15d712b1016c575b68809b0266137b12df50aabbe057115b5e2e08c83c228dff3360d0c5cf05b655d59c35b5026421d25e9dfdf362481d0d5979973028fcfb7cd8e7b5085c0241cdc6feef9fe41f4ee1693dc4fa897698e505d0104873382758af34a2f1e889c0916bbc472c906553cd1d45f57b297c36a5eec2a787b259401d2e33608010100240000002500000008000000000000000400000008010100240000002600000008000000040000000400000008010100240000002700000008000000080000000400000019010100250000002800000008000000c5a700000000000019010100260000002900000008000000c5a70000000000001d02010028000000290000002a0000000d00000004000000010000010000000010020101002a0000002b0000001900000001000201040000002a480200c0060400d24f02002cb60200101a0101002b0000002c000000000000001e0201002c000000270000002d0000000d00000004000000010000010000000010010101002d0000002e000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001c8c25dd0cbdf99a0fbeb2d44f3f64479e94f296ef129d96121f6a8a2075a9ce4705020100210000002e0000002f00000000000000180101002f0000003000000040000000c5a700000000000004000000000000009b27000072480000a45f00000e9c000073340000000000000ac2ffffffffffffa76e000000000000d8e0ffffffffffff010101003000000031000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001d6cc48cf3c3af0ca9d48b863b520ec7d9326dfa02a3477822362bcc06b65f1505010101003100000032000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000721c00001da2f7e5b63271ced57345419c9ad655858cdc4dc3b2d1abf721eb86f8267256d5362fc324ca1019f7a3ce3efa51c7fabc11b472ce3b60c8d40735ab24a1f9cb705bddb33e66260c120801010032000000330000000800000000000000020000000801010032000000340000000800000002000000020000001c01010033000000350000000800000000000100000000001002010035000000340000003600000009000000000000010000000010010101003600000037000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001d8af139158475eade81c0c39652cb8a95050201002f00000037000000380000000000000018010100380000003900000040000000c5a70000000000000400000000000000f96e0000e8a30100d69c000012530000a8b7ffffffffffffa887ffffffffffff0b8effffffffffffdbe1ffffffffffff01010100390000003a000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001ccdce9793b2be1792f1e82a338c7968628c20334b473a342672309a534314ccd8b95ed882621d9dcf4128a53c8a846ada0bb5fb2a8669ab8291f7f8269c96d11b0eeecb8164ab9b163e8dfea60f7a404a2a132a95b277905c5fb26205c238c7f1010101003a0000003b000000090100000c0000000300000003000000010000000100000001000000010000000c000000020000000000010104000000380e00001c4caeb38c1ab4db216a309fb3299c6555be4b0ff49e4956524adbe79d2ca355b6ea43a779971678ee2b15dcffb7a71b18f3e9e283d63a28c5de3c46896cf28874186a397446ff6156a727909d30615e2a138dddcbaaf8eae47b59916a7dc941597f91886a5dc53ee9ddb64812a283233d2095b77d7675efb069fe6483a83f4d5a6f1af7d3c0560fbcf16590af244f7fd68205fa2cea9d25c91ed250af2997f96667f792fefc8bf06d7847a1ad5c4f0975e9078b69fe246b519c1d84d4989eb7872a117a5d3ef2db73ade2898bfa1ca09856545e63398134a8080101003b0000003c000000080000000000000004000000080101003b0000003d000000080000000400000004000000080101003b0000003e000000080000000800000004000000190101003c0000003f00000008000000c5a7000000000000190101003d0000004000000008000000c5a70000000000001d0201003f00000040000000410000000d00000004000000010000010000000010020101004100000042000000190000000100020104000000ef8e0700cff902005243030026450600101a0101004200000043000000000000001e020100430000003e000000440000000d00000004000000010000010000000010010101004400000045000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001cbc20ee56f3b1504d5c483790ab3c1d6f2facaa2899b0c82e1ef99ad8fa6cb673050201003800000045000000460000000000000018010100460000004700000040000000c5a7000000000000040000000000000032ef0000e2d3010097ca0000e01601005a690000000000009384ffffffffffff5f77000000000000dcd8ffffffffffff010101004700000048000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001d2b8e97d8e2ef273ae104e934acf981a05cce071ce743a4e4d3a5119274ad40fe010101004800000049000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000721c00001da0850b06f5fc4cb0dd4e98e6b9402c8566d40129c7345c1df61aa238559b517d1e32b5ac45616ce8e829b4a0e4df7aa580cbc75b9ac38b87a1a8f6508fdaae4b257e781d016bd92008010100490000004a00000008000000000000000200000008010100490000004b0000000800000002000000020000001c0101004a0000004c000000080000000000010000000000100201004c0000004b0000004d00000009000000000000010000000010010101004d0000004e000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000018000001d041d287f3402a6cf25689c61644ddced05020100460000004e0000004f000000000000000b0101004f0000005000000010000000000000000000000000000600000000000101010050000000510000007900000004000000030000000300000001000000010000000100000001000000040000000200000000000101040000001c0700001cf0c40e4c3cffbdace4d4adedc4368fcfbbb61d35ba313c3567af0433355c1463539b7e106bcdcdc2e704f8b4060125f46bc0228632ea7a2e8037ba47ab97b14e7ec9d5877f8e0974010101005100000052000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001da755a6f4e8437b567dee9044a91bf82b47f48017eac52e402ebd1dc86b83dc230201010052000000530000001900000000020001000400000000000100000001000000010000000100100201004f00000053000000540000000900000000000001000000001011010100540000005500000095020000080000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000700000001afb63fffff1ebffff2a0e0000f65cffff2d9cffff603fffffe85c00001bc3ffff0a6b574c3fd98db00e17bbfe60f20d53ec4c9c42f4c81399aaea8fb0701c8efb9e3b701df4538a85ba3fadd7dcb611863c896947f4213a9d94d536081f747a7ab8f029941667a61df0f0050a559d02985f24c9c20265893818d1193d011372adc4b30673ea74dfa4a90a926638ffee730b93935daf8c2aa09bc5e712bda00db14b4184f26af26e84bcfd723c24f1722c186118c547339dd3caf6b6a7ceb7b3093810d1c6a97dbfd281ede79b346986cdd85330c1d8670487adcd190a77cd34ae72c44de972af166e37cd9f6374bf3a6754dd2fc9602e788e5e94e858192e529bb9af0f0583a1850e94d934849c58689086b1a2e3226fdae96f2dd5c2e4d8dc1d0f54016e7a3b6a0111a2987640368b2b8e633e4a1a185e6e88da5f30e2d7276c3ac11e527ca7d02294c56d90b8415112152d327e922478e8dbecb3301990abaa57ea8b83b73a0a903e39bbef829eedbe4b7ebf93d20987ec1dc816eb19661aa7ad49731a110322d04075525c944948b15c6378a894f69076d293e77c9aa66f46f84d1b26ec947838db378029a7c03166a761c111b36861006f7c605cab4c56f1bc19a95649cedd796005ba0deff0579dfad95577f26fd0db794469da065243f512f84da38bcf0a158d0d3a0f6693a25e9aaebcbd407df9ea61712604e1eb5c40eec903456126a02eefd7c3c7ffce9a3af94464b4d00dfdd5bc82b0b9a19e51076225b77fd23013d4e3fca1360d33e1eb0561145bd904dda6c66d5990f8c90e484735a3afe971c93e09f4945adeae63ea1de509d45fb92a03593ff25914b6deb50901010055000000560000000400000002000000020101005600000057000000150000000002010104040000800000000000807f0000807f00","id":"lower_jpegai/jpegai/syn_uv/10","load":"ok","profiles":["acc64"]} +{"decodes":[{"expect":{"refuse":"field_range"},"inputs":[{"data":["2147483648","-300","-57","-300","-296","-300","118","0","105","279","300","300","300","175","194","-300","-300","87","297","300","-74","300","300","-126","-300","204","300","-300","-300","300","-212","-183","-300","193","-300","-300","300","0","-214","-263","-300","0","-45","290","112","61","-298","125","300","300","-275","-165","156","-272","143","300","300","300","0","144","0","214","297","-300","-298","300","-300","-204","300","-190","-287","300","300","0","-300","-267","-300","0","-300","90","-300","-300","46","300","-300","-300","-300","0","0","300","45","-300","0","300","-290","-112","300","-188","-300","-300","0","-300","-300","189","19","239","-300","300","-300","0","0","-300","300","300","119","-300","300","-39","0","300","300","300","-127","300","-300","-228","-300","0","294","300","300","-170","-202","-300","-121","0","258","300","-216","-300","-12","-300","-138","300","-300","-300","225","-300","0","-118","300","300","0","-163","300","-300","-140","-4","-99","-300","300","-300","-300","89","76","11","0","-169","300","-96","89","0","0","-300","-63","-211","-300","-300","300","-300","122","-167","-92","0","149","-300","-300","144","0","-300","220","-6","247","-300","-266","280","-300","185","-300","-300","-122","-300","0","-300","300","282","-300","-278","-143","26","-300","-205","300","300","300","300","-34","300","-300","241","-300","0","300","-268","300","-4","-292","51","-300","116","300","144","-300","300","300","300","0","-4","-300","-300","300","81","-206","-300","0","-300","28","66","300","-300","-37","-300","138","-257","95","39","300","197","-167","300","300","300","-287","-300","300","-300","-300","7","0","300","259","76","-300","-107","0","0","300","2","-300","-34","300","-300","-300","-290","-168","300","114","-121","185","300","300","300","300","217","300","-74","-300","300","300","300","-1","-300","-271","-300","300","300","222","300","0","300","300","0","-172","-300","-37","-300","0","-300","284","300","-300","300","-300","-300","-300","300","-300","300","-183","250","-236","0","-199","300","300","-300","300","0","300","-172","-300","300","0","121","32","-300","-300","-240","-300","-40","0","300","300","-300","-270","-300","300","300","-67","-300","-300","-300","0","-300","-173","300","300","-300","-300","0","-32","0","254","-17","-285","170","242","249","0","300","300","0","-66","-300","225","-300","300","300","-209","300","-300","-39","-300","300","300","-300","300","300","274","-300","77","300","-265","-5","-300","300","-300","300","0","232","201","0","0","0","-300","-300","151","0","0","9","-300","-300","-192","0","300","-300","-229","-267","130","207","243","300","300","4","206","0","-300","-300","-300","0","300","116","0","300","300","250","-268","-281","300","196","-262","-300","-300","300","75","127","-300","-300","-300","-300","35","-270","137","224","300","108","-300","-300","300","300","196","-300","8","-300","-300","95","-50","-300","-300","15","0","300","-300","-300","300","300","238","252","300","-300","-2","0","300","-300","0","-119","0","300","-300","300","-300","0","233","-300","300","239","73","192","0","31","-300","300","-136","300","-300","300","286","0","94","300","300","-70","-218","-300","300","88","-85","4","-156","-300","-300","2","300","300","-300","300","70","-100","-84","169","-54","-300","-300","-300","-300","-274","300","-31","300","-72","-162","0","300","-88","300","0","149","300","-300","300","183","-300","127","282","-300","300","148","-300","-300","277","-300","300","246","93","-300","103","-130","291","300","-300","76","300","244","-300","83","112","300","-300","300","-300","-300","109","300","-27","-29","-300","-16","69","16","0","-300","-251","-300","300","-300","48","-300","-293","-300","187","300","-300","0","-16","-300","0","-160","297","-300","-300","141","300","-300","300","177","300","-249","-87","107","-300","300","-300","-300","-252","300","227","-300","170","174","8"],"shape":["160","2","2"]},{"data":["-109","0","-300","-151","-300","-160","300","-300","-300","-300","0","300","206","-300","237","60","300","300","186","237","300","300","300","85","0","-300","300","0","300","-300","296","-52","-300","-200","-300","300","300","-300","239","300","300","300","0","300","-300","109","137","-300","300","-241","-300","-300","260","300","300","-14","12","0","74","-300","232","-300","0","0","21","300","0","293","59","-95","300","270","266","281","0","-41","236","-9","300","300","-300","-172","186","256","-251","-300","0","-244","0","-300","222","-83","-300","-255","-45","300","0","-249","98","6","-94","200","-5","227","-300","295","-300","-300","300","-300","300","-300","300","300","9","300","-300","0","-300","300","300","-292","300","-106","300","-231","300","262","-300","-300","300","300","-300","300","300","-220","9","0","-300","-300","-137","-300","46","300","117","-164","37","-47","173","-300","300","148","-300","300","0","274","-291","-229","300","2","300","-300","-266","200","-43","-38","284","-300","139","300","-300","-263","-300","-108","121","300","102","282","300","-300","129","231","-300","131","300","0","300","-300","-300","0","0","295","-300","0","0","300","0","300","-300","300","-9","44","-300","0","-300","0","290","12","187","300","300","-300","300","300","300","-300","-300","-114","300","300","219","300","102","-87","-200","-267","-146","300","300","300","300","-96","-300","-79","-31","83","-300","268","-160","61","-131","-300","-172","300","-206","54","-300","0","300","99","-300","200","0","-300","-300","300","-165","-9","0","185","-99","221","300","300","300","-300","300","300","176","-300","-300","232","292","212","300","186","300","-298","300","-300","300","16","300","300","-300","-257","47","-221","-300","300","-300","300","-300","300","-156","-30","300","-258","0","17","256","300","0","244","5","300","300","-83","-300","86","229","212","-300","-300","-300","247","-300","53","-295","300","-300","-300","-188","-300","125","300","-294","230","-300","300","0","-300","-300","300","300","300","-213","0","-119","0","-300","-300","-300","0","300","300","-109","300","-41","300","0","-131","-300","0","300","39","235","-78","300","-31","0","0","-48","234","-300","-60","300","300","119","101","-300","-174","0","300","300","-300","0","137","300","-130","0","-300","300","-300"],"shape":["96","2","2"]}],"scalars":[]}],"graph":"57484731010100005800000056000000020001000000000000000004000000000000000010000000100000000000000000000000000000000000000000000000010000001000000010000000000000000000000000000000000000000000000057000000a00000008002000000000080ffffffffffffff7f00000000600000008002000000000080ffffffffffffff7f00000000000100008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000620000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000100000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f000000000c0000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008000000000000000000000000000000000000000020000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008000000000000000000000000000000000000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000040000008002000000000080ffffffffffffff7f00000000080000008002000000000080ffffffffffffff7f00000000020000008000000000000000000000000000000000000000020000008001000000000000000000000000ff000000000006020100000000000100000002000000000000000101010002000000030000003924000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0000001ee0160000814a0000a7c03c7a71cfc5e928e0f1f3f2f1716c3919b087c4482b9bc2bf9f60ac0d8ca6d15d96d228afd2cbf0bfd77e66e1d263ddcf76e3835b671fc353b33cf442bb884cdc92bfdcdfaffe07f99190aff452d00c86189e3f4a2b9f89804b6a27893a665a5d168f0417f81222ef0cab9784ccb5a5c93fc2ab7bfab3632ae6408e2d017b769997d06ca7a7ebdf0e0e1976c05391206f681be5b3dd7763394ff0f58ee05a76764281d93264d722cc007006be6ec37cb642f26c6ae04425ca7d5a3f4389bbd2a24431b51bfbbfc8cd226e3b0544389278213520358a3c7f14ee9836fb50e2033f690cc243449b62cee3b0fca359a6795c4281f17414ad26cfc898be98a2ae4a476380823b4234da25b1df7abedc4ce55e190cc0fc53311b5332a5cf29ed61a82ad549398b8989af490a561fe1e6059baa3a984f6f5c97993e3ddbde5b7685a5391086635cff1b4bed76538d965e94b22c5a7531c9ea727ef3bbbd5c87053dcdbe4d37a01235a0a944610375fd1b4cb3e040f1bec2b1fc537a6ff1a1fbec42ddb3a5c3eb57cd7f014711baf0961c04dacf0d1ce13e7a32a2b0dafbc424f9e2f2c76ce11c06ced8401fadc0846e7f1dba44586ab3209f97bf78d5d0fe8b2abe1d1913db0a0aa7d5852fcc6368b5238c7444565ec9bbfc38f92dbeb58392343e66a49c2ce800d7bb6555cb7b484602e503713d9e730911e4d63e8a2aaf670b85b7b394e11d2cad81a4d79ba46a825ca6d8949c68a5a73049235616511721cb5037c522a03e1040e865360ac5b56c6eb5e00313dbbbf941baae6d704641e52afa8ecdced29e9783e3744639818a0d0be456dfe44388e2dbb7e8a4a7b04d653658490bd62b78a2db5d4120ba42b8369e6d5b379cd63ef0d7c8b120f93a56b9007ca86ecce554be36b299d23db9c2d264d99f02b3961537be280afe348fe3f084a80bd472d425c127c28e1ac6547cd472ce70150d0c1bb7cefd086a9c1df2263c414f3b6fc19b4f87eccd6f511bfc56f048eb83c34f7a1b1bac914d2c3ad52c7843dc57bff5455b858fd316175cbf3344324c7eb7a3559a5464c754965df77adba336b4ad19577af495aa3271f7013c8ab00d6ad9a6e92b6ced2b2fb8a40bf3f1fc54a5d3ed77bf528f225222f1088097427078829a1a76d5cf53fc831c8eeb9eb86b9dcab911ca8ee62f9c7f52714c344f5ab6405de399a44e148f1fd9c3733d2df5eaa8019598248a7663b1f78f221da11a4c1212000a17c58f6b593a3d12f08ec61ede2e0536e846050d2e9fa6e84016d3b993d547ad2440859a807d63abc0c5a1fb5ac11fca3fa8fe668ab5ff5b00d599460cf826e816b6cc0044db784299277b307caad9a0839eb1fea8fba193e941e7e748b556043e7d5033002e7eaf1851613c91ae2ad5933d64355ba25b30a914dcab411e71b663172a580c252254f1b4d80bb8b9ae5189e03b7c2a47c54185d544a7df20d1a898b8b1acf0a119266b9f6d36b81bd9c92e4b857a95fbc9a7a4a0df42eeb53a8b7200f04875d0cfbf93dc224b6a3a2228d149636404134e600f39c74dd6643cf58b52a4f21a37d7aa80b9a6b0eb506f12a32895a150d04043669ca5236ff341e944149c9215998c0bc063fcc3e1fec19ad9cb13b791b192c45004ab3824f8a56e74e33e35d60c0c769a136d581cbcfc557044775b02cb18a8b17a282019355c782ad0ccb4299dc2d94b8b4b84422a36ed1a4f5e4538553050219926c2afa4e441040a61636c34267d2011ad4d0edd63a1e314036af07ea28e53fcb05456ee758a0b0b94d8eb1e82f67572f7120ca9da2936cd0c487e6ccaed40408e0960c60f8d2b0281ec640f3f4d2e3690dc075311dbc80a1f1bf1bb142fbb42115c0c8b49269f6ba1fdddc010f30e2b2f87a9faf800c93944c243615eb2baf987fcfdbdb51608f762c850c1cdc14ae507d702c6d69ee17ffcc412560418dc980edac2230de41c7b0a7b2a87fd81a0db5e308603c1378dbda578aba02b56197bf2c1a48b25103afa47e4ea94326cdf40425d4a3a12d7c56c455a4e855242c2b4d23da78e59d8b6def24fd6c4655621cf8fd313d92e4542f582b836cc9062bd21865be5304bcf3dcbf748c0bd64d19251daed3d7cba250ea2bbcf39d2e32e332dab049d3a90f16cf26a39310f97ad16ef6f7ece003d78d6555a5c5d11e0a5b9eb32b68449b5f10ab8e4097570105abfb4d311a0c2d1378561ba0f4c0a0b3818d2ce967baaefc24a52acefbc7823e56732d3a2bd8f4282b395e303d435406e1ab14800dbf42e8365a286a79920ef3e49540e7a222fc817ec712f2edde05f3db99b11077faefd8859911f47aa8ff5f3f720c29ccb625d87926466374c617e23645b3a253d88f3867573c8da806a382c1bec522f7edf5c804d117936c0b09378c8d7e3ab52c414a493b6b30ef024d26fed6d6c2fbe869c714ae74bba67068ea827d3e3ba50e0ba063a297ed168ac25f73d685f0d49df1e2134dbe2aa172243dc07e44f9435267974bcfc248f55555112431330cc026d4264429e81c8fbd86c53131533e92464b4e3d70cad6f037b7ecbac04f06e101b80baf6b30f40302f22f072c7eac884605267f68da3d0b8937e5dbeebdc0e6997f7cda26a0bc9b318b30f7a2edaf98afc05e613599952a2da1e2a5b7f02359022e19368f6a72317bf748063517216aea9a3df2193d97cdcf298a7d1fc401c9f88caa5277d920a707abd000930a31677d9afd0a4dfe7e8a775e3c586fd63e047ab016e1a67148c9cae58f6dae7df698a4c03d1b38c11d9db0ed37a6865f0193ea911cbf8a2dbd2f20b22e5be55cc7fd899249f088adf707c8a3f3881f0049f048375ced53e9c9b86f0b8df3eb7b8b3639d19f01bd7959b20f11dacf9d8da74be98a6a7219cb1227f59598da732f43c32c0d6b6929496c3454bd62390916ce72e40c278f44d0f3ec236adc7e76834362febd3ebae728438c998655cd774a8a0b0b6b2f37bdd7c39812da031ab4f153412a22e757335ea82cb59afacc7ae6babdd62df5b9542e72583453dd0c1447c12f31ae70ee5529a17834788b56565f46701e1baf5cb1c0e10ca6731787a35cb24ff7a55601b1d801e3bee4361bbc70cd60d5d887a030169bd4040d165225588d5f12a1d3ac904331e479799e7c973c99f4876ba32d521f2f9b9d3644b0f42eabc832f9c00b629878a522796cf5f76103e8c96e5bdcb7ed557e02a71186c339e1d596c9da20dd724677884c3c7856a4d1d75d693cd39406f02694cd98fb204cfca8ad6a257c5fcd55f49822c833631adece0ff56329317ccc0bbd9d2174e284659637f7480c29733dfb1ad14c53bf7abc00b314e3a61a043cbbc20cd5371e4e6b4e371b1b2133250c401b5d6121d2645e35cc631e1d10b06bdc89c7c614811673bf5b058dbc59a71c5af2be8b0dd56fac83a4f789c7dc01880535308b32af110dd393e8a79406b848e0dea2d1bb12c8b2b8f6e5c0d4976df9c3ce5e6fd224a70b92a28c371e674884e41169fefbcd275eaa35670a6cde7cab3ceb758357fc5083aedbcf0a3c8873c61d714cc2a2fcb3510ec00cbe5fed50a6df6ffb2610a5c8d52dbe606f13537ef84dc18e1e95f859e1294b33d35e987d4cd15d5437d83c741dbbe287c3de5f161b9add6369524ce574d310915c333ec86c64fc75a8789b69a258818b43fab06a5f919687062fe93aa8970638afb8d8ca1ef14383f1b34e8f8fe78654aaa63f84f60afe1fb8f1ba30130029daeba6bb5f4a3b577212b8935e65c641eb1a90cca1982aad4610ae914c7fa0d895738a645685203a16a9234cab40afc2c16ff7534dfd58d4caa706965efea4fe3009f00049528d91e7cffa3736ac2711f8b5fecb079fc188c5c0bd5a2716b9723696c1a5fe949d4dce6f4f8c1e75181795d76fd3ec9b40092fc5f0d2eccbed5ae7889d478af41249cb7c8b293c8e0a35dcd75627b8697d0b92f65a63202e6d86e34b7fe40df91255bb83816b93b4a25fad27118c7c1b494d0a271848cf7d5ace316fb98a922a57a009abfa8cb8f90c7a4b582bb022971ee321a8a44d7651f763261a8ecea8624ca81039dd117f8789bf5d7783b9cc778752e89d06d3d35cd3f77fba2a1e29a1793c2803e238b783f2ce945d6015d018ad697f9850f065d45d860ca7cbb25fe962b5995f4165ea62b9c1bff74b49665094fe817b854a5f158dd2c2ca0fc4027a6081240e0afa8dd619249692a7d0783e11372566537cc15c7a67621a42b515d45e3c89449730901eb36c29f92c11d4dd2caa0b7eba55f3206b4ae4ee8473b12a2cdcf3afae52904d24aa0c5dc2ca086315eb2ec73335824ca47c1d06a2c12a6ee11df1d000e1ab86152eb32296a42de7aabb8bc1a17e3f4d446572d1aee48fdda47aa91d808d0e6d44157644f62d51ed0751381febfa5bbbdfb91f986506c044a0ce02115a7b81c7c2df761b4533486d3b664f8a685c40672ea11726ea8fc5acf2bfe3d83ce922036110423a6785d9e59f9bd5b7e99b7ee9d97e3f189696e4b3b41c6adf1f149fd5e830cba06741a85f3c102b487077befb6d8588416917a426ce0c1a7c4800814a374157bd3e2fb109936b7ba70514235cd0de638a3977d9a3bb2735877ec6ac6f1a4874def41e0403984028f3ea1b8143f84733c98481610a51035380ccf698231c676c761a3bfb49d79e8c979c964400d1dcab7b3cefe2ace8763d5dc7c00f5efb78b37c7e824b3721c44f5d2b4d79af13bc5aa41491eb6b51c8aa76be38edf2bbb20ec03928bbd7d1d1f0ac2c96764f5e4ec402877b1fb30d91c2dee788c8f57321921952263c0440c2e65e516dc316f054da14ed54d08c02ffc50887a5c2a46edfd8a1a0019ada120a698e99b5593278ba3732fb5de5d53d9dc5c5b1b05b1b8efecefb81f59b0e417a353cf539cc4e1f71f9f9fa21ca8692ecf2d2c2b8966b1da2890f3d2817d8d6001c86ec19a5ac3c4999b6c7cc4110a8613b4c5c26b87996873d6a85b5d31c75e10b7536a95d32d350bc9c8183ec6613f86aad5fc5a24985c5d0246533d7e53bbbf260307c139c48deebb6798c0364d5fd1d6d49938c69eabcf0f1206b4668fe29c4ef074f17aa272003c84ec240fec19d3fb5202792528ee93378df072bb24f17525bda6748746e7e2162331a2125d38f7d9ba2d58edb39ba19cd3e05ec985d522a54b4ea549c35c9f60ea516cbce1a5375956a5a935071428e4137f561bb78e0d385be774744eb3b2390c147dcef635d0cd29c6ec05fde6f72ac90ea6acc1201826cb868f038797f1133d50367f1b590a467e0368c8bd91cbbc6534547af519602f413b293f60b547bdeb23c64965bf0d7ab58f53d7e58f4afb0bd0d2d60bc450182605aeac8676221ff68b03c0a323eb64eea62573634f70cd7d37ef36753ddfc110a51e37e80a81f4b2ac003a3577a04372205db79f5b97ae990875f8003c8fdeaab96fda929f737c061fb5b21571ecbb7b1e594749120ff0c6bb8607c5113d8f1dcb433a9db5e56248c8eb0ad64c42f7fe7febcf740f8e85c7a5c195eeab515d8657713078a09e72381bf8f4527f44a8399394c27be990c5d3f94a15f6dc62f3048eeb786ec8aa923d994d4394c995f7969e3f87f3fa4ecffb80a78dbb93c39d4572fc04d1bf193ff6ea7e2f067088c80033deddedf357551f4af378048d452f5b0472f87f35345ba2056ce76074ea2c16bf6343c40faf7a2d524b66d924bd9e5b7703d46d5889a3f56bb6bab9fe0af7ad4298a055fd400bcd308d8f8db6ad296ac8c327843d57ab6fa0327fe99fe40cb37cb2898eea859631d995ff90e158f382aecb317490f26b38fda64594992328f743e85a1dc4a12a6afcd9fba7cd08111ff5a8f5ed61bed0bb6dfa72349b6aeea3345a243b4f8c12e78ca68ace43de94da840ed63fcbca133bda90b9bb736a6e2530771dd574ae71456764b7e7c97c4f05eb61c92995047d445b0b3bb0c5835598286023c353c9d80ef3987caaa4afe7a55c4c4d0d4c4d9adb9985c3a124a582b1db836546dc3dd7f973f833f469101323004ffa8cc67c5120a4c586dd411beb3ce0a6765abe2e8b83c6b5a4c1f51c2d6b24d6b521cb0f6b7e08f4518247df91e90de021d505089b4517a2fd60504498804db6f17e24b8788fc489142adab60d03790835729be8684575235d5b443dbf32e123a7044eb9b31037a047bb0d82e7f19177198c8bcf317d6e859cbcc76464767954a1d4342ff4a6560305b1d5fe4ae16ab7a90cd435b77b047ea75942f8104b55af8066bc22e49afd3163d2399e91014c3c1e0cf9554ca6af2d97e0e7955d12e07f80ba144127447452a9258eb9b83a2ad4ffc14b748027175b869bb1494e7f8e0508553128949fc67b0b6b6de979eccb839fc01d2f1b88e177af67bea967579b5038c3225a12fa377ffa6d0abac3eb1434bb2a3d5d04ba45ad7c364deab6026e836f08dcde428d8dc24a6e459592b561cab876dd24087b825008c236e8baf3876ae4a8adef951e47cf9e841c0666aec00f056d0f773faa3bd7d2fac860fbca432808fc2891e100fa03ca6703063d0d06ff3838e4b25c09049d98f800fa86316cfb18ebfdd92d30f80538fde7717d4aa66283e28d9214f48a44a80bfa146525e77a8b747789f2cab5e4df2ae019b798186af607be23c5b644a9c68130eb33f08dc1065eb4142fe5becff27c2043a3be04403f4adbf9f85cd9f1330a703b997a6ba87a58911ff81fcba5fee0561b16c19bf1d68728a097f6bee335318fc0dd7fc31a21c9067e5b90539beaa1641b3fbe2825bf52d8a97417cc0fbdc578b8109740163c46007faa15da35e57d673fa816a7db86939cc1b7c0e8ec775c2a264699a74ea5a9762f80b69d8a9a2458bc9e4710e9ee0f49f0568a15f335ae8c14001583a833d258cf0a9c3de7290b2143db70f3194b6ccb962828f30bb65403cec4f916d70233557c02ffd2247f7ccdd7a4ff54880daacb72d66ff5be50af1978865b8e6bc9f3c8d3ce75bfcec631d68c81670809059cafc5996cbcdf469863312f5ba4d7dc6e7e53a33f398201c96d61c903dabd21155db43ca8f6b12dd76d8b5d1a24fcd7382135fdb702fb16e89b9c08777d7dcb21cd2d031c3290d97f557011f4d94570e0d3cbcdc427270f4f95c29d28711c396fa6c2ac5c7b1257b67966bfd8afdce7e6fd9b3e176be3145cec65f3da8defe266dfb502eac0f1878c6eab8a2bd6c0d99b9c5fb1a32cc260ca8f1b557c75a9ce273fb3597e27df0421b5135b6532b497f4cb055c898096f426bb8c0ea467426d6ef363a22b8c43efd62886ffa0eef959c824f19df3362de5025d452b2f6f31cc70c05c72d306847747e9141154680be7bcb9f38ebbb270c965ff0c0641d8ec86eb5e7083b13834cb7fafe1ae643a221b9f0be3acb640c99713c4ce64d138602af17650bb48e41528babc21c9ce16b8de0a44a0d18a8b6638a30c16466cd1410e8868601695e5f0cb8f07b486a6a0f3f4b0729e2d519157fd00ad7f6fb15053a7fb94c8358475fd6d0445aff3d9abba2b3d35ce64a30f2435fd21a882b8122e45cd84b93ad825f2c8c7ed86cd6aa3c2e9cefff382da2f9c4cea9ba5a9135b566e204e15396fbed52e78424d190f403f5fc6ba48ca8cd3af262887c690141d86c4401d37497d7698d0dd0646ee12fdb8f0c0839bd8015b12651b1a482b38b5e860892afa973328dfca568045ce164e53fdfb1d232255022a4a356d49bc5e13d1e223fbb8300d3c4ec8293b225b7e36868ad0990ae73f1213fe5f0594965e8cc94aefedf91c9e1ec7156413fdab6cf91fd16c9e6ac4c5e5c4f787668a4308fceb30d5a30d770166491bde9a8ef79404ddd2cc7674a73b1461568dfe2ee2ca1072000942a3b0ce0cf1af0e779c4955fd4c7fbeebf3899eb92d1503b33b035172bfd18c27c2b7bff153bd71ab4d966564bae8cd2519385a3bf1a2ab5bf9662a2d88932f791298cf4511dcd79adfe1526b6970e3448d588073a6de0e92417b9d94a8d50241af033605ba1a34c7e9ae6af6f182137f3f337354525473f0b2881bbcf354b36b80b24eb3644729a222d3df27f9d3b68b3f1408abee95b63028f631ba9b6d89645481fb292009374bac5ca5ca0bb4c378913759f7894bf6354c056bc0927d9f9d5733a80fb56cd385f5d56f715c8b90592dfa934c4f2919382a45c56ea86ad2fa2fba51ea646abe9c7510f72e500a0745a23ed89a89471a38ce9b40ab4306da945dfddd5e0e2e4e4546d56b2b072ddbbb29fa86e62cae73d7de7fdf5be7f562b3dcfcfde9773e7288c52303c84173cc388de764ae06863bb3ac591d846de3d51ae50ca838365dad43d25785f7a99b63254a0e2cabd789edb07fd5b217a1de2a98f60d8cf665e130b9a0aa7a4df164ac24abeea0d6e77fb165dfaf2c327d2edb6115a8a70dfc7d1c9634288cf1285a7151a2adc553771901a51b1edc78d80c97356ea67bcc20d8a0eb8ac9c8477290619a24a175989ce27f5a47ce0c4035f3d0744f9a2e22b0425cc4fc9cb5b90924538dbc2e1ca2e3cdd92216bb92a6afb40166474f7c31a6de5a00ac65cab2d3c3ac0fa917306a6343087f3b731b338082c70f994bd0adf6c458ff3fceb1b32bd74dbed86ed2801700d930a5f83d7a6a80c6c84052d56349187ef3a34bdf9c593e3665d4027ed2a08692bdd95e9e30ddf65d79fe201b3556dfd402a6615d362cf04176474d9e7bf8dbf891aa57040b329c3176d9647be86d26ff3ae7291a612b26bdc0ce60965acb8b767fe502c65345240bb0b95bd5808bb57999b98181538f6ada431e948ca98f9b0c9b512fa190e11e94d8d11204fbc6b791829885d1c3573f56a9c407f2007ef2db13c5b1dba2be18032f622d4e85a68935b3b835c82e29d51eec2af4db0a7864abe911858b08fd75837388fbe9a898a5d3b57ea4d22d92f95fad46d9e999cf4176f446109c7c124241b63bb31de1def3d581ddbe1d7ad0ba531d5b1f54a2f74d6f47b408b9ec87d397950025d37100b4f05ef913059ab0a658e488f5904a1262c0d1d7fe43e4cb2d3801b04935ce1db176a4e0076ef366b0c2c73d874522fce9d13b0fae2e6245354dadd8e7ded9dc34241f783c195af49c69bedc044cd3b9ee1aa218ea316c4279bccce2892612eabe1a3000e42610f0f8c1f8b05034bc776f7a170249b2873026916228131d0029b37fe6dbf3ad8bbbe23d1d84f660f0a008eb18c1463fcb7339ddfad56ff180acd12c49880c818a7910f0fd90a7d686b031b80b54116e22cca005df23b0c18fdfb65060b60d1b90e9be155dd4ca987248fd8a3477b679357eb7d1618bc07f3a80cd3af8fef52f75e9e9be98f1a6811b5437f4090057c7eab37be64a60c3ffbd2685068c0ae5aa65bc490f0902e732cff7cb6e004ba290219eefc0b37d3732a95bd07555a2160e3815b07b14e09ed9c42c0a06b4b27b8167676a84974f9cc9193738397116ff251032603dd229780fe3f87b497e26db384e125935ec69d2a84155cd636c188196327b00841fd49c02c2730532eef4e0d8093f663af47fa05bc315f769dbd2c47ed10a26129783947e4b8f7613fa97f21927702ca7249433e0138931449c0fa201277a3d7401921b0f76402284a52edd16181fdf6d4ee7945f72930cfaac44f5a1ce1412089b47fc3f0155abeba2a5faa97878fa47795b914a9deaac757d73c96ee4a80d8ca1ae1edfbf841c5c02536bf0a9ff3f17f379394972b7421dd400ee055f26d21846cb4a099eace5eaf1dfc7a9cb8c9da02fd1da9e8539cf2623b008aec07c3062b668d9d50c517d188d2e69349436be547923bd1f5dbe56e15728a640f08e3434374f2471fac5095d07a6d7cdb7a3e07d05e212ae4873c54dc8a7b55b8b03e3c1329224369aa5d02ee9afef0179fad7e6fc90d7c3b5b1f995d88cc6883e87ddb1efb0cbf558110acd43a2cdd968bae45cb648400ed71da579d94be781f5fcea84cbc7a170cc3df28f0f2a9fcbb71fcf952597af63a6099a88b3c90b7f6a0e84686c779382db6fa760ec224b6a8724a055548f17e432c2a0bc787b3ca21b4dcd5b1078ebf0fc090451127e97d56cce456dbd1697c5d8913bda971e07f1a85ae61f815956dd17c93245d6012cc57575471cfbdb3d95a9fcef49c8a9efa42aaac486f04a99801033bb4762035018901461c973d56549c531c0e994112a4f2bae1a0f15b6c38c9506dda1a54d02625019a538d21e61190395afa3619b12586e0ecfd7011869e9757d8d41e4b3468d259504ddcfe228f075ca4dd2b5d55d3eaed6d9199d50488b06d8f96a7af7128b3eaea38a5b11414f05e1fa5030b3afd455026aebf2f2c48b1cf14b023624cc15550ef04d919b04691bed49dc596747987e2441f36f1b4126199950f795be49d74f3940f2e5eba8f3013819aa98c152483e74dbc43867dbe6b4cb7e767e6401b6fed1dd499bde8f6223dc7346412640775656dc81e12d60b0ef1fa3f8d7577606a9880f04e87d169d5632340e96a61db6ae6ba3b47f542f2b6d59da233b7769fc694d98d3017e6153cfea04b3947a27c1490eb2ea005d8695d3fe9d0c8f6e623b06f8555eb3cc0138a9b19949e84c7c0d07e6c7001df1197681bb0ce537c5978bbc8246a34f6f2cc9fdce9658dedfbe87a01acb9d47f9a8ef04804d1ecf951df6aa471df484c12c7a28b6fa861ef183dabd819e3c7ed8e62ee1805709a4398ac83cb441bc59108fab675a5848079b9ca1bec5226f284a6b6bd4cf5cffb4863e3f04a65e5e0dd9791b4773ccec0916f05c13d2a7802d26dcb6b5bc98a8d2cea87dd6ae33c3d3fddad9b1f116898c59875f084bca199d440eba995966598b966ee881dc3a8fa429635c3c154f7387c08b5fbfb69df04f042bdf10b080ba467797eae6e7d4aa6b12a12ece9633e8f64c710d17484fe7170486e53f5f184a59b27322bf8337734d471a010e10ee4847d2f0c308d663d8b0acebb7d313b60510f3d95a4613f923123eeb5522d82334200009533e40b5da6c37cd020f183d3f249901ad180c0916fe45b8954ed1526d2f15cc76983ce094696d5cf04b974359becb764cf589e66f2e1f435dff26593ce11a25af0b4adf5890f0cd007041287654f20162be73b772ef3cda54f19952621589bbdc035908446b17606a5728fbdbf73ac39a3060fab5126a3e71c1aa04893cc2eb9bc76d2776d47ce8f5064d3d1a75e7ba4e8c94ca5dc66c0f4a86f6e6db6006615ed0462c95357456945484804fa0f3a4c60e81c7f11f0b3af04b676165bf7bb3da767b5d27ffceb1c054043108208a8af7d2ba0605147a8ae0e264747b7e2444850233dcfe5264e5d569f90c958bcbcc6525b99067a1af411b738e40befe5ab60860fe1296fc9081325c211b5c6e3010b3058ccae2bcd7b20eef31e2f3d9ae3dd4f407e5a871f7c9a9813d2ce6c81ab222edf9431010d5eba3b4686dbb68e7742632538872c86e235af4a1a9430f371558ad6d392507693f23af0e632980767ab6131927267a2ff4b0154d6e12ba52549e41ea91a729b2111fdffefd72d26a54d0a863603ef38e1964cc122e652727c7c908459613dacdb9249ed4b107bac25d1c4394901936d2a13c5d6463be679f00be88dc0a1419aa3aef803443939beecdcc41d8b59cc750e4e44ac22479a9a2bc0b7e47af9f3fa5edf08c088ee933e58aeb994705c4927756d49bb442d0d84ace413257af27658fad1e884e6061fe2d867a72cd2dedc4074f372994c8f339f7d66ee65709eb1927c31c689f578f9df001edf43a0731f4aef1c5bfc16c04e6d64f7c1cf4b739c704af52006d7506b1e1e2c3ebd7d97c18511658ebcfff9195edf5a51d6d2c60a4661faad5a4567b7780eaf312bd771500b232467a3529ba26e3244c1f48ffff4d24fe029f8ef6618fcce6b5362649c694a38be735d699e22a12e05a971cfd727412592c69e4e332c1f733eb52cfd71fd84751790bb0140901f6ca11340ecf4bad280ccbcb5fc3018da129b4a2e903b88169ee0525d533b6d0eed8f57b7b135dfb5c7ec4b2ab475495d4f68e07a2c1522ab31e943c93037f58aa4df6707dc148f54cbeb491c7e670d99501a55ff759c806218b332a14c8b5e60a9d7f0ce99d3632c9d0ab3c4139a636dcd6ddde65ab1803cd5588386d8b5fdc3195fb27966f3200c8485d108578d324e63bd444d223e83d4004d7ffccf30b5dbd026594584bfc490e5dfae1fd944a6a4b8ac3f389b1a97291e0200672eaa5589f01332bbfedba2b3f71a4e3a9547e1a503de2d3ea46b86c989280d73c975e55ae0afb51b1dd3fa47ac069fea90b8b74138e7ce3fa47d32c9cdc499144dcce0ebf89ef3b387da52caa590efe713a854758328d573965ad6a48e8e5f450af5c5732619ca8ad6d5b9c808eb9c310557749dcf67e8ac1f4e71a84e217483a656edcd06359a353649e80c0b45e82fb105c1e2d13c0c202e2c35c292507c5920328e1f01854fb5949d7014a5161d047f83d5139ff1ee9b92649c25ed3f04c403f4a493e8f566879f7fd23a997a61d48d405f170c2e0080e09f7117a36d60ade96da5e039eacfa3f30111f44348ff6bd92eee1888ef3293e0acb96d71c60e31815795d9e26866b0ff3abb0d4be29dd878e59aa93e67f76a1f385c54e4b44cc4127bf0ab1d75a230e9e235e8eb7bd2794cef2c83ce6daf7563beebff616690736456de8ca37e46139279f2262edc1a6db335d4e7513f4aaff9c4bfbcf26af2d716c51fc455210709ac5318ec9c9792eba40cc0d31dee65a77b71d58781352d29daaf0429339506465d0017f09c0a56f4e9de7de86c34ba897988381d28d7b9f80ead830dc2a534d5cdcb3dd5ede1dc8e35d1d9253634ddb990b12b7013a1d32cc1a72648f904ed5511327265ab181fcb0c700bfe69db1cfccdeeaedfa7e7535e457d98f0f64b44892ebe6328c224b1c03962115fceb8954b779a85af0970bf133f35cdbbda1a6a29acc7051cdbc4ff22d9cd3e702bf80b5aa0602010003000000010000000400000000000000110101000400000005000000d51b00000400000003000000030000000200000002000000010000000100000001000000010000000200000000020101040400004a0000001e0cb20000c402ffff1d47ffffabce0000ab9d0a70386df120daadd0141b448722406deb28dbea8fb53a85b78c09aa959c39333fc95a39b360ea6416411f4de7c4ca7d3636bc9b7d15542e56cb22be24905d7f484dacdb89e57629d41cea6254b450f59b795c55e4259fde3218406dac32bec56b1c128cf41f53d5c592c13c993e1cdd3e493cac9833d5b907cce201983caa4cc8d2ef572352058d2906adc67a34d0df2a7c12698700c70d47ee4d1913a6129f58fdc176d6eb6a9a895d8aea2a5f4a540b94ffc171fc708bbfa6ae80dbd9c24da2b453a6dd9ea696891c98613de41c4d2fa09b8ced76c43639f331cf4633051951312f65109ee00c61f9804b4238a7dca513062b4965691db2f7087e4a57c7659656b5227b341e6586ff7e94db162272f7ef6acc97bb7af42fd4ee5a17f96fbb73c0746885a6c0ed58a0636703e9d8948defa4c2d7fd5cc3ec19c992e5689829642c8c44ef96db2bd7e3137e1b004d715e39196d2e76b9b8806ff98ad238bc4f990b565d49772e9dfabf186def6cdea7653ec837dfce7b716ab07913d5142774c10d9bd029f7111b2ed2252bc8994ba625818fb8be28b2d878fae978f13c7babd208dd3dc528c1b6c8711438ddab9957f396f57c66adb2ef44095e9e504bf8f7dc8f336e20ee8edf193f9dd5c0023db6f89efbdd4d90797a6f5f745405b1984b7958e835ce80bdfe95a0a3986d2f2a4ae077557d4859d8790af655f18de7a55bc056c28b2acfcb10859108474d4251e281f5961925b505ba1ba61e72320104184b35db694fe67b8150bfa39ce8f809534ca92f51eab5036403b502903ef0399b9439035cac3fdc06ca780a6e70aa2ce1fba46335e79e4bf23690560914b4bd7fb6038f62084871e76152f65ad86852ee9ebf476e2c2d6ef2da3645de3087028d4066b25df783312681a57f06b24c3df8a5950d75895d00b9cdd35dd5d4ba4932c149678194e55a5cdd51b7b9619a5beb1812dab823065a0f0be7554162fab4f3645ebd7917c3604b04abf88b09f61e6e72fb908882ae494869d0fff3524aec996bed6d98510d77922f674897683676e79bfd2e93a71a4298d867b38acf2bad7756dd780dd387baeaf923a9977095f4341b8ae0d389b05ee6dca6ab74d99cb42646288b9dd2f07719d60b2cf23b69b9ed6ce595621024a8cb4d148fc0991da8d6976ef6353d6143ffadfc605be9768f3708377c8c0b9508d21ec1c6c77de3e69ced0fafdbadd9229bc3a6c30499404e23eadabc33a8c504088a97d2177e864f33757474d3c9e2055728c3f1dfef6e9ee0d0e8fd0c0e9bdc50d2c2d6e97e673cef20e9f68034bb7b8fc2f3e6cd5b3a47214988ea1ecc0e85840ed558771e064087b3495c4ad6969691752ea3045490fda8a3a698923b74a779918954be7a56ef66ebb4365a8def5d3486a0f7c1047d50c9c35786bea04087538d97eb3300965a06affebb11fa5847ef2ec2fbf7763d841f3f121677a77774e560f72b326292493b2313a38e35d4c8d664489613f355a6dc5ffa1399fe1d46b3866ad605b6ad30dc72b40ae8d34c6250a28f29463ebbc9be7e615a325a05cbccac4261223377bf5a148d528d098ca7fb4953a1d9e28df069430578782c01a689853c96873fe8174d806e71ec8db84c00bcb8b45a75d70cea3c76970eef7bde7904876cbdd462620723f7be4e7c3f936d0d4d73c08cec96bced188442f4ff811c02f098f7df6ce53ca92a3490d58270e5c0aa4cfc0a87238e6379f87ad71122da5f8a7795a244f4b94a9b19d759852f7cf3a5177b0637a2824db1cc02517395492061d23dd831ee395844fac10968dd2400d6340c41871a28f6e402763245efa7ecf447f7ca3dda74d677acd7f0ad87f9b8047bd290ec5b33beb2dae680b7c9ac86315a7082e62a83c8b5bee9ae9376b2597ccded0fae4afa035a17e75df016cc8ef730940cb6e7c549c08bf98c2408dbd61ed99bbe64b0ad6a1b164ca5862843dcc5de24a10439cad02d1bf90e4bbf5acc7ba67ff168c4e618d3dbc4c8580086d60ef3b8155b9b441c740b278c640997cedf46ee0b4f6d374104a9df6b8070f03c27f2d1cb69d732269c2478d4092ce9af6b19ab45925542b3e836a569025de587a31aa494d1dcb4b626fd41813e338f128df9780fb760013ce103f32d58b5824fdc958bb3c6f477e78d255bd1c5e81c6687c39c7618a6ae4fad8cd831377e76e01c1bbaa77aa1db55d5eec16573e45224217b3ee0135a08a89955c8cdc8227b52e1aae42e9d8ebe28587cd8476538e096200872dcee2f23bec544094cc424a3fbe7543074a4bdf3bc08cdd2809a9c23a7bb52e758887b98c2808f0ec4635f34c39a4a8c6ed53f921ed4ad974c0559cea0ec4e1e008294d67ba1e6086ad0fcf1d61fbe660051698cfb18211aaa0e9d123c4f517624ebc48c9134c665f8651782417af1e533882916bf895ce97d63238a951d4a7cb590eccb5fa56a1e2afb1df5d29ae7fa7dc25a79214b9cacaca892c3b5e3b7b5daf7e94ce0e8314f7979a9c07b1eb872d494430edf83b972dd4609477926f0b7add1c7daf8e383798cc034ce443bedf8430e90b7695ce5ce719c5814d7b0063da835a5ab7fcbc701eb1e9d307fee16ee83fb8a6ad208367b44fde7d31738b37c1cabf2e7115ad915b02bbf32fee4a8de3f7d92ca54c079df83694deac9a322ded79a3d2284af6420e0616fafc0859d810392020bedfa350a61e2523f1390ef8494250e201cacf3f8c185ee5b7ee37abcb3dbbb5bc6fc515b2a45c35fc95a19a6ec10b9a1f2454cae990e11b84722958910cc6398e6efdc01f61943f26ca125f9ccfdcdc8f3f7979a0c596ef165fcca527aea0a75dd4eaa1f897b885bf8d4e6d8a98f49c5f03552d3b2cd7daf4ed0e143092ea6d6ed2ec0644ae88f6ed8d18180057c8a0caca815b6ea08b0419175bf77e4ffe1215fcc6784740036c53dd995c13a7c49f4841924b58c66b0ce951d379d78b5b24fc646b6599c6e5c216fac57d358eb56e3cc61e8bd3b96b74c780aa44591a8965e62725e948f667ab786655dbd67117d59d9ae86109e77cc99f9dff66098030f1d865e8455c53c0dd8281e50061cb01f96221ff0aa6864d7c27ac14ef493c1e9cdb2a140d729e14d021d8fda99fd2b86e7475cb2e530462c234fd370fbfe06de291395a18dfadf503942369445398b45f562dbbf99000fe57bb69bdfb6a154ce4c807574e6990667344979fefa693e9259908999be5ed4a358c940cf53a53179e039badb98ab0cd643382cceda278c9e475cb034b64ab4fb12594c32e4d5ccdd1e4eee32f71962cce3f6ae2517f9311487ad8549b60b0c8b22bb0b3f489b85e9d9c6899f1f6dc86c59e2810d92c11da56dfa431b63c8994880ec189eb93fb5d921c55c756613f02fd970c4785d858e0aaf125ff30e6cbd69826e2bdf434522c565e63bcc3921a746c4e460e00e3a38c4f1b3812e4e7881888a8fccab2896e0ea89ad3820e408db39f0f4a7f75ffdf745410a8b81e87e0f2ddda7be73f10b7adc5e8dc6c8089ceb169ad2f81d3d1c570c2278d987363130bfa881e358f06a1ede9a94001a4355f1d3ac391122ea027401730abf05e1ef2bd5685846606c25fccb5e0b9d5a09b98cec16cc137a3a0d1d0ef92c010c932fd614a022a7804ead045af72c98e923d9d8383ff5d28ae466847530b7b91e9eb1965a49ebd38a797d0455ff500f3b34a30342c8cf16b65140bc74ad55565de93402513b0bf2039f17ab162c37eba093ccc3a5ff73d0e055270f2bca906148713b24dedc8adf594db7caf994e7c93701f2c001f14d7747729c89223abc0f33f26fe1534769a243a7c5e9b4b7eb13e209fbdec331863a79289a87bbe0117f2304334c892676acf6613527c33bb28ed184db12cd80b2937e7711d957168c12e8272879ef68c883a6d31c5e6d92eb1220fbbc9ad974620a4057f0ccf1d46d1cb3ecc83efecb1140741610dd614ef910301f7de4af696315725028925efaa6889028d5c516c0219fe0a5f97dcec31ed51ab46731b1809ba95a81576625e364246a635cd20ec47a252ef3b26894b123b623595e89a0015d1e2241521b76ebe21a10e57d272b802709a8776f9457a9696c35f244c711e3f859a4cf6d39ab9235195ee1479a6ffd9eba9a5c9f105d73e15870c0221676e59556a3830a70ea3e6d745b18552f08cec68ca8af02f501e8fdc9cada72a48dc96234f6254b08fe02980dc73116d93dbc3cbc99662bf4116186da99b9f03f727357a8a687233c8569756bd7eeb7cd6275e4a4dcb20d01d91b1751cad28824981a7cd13b58cecd5f98f91dcf6ee7cf66afa211d076a0d7a8fdfee9e09435fe59c745095fa415e79bc55b8831872db78284fd870b76c36cccd1c269128d5f1c38bbd641e2ed249caf46951487503f6fb9790d2fce14ac6049a2f76e3d79c1629a249ec2a8f617ae8b5f1206f93889c9af719457a60399d146a1ce65fb1879f6bfbee1e395263f6728984521fcf00e1f459ac2924e970d9ec186074f19c74ddb3f0d4034b5ac2644df38cf986d39e171eb04c49214ab7d840a1b1053393a0502f7c801100030ec3ed449ffd513df1ddfcbf9c0105c2261997eafe0c10dba6472b558c848e8f016687461a4dd18221a15d9d2a7fd51ff6c5935f3a9765646737f137c59aea085b36d5ff5ac6e8ec9a3ebb71f11f882bc7a66b17d6947a653276229f7966c38952b38d32706bbc036e9637eccb3a5a4a1000e06fb2aba148ca3bc05137bc3c414a6f9dad1f9cd0a44d992dcac6edd414063b511cebd5b977df4cb63b0c8732f7dfd12a63aedd33d9c215cb15265d4d848116274f2aff5fcc85b3daf54042d328983f15cae930156629fdeb1bdb53582e42c14398dacc464276c544253e7e34dd690d9eeddb8c396d4a03a4495e97fc9fb5ff90f08660ed8a6abd7a895314527dfc3016b8d8fc51c50bd72f9f5d356fd89b46b1ce552c495cbebbf540de7b837520e0c4eb5b1f154bb4fd1652b573d0b2d0760311e20269df7f454ef05155db860866302d78c746b1507faea97108ac27166c139deca9a63edb7bc6d108f0f5d1b400f06f411b9e9171acc63d6ba257aef52563ea5ed6d1dc4bd114755a97d99fd9c91c9ea609b16f1803be264d35cb9f812c3f408c3e116c74e8ea1fbb540e7eae6fda3f2d728b00be3a5c7effeb2bf9d18568fa8ee97932ef4830503805d99412b0a027cf9446081b874e1b0cec290177b284d4e41162e62b62b36e4639dda047e783bee0299276d10ef75e0a2c4b67076378337c7a049cb67c4a17060601d0290d05b277e69a067a8f94c941a316f5241b9608a39b2989f6a40c67fa8502fd814bdff354cb9d2a1b5b71179dfe71e53b8c585b84eddd06e8b6f74fa4f07009ca3fb8f2ec77ca9c1010a485a1f4eec7304b4596e780767faff34f6d2f3881a620317e1a397e765510f1633a20012377e20e72676374ed822133f9d478cc6c7d4b7543b0afc68204f67a84f11d6459b3abe7dd5b4671cd54cbc86f95979b23cc3c838918d5972aa6ce1ee086aed3155277358f52ac53b85845366e7dbbbea2c3fded48735a8fa3867bea8fe58ee2eff4ba76ac97755713630cbccdb018b373389bf3697baa3200f87cab7e3f85edbaa2b25df359d0a885ff01c6a3cbcb056cf00008e1c330e3cc9513cda309825edbc326c2781898d372174792cb3c8b0aba9e41cb09e57009d5233e333ecb8a3c304876df5f8df8b040ada1ed0dec6057fea78e66caf81c4d9f7367b8c8c807cd0172b29399447ac233c0a542403a822693c5bb06c0778ca6536a042d0fda948c7c23e8cf51d80ce899399e3ef911597cbf585b7077b618b86c45df9b232ae662e9873a514744bcf3c06b5d1b864501fe725a682669487664c2611c78b4b3117249c3aee9d1807b40b4bc350b9dca246e271c72a4cd6bb3cb92dcfbd8131e673a38931dee764950e0dfb882c14a4c4282ff7be717842e14fa16e80fee8b965c76d683d4e21f5a2a216fe7180c2318559df79de1bcb8eaeb24ee1940260660780be55b9579fe1daa3cc331411b684a3e19cbd1c2709d0b06b7a278d9f08ebd5b8c16d96a5b978a601b2aaf69236d82eb47e9104ea7d2f86c815d8f82a4ff7d9426faf3fcaa0ea5b4aea49813aebec7322c4032c9d0a4c2007e3ae4070c092a312fe07d7e97c4e5bafae2c4c8830384461227e3bf432d19c3a480fff9ece54e3b7ba06b9c183ab4ffb5c5fef2421e6a23c3e9dcaf9b39eddc4c6ee7a5ab85022acdb1c9e9d7b5903e8a597616cd2868fbef1a55d7e4899bab5dfc4ad1836ba328394d0c8abbd228cc8825ec3881c8139835c7382f1e76c40803a4b1159d8bffd722038999665c54a52fd41601236b9512ebd636316d70dc61aa67207e38974226654d1ec60e860197d0c848b9e8556c3324142934aceb18ac2251307582805796cc57bf52b9c179c3ce850a387bb29880ce243885790abf03865aada62fc042680f26fc88d6800ee691ec3c167f0632b934fd4e480f30a1c6f67b57dbcee75d0385b4670ad1bfd4d6d386ac976ff0690281956fb0832ace679f126719fb2048d77de134fdccc1e7aa781b55ec5cbe9d436e250e8957d97b66eb8afc70336974fdee69086be41aa1f1523bcacf09f20e7a551b766acff04e2bf4b005ee30c681666d8495abe61843c6ca76469567cee040b0126a531f5e3d843f13deb78c76dab3bf78a5e0664d5e66166b0b28a5057d14d5c821d8f38a1d2075b564f51ca1eca79053a6a0bb74ff6d3e7c7327956f78e61d8ba54d3e38c81ec281a0ca60d66c5972b5b8bf4b559ca751607b0785167d29e721794c1be1127f37d43c1e44ec02d18729bd80adf979d068138e2acf5c8258284ea46b9b9b18738d72ef4a03ec356768197b118e83c9b2620b7f78ef60dea4fcde921d3268cc7d987eca2c72e112ec1c75df63efbb1c80dfd8be17f562989aaac21336cf35db2a5f3bc6bf4efe685a487b60d82568769b43b3b2ada4811349a8ffa74c3060b51689277a5885b389ce041be4596df170e08a3292e7d6c561ce7a1052df6be0609025d2cdf5cde87f4d30cd83b0ff7196a9be210329ab5b1eff8bdca3264ccee5582b003ddd561c03791725a9c4dcdec3214319ba08347fd828fdc646df9bee5d5b62a43342d4d04de9bb0022d799a39003a80922d761c833ee95f5d199575c28d76ebf61a4853747237bb09b2e9640588e3adb300d40cbbeb3f8b3dc2bf0d4ccb6ab62eb72ad2be8da0ef2bf0ad044ed4d20a80e5b46aa9da4909eb6cb454080a5470f04e8433254843c66daea2de0faaccc8745f224817632ddb2bb36972b3c7feb8151784216a669c3c7ac1fb93fe95d5372f1906f92c592c2597071e74d2cb0ebd7be3699b223d24234202b81d3692a9232f8e73b7d0fba429436fdefd27ac59f9ce989d49acfee437d675bc1541ccf3241e6549f8b98226f0e8c52eaedbaea32250a4d4aa1e16cfd67ff8df2296ca1588adfc798ea7f6e7908e666f657eca4bef59ae904be40fe4066a2c082459f25646aa726c4a254785fb5b0e3c4aa1941e96748397966f3215b8ad1a0a774af25236a11c1cbba2a9744c8f7f0a175de8cb5c485fe89d28918fcf27685b22096738c12084d862f3e29cb149d4cd8ece2ffe6d3155e7896749d27ed82544b3cb9f4795495511bf23d70951e6fc3da649c63506086c1125d97f4d30c10ba1b6529f965308e3f5d3b2883a87190a4092e1f7d6c161cf45d9aa15dd59ebebfa42cc2a2e98464fbd73603109233427e3064831dfc1588b1583614a95395d903875e3cf3cebb3df3169299c20929f73bd1962356cff9e6ebf3afb25b70af34209b5eb94819dc5937483cbb92f22860d160e9dc73defb1942d232d2bf0abdceb43adfbbf4dd637f1fd6ed380a661732de8e1d87f41d386c32f62c862bf3babee368cce80a1fc2bcc39cba8ea105df9d61f8a75ab56a9a98d64bef9bf5bd65d213d04da72b4af054e376142dccaad41e60ad16dc2500c07761a691159313a69a7201f46f27c5cc018d96f2fe3da49ebc09b906b53179ecdd1db2a0f82e7aa4a6f8a86f2d0b2fe393b50c280f87f353ded342ea885effcb5a7a0abef40f273613e2282212e61bb9750cbf41c228561c419e5c6db830c0ddcb4d225a674075420713f5859294299a6e68f7c03e040896a8ee4e207a97f6164d19e9f4852f0e28776db12e154050fff7b4e3cc351b5e1fa16da3b22a7f662a43f9212136600e4a4ca11a3dec4f77f3bcb941e1e6af39014823bfe3b9aac45d454541982282692f78815d7e5f409ddd936554ef37aec28f02c66babd77140d74da2fe27d2a19e80a3a45a46069738cf1b71439d6715289f3364ba42f8be382ef0cc09679db3e22a5703b3c09af829fa5e844d8e1b74196e68cfa3c6b48e06d7fef67c988726141479168d25f77ef94212caba207fff04823a5f0077e8c493d52c239c11015b19f653b9d2d7ceea88204d98ea5f4ca1e5ad03d3e4e729cd154cdbd8a3728495f9453852c0df05c7adc73e032f9923c1a2d12d9672d36383f99207efd545217e291db475673c3473a0761f3cd58f59d08c506d3435d541d91c47faddb594c27e0182ec9faa88fd0fbbd67948f2e22abaf8fab961341158af90576492296dfbb54d790b5d49031c13b8b368c8cbc5f2cde6a13a2e80dce713d0ad22af14ccbbde87e07b46bd63075dce35c1374eb21743f1d72df6b065407c2f2a0c0216aa0766863a70fdfa1956e097c142f68c8c861b7a76ecd719b69edde7cb246c4441049ade369f62e35e3e1b25a98c169858a5bb23cbbf41b9628c563fa394831bbc9b8427e18400c0495bf640d77cd2f6185574d2579a8149250301340eedecb5352db056482d731f168da21b17d01ce3a55a393dc3b6bfed79f33bfde2b8a69ea8024a5c04bbd9519a20ac975d1573a22fe86b48166de9fe96bb79875fb19340a4576f0efc1dc2932558df2a4c51c4006cf3f7748b0e402fc5b96f242ce984d53b2c1303986570866fdbf4790791f88113587a0af6764fe971e3684d4b96fb2cf1408db74651cff81a63431678a62603fa021bdfaffa15ab0a75ae9d0c2256f8cb9b52c70dfa3437314e6a2181e356a7ea5e148e96f4552b850846e64795438095f59638b8bb9c9d3ac5fcf1128b1fef93f09964b95399aedfd03f160534e919977330095de61eb4d6d387def0efce29da5eebb5ebbbe10bf78f8db1031e36ce8fdf3d9eeaa0bc6d7f54c27625094ab653e2886f0b9bf332ad0c4631b3f2428e4b343f66ee3928fda4a46844f898042f98dc0e677ffcf6de463a587eb27039f1906f1c88017bdb0cb372a9797c948c4d49e2ca0cafbc6f846e51019e03ffa22141fac0f1ab9f3efe28e5351bbfafa41f5586dedd01052174847431b206c12182c9869845ba148e6a5a13a62e06767c8a04da0b318b0f0b55d0f3735866080ec7b573da0de6285d25436c35ad28dd2114ee25608cf31e334f6870bae00e0dd2a34bdf13111160f458c9ab5f6efd6415ba35385aa32c85b454768fe63f562b2ee81a618450f42a2dffc18b20bd1136a910579a15188ce362865e4a8e4cfbf5223895c454371a7ea4dce827d969a33f7e0fc9006f9a3b8c98999a2570d2e995eff8333047db7582fff08377c9656b64d05f18de15b809b1e4d0edbba99db64f44d89bc72d5092a18af4a2ad9d80be3e71ffa75d46180f8d0c5ab77e330a38088d351713ed8ebe9c41efd901524f46fa82a4f38d96d9f0bb050a6e3d744189b18d37a0cb1362b2d0f1d7b27091f51ccc533a6e85b0c2b8b1dbc02310a04fa30eab8c910a79f798d0c265fea9181aa02449b45e913897585464fb2e16e2a2ae2852320bdf1fa0f3529eea3b93a4e2dd4d10b4a9bdf8211afb47d5d4de31986ee5ef5b86c933992290c3b5a520cd7c150e1c9cab9b60b4fca6ca178010101000500000006000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000c70100001d03c2ffff66f90000ca1dc6087e1a5a8496aede3816ec019e0bc5f43adebe740d38dfad9a545a6a2430c129aa6b2328b5bffa2f495c7d3e12608a14bb158d123bcf45fbc8a688950362b8d80f38d2fb818cb157887b5d141f6a9593b4c8d78a0e4d100c2f0417f1724b57535f60f3283cf6826de43edd38419bf6ad8c0cff919589ed0b31d7a43900845054e5784101a0170a25782f110d0e0c010100060000000700000000000000010101000700000008000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000380e00001e40ff0000c64b0000e0bd0000da9effff5118b46d488de14b9e6efab843f40e764a3f9da1fc29cf7ef93adfd02188587bd7e36820858e37800fb54126cecc3d47ddc9b3b32b8592bf900f5ed37b2a63203330403cd0913e4c258e5dbf5c6e1fcd1f00fa8650209ae94364974a7ab7a32b69cd78d67b29eca88abbbe78525e3f77f98d85065405378aa83f4c083891e32f31e741a400a67b25e6efa41bc70e10e9050201000500000008000000090000000000000001010100090000000a000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000e30000001cdc580000323effff59a01905893e5850809d39148aa25b3225f5d3dfca057ff07076ecd8d19e1ff4cce1533665b1e65a60ad8f09ac7f7638b30224388efe5ac1f89a2c8dc7d78760368fbee24981ca088c09a1fb151d493424c62f11fd054fff2ee8173855474d5e45b74a0e50f78da478db3d7622cce34a9feb99a53649854b7865fe777c51db89710a0023be7ac72145dcb7c81572233a0c0101000a0000000b00000000000000010101000b0000000c000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400001c0700001d6065ffffff00ffff0164ffff31e9fffff9b4bb457e856e840503bedb10c2a20d89770c77746c0b197ec2c509cb86c63effb76b0c201bce5033c295b98399a39bc464b58ec290973ed50e4cdaee514cee2a0d51858f7aa3d6f59f6a77d8e37cfff9163935fa91e10d3e6d98fb3193e04d8014859a4fdbca52986007d1a1f4711c224e23f9c7893ac8195f90aa313d942df82d9a3e6d1ae25991e4720f07fe171d05020100090000000c0000000d0000000000000001010100050000000e0000006101000004000000030000000300000002000000020000000100000001000000010000000200000000020101040400001c0700001edcbeffff12b1ffff427affff6f85000028e978230880655891a2c67f9bcef221db7a21af0ee75e25a5f93c1ca4b136369206cee1328b4c415190967dae2f6fd5bb97eeaddf61188f3178f35d163ac56cf6d0047ac916d981d5f42a70e76fd732835f208e79ee8bb1042da7651f445e0ec6b2e07305952151f82362629a53a522918bf3d84580fe70c56ca3547fff312abc20109905bfa5da6de4ecb0d631084dcd40e7f24c2bd425b03b83c54dc069104d46783550c049973f1e890765ae26aaac13d157fd1667fff29c4fac6d381dbc0fadbbfc720c67a3d318b3dc71d06735c216966cfdc84a6f5ff4765ac37e93367a733e59b2bea425da88f06cecef87a702d3f0c51928b7cca051c34cd618b15ad9c514cc8718a7c48158d6e0aa0bfe733e5eccdf60f8976f07ac7658057ce5fb010101000e0000000f000000c90000000200000003000000030000000100000001000000010000000100000001000000020000000002010104040000e20000001b5aa6ffff500bffff09977d1b9697680af049e7edb71743106b2ae909b7cb32a4e7edc2b8a6d15feea5f840f9d463e5fe1d1d31b87440bc713bb29ccfc368980493f629c9a9983aa8e7ccea74674f089d91ea871b26a6c20ebad1d2c807a76ac7756e3ede9325cdb46a2c8684fb1f6165a1d03c28305a0b53ea6f4c5250e6df39e150dc85add6dec9a39f585e96bec39181a63d2b02ca600a0c0101000f0000001000000000000000010101001000000011000000d10000000400000003000000030000000100000001000000010000000100000001000000020000000002010104040000390e00001fffdf00004c7f0000818effffd0f10000d3f59b699fd61b3298c957538aba06dab759c83b12fe583bd2d53d4ad3207f94c89c9bdcb5588ede9043fba300b1474e46f720cbd6dab19e969d270243e899a412371c75c632a56dfe31961c720a89dacff1a1d588f2f79e111774eddf81541c98aeb86a4a5c9d3347553e394416a6c3bc19e06bb781ea0d075805000d2a1a7ef325aba7571e271c5c5e2a075fe3aedf050201000e000000110000001200000000000000010101001200000013000000c900000002000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001ee789ffff5503ffffa765267e8dd4e650a36264d7dfbecccaf929c049764f5bc9e857673df617ef27be9ce126ed3753f489de05fd42c95fd11fcf54352c8e42b59d94cc03860aff66db28cbbfc7cc7846222f6e384fe1b97f0c7ae3c3756d6721e11d5d452bed6ade67825d66eedc5f1edfa92fdb834a3f1d53edf85f696d76509fbde130212fe03e1408a8dd7baa894e2a45e985d60131400c010100130000001400000000000000010101001400000015000000d100000004000000030000000300000001000000010000000100000001000000010000000200000000020101040400008e0300001dbfebffff8d56000003d2fffff87c00007d8d2f3469ff01f4429370f5a1788fe03aa8db71a37c851b1f46a4871b168256ac412b022b200de61c7f6244ca97e8200367fbf8d35d3a4f5329bb49ba0ecc0ac68f173ae1c8ffadf9c376445563ec9ed68d7b4b8d2d8afe08d1eef513aa41c8d7f042fd13708c15c17dfdafdf9d935a44bf283cdd66876db324d828de9cc93ef2d17ea7bf89f11f0792749f6e05cc08050201001200000015000000160000000000000011010100160000001700000065010000040000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000c60100001ca133ffffc026000015d4ffff7fdeffff59a0dc590091146e35ac92c414f44dcf824b6ce247e78c4ba10eade56926256f3d418779547e3da8bf62c50a92751c8f815d9225cb5a0249b01b7a4cd20757f8b85d6d023a18001222ed7ad46e6e64a5fa51c3c087ddbeea5536f2872ca220009cd82406629f9152f05740f3567754f4ffe0bdc55645f254cdffe571672753c39e1e4affd48b2efc06fba26c3e432bbe326b25400f65ca10e1729d81758637de2dcde72ff39fbe426c6b6195930966f529f74b48a2c69aefb37cfe85effa129e7364683b3cc5eff6040e7c263a3dc2758e72437469be143033e08b03bef864473c230c30e14c593984a21887e30ff60a85b304d660c273fa47964409d5a3ae8ae2f7e59a227694dc64798561097fe0ec2e89cc820dbca4fc4bb22aa5569787341b010100170000001800000000000000100201000d0000001800000019000000090000000000000100000000100502010005000000190000001a000000000000000b0101001a0000001b0000001000000000000000000000000000060000000000010101001b0000001c000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000e43800001faa085005e7b6b5b87b7751732ff8348f651844b6ba4d8eadadcc798c1ed0e2ae520603f2b65e4e4d6b46cb8f65a2414e951cec9f89087ad33dc38600362fd434cd2efda1885e5148010101001c0000001d000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001ec6e8ce95d03edf1e5c2b7099d4e741b347df67947f490aff27e5c84de2f34035020101001d0000001e0000001900000000020001000400000000000100000001000000010000000100100201001a0000001e0000001f00000009000000000000010000000010010101001f00000020000000f10000001000000001000000010000000100000001000000000000000000000001000000020000000002010104040000000400001ade8bffffbc8b000096c7ffff8587000084aaffff31bfffffdf3b000090cf000057690000da09ffffe4e9ffff484dffffcfc60000c15dffff3a63000044b90000bfd6bc8dbeeb4b782e3ecccefe1b3c24e4d160f0ba9aaff815d8f48e960fb02b19510ea439469d251d257472f35c7773f70580d6242b3f9a5d638ea8ca7bddf283a53f6e6909af3f177335c8a48ab0a81690ab4cc02a14ae7dde293c7da45a59cdbbd21f7937f9d68fbb47aa8c963533c28dd6056606d9da2f6c038300bb8d84090101002000000021000000040000000200000018010100210000002200000040000000c5a700000000000004000000000000006b4100005aa001002d01000095720000b04c000000000000856b000000000000cd83ffffffffffff73faffffffffffff010101002200000023000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001c41b04cdcbae9417db0b5bbf39d9259dc8c5d8eac4ee4ff4cef546be7005b0f3dcf25d5b065dd47609a769b7653a3c164b04e481ba549235c714d813a321c72aca6b649cfe9b1c4e0e682f06a76819676ec3680b6874a6e208ed42eb7cd725a9f010101002300000024000000090100000c0000000300000003000000010000000100000001000000010000000c0000000200000000000101040000008e0300001cd1b0504c299f06bf6196b1667721de8dc0f0b45c42e85ca17623fe85dd2b3f421e4a4c28b075577b76f91b2543c4cd9c9c98f578e1bb1db4d3aa237c34bdc69595c36fa8d08cf302de3fe62bdc22af43e1e849fb9dc15d712b1016c575b68809b0266137b12df50aabbe057115b5e2e08c83c228dff3360d0c5cf05b655d59c35b5026421d25e9dfdf362481d0d5979973028fcfb7cd8e7b5085c0241cdc6feef9fe41f4ee1693dc4fa897698e505d0104873382758af34a2f1e889c0916bbc472c906553cd1d45f57b297c36a5eec2a787b259401d2e33608010100240000002500000008000000000000000400000008010100240000002600000008000000040000000400000008010100240000002700000008000000080000000400000019010100250000002800000008000000c5a700000000000019010100260000002900000008000000c5a70000000000001d02010028000000290000002a0000000d00000004000000010000010000000010020101002a0000002b0000001900000001000201040000002a480200c0060400d24f02002cb60200101a0101002b0000002c000000000000001e0201002c000000270000002d0000000d00000004000000010000010000000010010101002d0000002e000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001c8c25dd0cbdf99a0fbeb2d44f3f64479e94f296ef129d96121f6a8a2075a9ce4705020100210000002e0000002f00000000000000180101002f0000003000000040000000c5a700000000000004000000000000009b27000072480000a45f00000e9c000073340000000000000ac2ffffffffffffa76e000000000000d8e0ffffffffffff010101003000000031000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001d6cc48cf3c3af0ca9d48b863b520ec7d9326dfa02a3477822362bcc06b65f1505010101003100000032000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000721c00001da2f7e5b63271ced57345419c9ad655858cdc4dc3b2d1abf721eb86f8267256d5362fc324ca1019f7a3ce3efa51c7fabc11b472ce3b60c8d40735ab24a1f9cb705bddb33e66260c120801010032000000330000000800000000000000020000000801010032000000340000000800000002000000020000001c01010033000000350000000800000000000100000000001002010035000000340000003600000009000000000000010000000010010101003600000037000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001d8af139158475eade81c0c39652cb8a95050201002f00000037000000380000000000000018010100380000003900000040000000c5a70000000000000400000000000000f96e0000e8a30100d69c000012530000a8b7ffffffffffffa887ffffffffffff0b8effffffffffffdbe1ffffffffffff01010100390000003a000000910000000c00000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001ccdce9793b2be1792f1e82a338c7968628c20334b473a342672309a534314ccd8b95ed882621d9dcf4128a53c8a846ada0bb5fb2a8669ab8291f7f8269c96d11b0eeecb8164ab9b163e8dfea60f7a404a2a132a95b277905c5fb26205c238c7f1010101003a0000003b000000090100000c0000000300000003000000010000000100000001000000010000000c000000020000000000010104000000380e00001c4caeb38c1ab4db216a309fb3299c6555be4b0ff49e4956524adbe79d2ca355b6ea43a779971678ee2b15dcffb7a71b18f3e9e283d63a28c5de3c46896cf28874186a397446ff6156a727909d30615e2a138dddcbaaf8eae47b59916a7dc941597f91886a5dc53ee9ddb64812a283233d2095b77d7675efb069fe6483a83f4d5a6f1af7d3c0560fbcf16590af244f7fd68205fa2cea9d25c91ed250af2997f96667f792fefc8bf06d7847a1ad5c4f0975e9078b69fe246b519c1d84d4989eb7872a117a5d3ef2db73ade2898bfa1ca09856545e63398134a8080101003b0000003c000000080000000000000004000000080101003b0000003d000000080000000400000004000000080101003b0000003e000000080000000800000004000000190101003c0000003f00000008000000c5a7000000000000190101003d0000004000000008000000c5a70000000000001d0201003f00000040000000410000000d00000004000000010000010000000010020101004100000042000000190000000100020104000000ef8e0700cff902005243030026450600101a0101004200000043000000000000001e020100430000003e000000440000000d00000004000000010000010000000010010101004400000045000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000000800001cbc20ee56f3b1504d5c483790ab3c1d6f2facaa2899b0c82e1ef99ad8fa6cb673050201003800000045000000460000000000000018010100460000004700000040000000c5a7000000000000040000000000000032ef0000e2d3010097ca0000e01601005a690000000000009384ffffffffffff5f77000000000000dcd8ffffffffffff010101004700000048000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000002000001d2b8e97d8e2ef273ae104e934acf981a05cce071ce743a4e4d3a5119274ad40fe010101004800000049000000790000000400000003000000030000000100000001000000010000000100000004000000020000000000010104000000721c00001da0850b06f5fc4cb0dd4e98e6b9402c8566d40129c7345c1df61aa238559b517d1e32b5ac45616ce8e829b4a0e4df7aa580cbc75b9ac38b87a1a8f6508fdaae4b257e781d016bd92008010100490000004a00000008000000000000000200000008010100490000004b0000000800000002000000020000001c0101004a0000004c000000080000000000010000000000100201004c0000004b0000004d00000009000000000000010000000010010101004d0000004e000000410000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000018000001d041d287f3402a6cf25689c61644ddced05020100460000004e0000004f000000000000000b0101004f0000005000000010000000000000000000000000000600000000000101010050000000510000007900000004000000030000000300000001000000010000000100000001000000040000000200000000000101040000001c0700001cf0c40e4c3cffbdace4d4adedc4368fcfbbb61d35ba313c3567af0433355c1463539b7e106bcdcdc2e704f8b4060125f46bc0228632ea7a2e8037ba47ab97b14e7ec9d5877f8e0974010101005100000052000000510000000400000001000000010000000100000001000000000000000000000001000000020000000000010104000000001000001da755a6f4e8437b567dee9044a91bf82b47f48017eac52e402ebd1dc86b83dc230201010052000000530000001900000000020001000400000000000100000001000000010000000100100201004f00000053000000540000000900000000000001000000001011010100540000005500000095020000080000000300000003000000020000000200000001000000010000000100000001000000020000000002010104040000700000001afb63fffff1ebffff2a0e0000f65cffff2d9cffff603fffffe85c00001bc3ffff0a6b574c3fd98db00e17bbfe60f20d53ec4c9c42f4c81399aaea8fb0701c8efb9e3b701df4538a85ba3fadd7dcb611863c896947f4213a9d94d536081f747a7ab8f029941667a61df0f0050a559d02985f24c9c20265893818d1193d011372adc4b30673ea74dfa4a90a926638ffee730b93935daf8c2aa09bc5e712bda00db14b4184f26af26e84bcfd723c24f1722c186118c547339dd3caf6b6a7ceb7b3093810d1c6a97dbfd281ede79b346986cdd85330c1d8670487adcd190a77cd34ae72c44de972af166e37cd9f6374bf3a6754dd2fc9602e788e5e94e858192e529bb9af0f0583a1850e94d934849c58689086b1a2e3226fdae96f2dd5c2e4d8dc1d0f54016e7a3b6a0111a2987640368b2b8e633e4a1a185e6e88da5f30e2d7276c3ac11e527ca7d02294c56d90b8415112152d327e922478e8dbecb3301990abaa57ea8b83b73a0a903e39bbef829eedbe4b7ebf93d20987ec1dc816eb19661aa7ad49731a110322d04075525c944948b15c6378a894f69076d293e77c9aa66f46f84d1b26ec947838db378029a7c03166a761c111b36861006f7c605cab4c56f1bc19a95649cedd796005ba0deff0579dfad95577f26fd0db794469da065243f512f84da38bcf0a158d0d3a0f6693a25e9aaebcbd407df9ea61712604e1eb5c40eec903456126a02eefd7c3c7ffce9a3af94464b4d00dfdd5bc82b0b9a19e51076225b77fd23013d4e3fca1360d33e1eb0561145bd904dda6c66d5990f8c90e484735a3afe971c93e09f4945adeae63ea1de509d45fb92a03593ff25914b6deb50901010055000000560000000400000002000000020101005600000057000000150000000002010104040000800000000000807f0000807f00","id":"lower_jpegai/jpegai/syn_uv/range/11","load":"ok","profiles":["acc64"]} diff --git a/wai/ops-conformance/sets/jpegai/weights/hyp_uv.json b/wai/ops-conformance/sets/jpegai/weights/hyp_uv.json new file mode 100644 index 000000000..09fc6555a --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/hyp_uv.json @@ -0,0 +1 @@ +{"conv1.weight":{"kind":"conv","dims":[2,96,1,1],"mult":341,"shift":30,"w":[23905,15057,175,-25976,8267,-14774,-27971,-24454,21970,-21344,-12682,26885,-25748,-22708,23800,29754,11973,14632,15133,-1420,-10024,-9519,20569,31418,13033,12788,-5432,8272,16691,4301,-7192,-852,20120,-12209,24715,-24636,4227,23727,-3196,-15754,8060,6945,30407,-6471,-11270,25380,28415,-24838,-1607,-28719,17652,-19482,-14771,7571,19684,-14923,-7395,30131,21860,-12825,25844,-21335,-5326,-29267,-28258,-21669,31164,18863,24986,-2655,-1535,-26295,24583,-3507,-14764,27757,13121,4208,28921,13286,-25038,9671,-32452,-14994,19708,-8472,17607,577,-10777,-14381,27215,860,-31342,-29663,21728,-8633,-28796,629,-12353,24021,12593,20130,-28922,-29993,21940,21062,-3517,-30254,-23740,32579,30245,5719,-3957,-22782,1863,-32385,7495,32581,20351,-31677,14005,-23970,21647,17313,-16641,-14948,1170,-31323,-24776,2246,23580,-16790,17165,28361,-6307,32760,-8263,-27732,12045,-9745,30433,2888,-9547,-2677,-17694,-25724,10782,-14829,-12584,25135,4225,20070,-1236,8418,-20967,-5186,-8217,-7980,10412,10342,-17771,-10605,7093,7458,-17388,13181,-18202,28084,1434,20658,28912,-9653,-1111,25777,-1815,-23790,6616,-15478,-26849,7682,-14786,10574,-9251,11231,8652,9297,12119,4110,17706,-13028,-10718,-3829]},"conv2.weight":{"kind":"conv","dims":[2,2,4,4],"mult":128,"shift":26,"w":[-6492,14986,20557,7833,9103,22747,9615,12915,-10728,-25430,2302,-14821,-21068,-16581,-11657,-18932,20368,30694,31376,-4293,-12488,-1055,-15103,-23762,-21240,-11985,-21480,20202,-27865,-13993,-19713,27784,30113,12107,6224,-26342,-11210,-14706,-20647,22661,20132,25790,-29243,-32002,9701,-11336,-18812,1789,13797,70,-7122,12570,3849,7263,19961,-26674,-29708,-21445,26999,26202,31180,13617,5297,-28370]},"conv2.bias":{"kind":"q16","dims":[2],"v":[-64444,-64668]},"conv3.weight":{"kind":"conv","dims":[2,2,3,3],"mult":227,"shift":27,"w":[-27069,-24322,-20634,17240,1700,25930,11025,-14117,7300,5635,15994,-3824,-25689,8283,3094,-3847,-29592,29040,-15801,-4150,14833,398,22783,24207,23984,-9744,9227,-27448,15213,-28772,7721,-2207,-29936,-8935,-18272,-13018]},"conv3.bias":{"kind":"q16","dims":[2],"v":[47985,28394]},"conv4.weight":{"kind":"conv","dims":[384,2,3,3],"mult":3641,"shift":31,"w":[-13126,-26425,-7880,-30360,-18172,21040,30845,10595,-3221,-7754,-25241,22527,-1879,21520,-12133,945,19584,-18569,25563,-1091,25807,1533,6731,19493,-27274,8870,-7449,24673,24133,-30735,-29714,-15341,-14765,-16338,-12140,-15958,25598,3715,-31094,-5896,10020,17676,2070,-29858,1896,25734,1005,-17970,-51,21352,18959,-12609,-1823,24476,16974,30836,-9156,-11036,-28882,26042,29397,-21738,-19865,18308,21743,-25611,-18214,15511,-27587,-1199,-32588,29385,7710,-5971,30276,-26591,5471,-1839,17330,-2050,310,-25345,4650,24627,25352,28736,2042,-28899,32721,-14072,-24544,-14511,5901,-19785,-16874,18214,-19131,12862,-6044,15188,-13001,-18937,28315,-25272,17875,25160,-25866,4948,-20486,24671,6717,-7034,29215,-25763,22314,-16553,10882,-18077,12422,12334,561,-11844,15095,-23044,-3096,22608,31944,-15564,4113,-9093,2257,27248,-20490,-13181,21078,-6420,23377,-25940,24235,8966,-22209,18539,-18234,4667,19553,12364,-30990,316,-3541,-6466,23598,-18348,16745,-32060,-852,15741,10295,-7507,25848,-31234,-27443,22510,25751,20071,18793,3016,-17434,-10003,16686,32064,10889,-25328,-32546,-12583,-19743,26620,-5900,13208,8008,29997,13,6222,-15771,15218,-14222,-32322,5497,9832,2448,3605,-7938,19318,14659,7236,8248,13447,9260,9695,-17606,21383,-16029,19985,-3584,-22667,-2125,1063,-25853,-8879,9301,-30422,9819,10833,-13720,-902,2171,5399,30500,-20888,31902,10331,-16076,12020,-19898,14715,29833,-12518,-30372,-8425,19465,87,3750,17683,18774,-17685,3682,-16803,-27747,20400,19604,7021,5710,-23951,-22661,-15504,-16876,-28952,18983,-15503,-1142,-21622,26989,5781,22658,-4509,-22098,19321,-3302,-32028,-18047,-8659,23701,-18773,-31005,-9256,-25495,28044,-12723,-17001,16640,-8863,-19196,-30007,-23416,-4745,19560,-5550,49,-3418,6960,214,-1182,-30195,-7610,-15437,-8497,-12571,14870,-15301,10285,-28899,-22642,-25047,-2966,-30382,-32764,16895,21997,-31145,28867,28687,-24580,23222,-4671,-29510,14062,-11213,1942,-4028,24424,-7183,3569,-9065,6513,15730,4043,5959,-28689,-13923,-23202,-1747,31248,-30168,-17618,-15863,28543,17599,10612,16998,-10942,11229,24666,-3827,-27698,-23685,7848,-4021,-23122,20038,-17275,10205,4671,-5472,4470,28089,23826,17158,20144,17741,-25533,11839,19682,-22076,-34,13781,11191,-1141,-24917,-19584,17238,15887,15930,-25951,-29696,6143,-1760,-9990,12645,-23407,-26694,8080,2923,30007,-22315,3992,-4420,-30474,10559,5605,31732,22273,-5320,25473,9096,17850,-21776,-5097,8539,22803,26601,16573,-18708,28824,-17371,-4469,29866,-10505,22034,-2026,-6410,29873,18716,-10311,26322,25808,30713,-3540,-14604,1334,18841,-22548,22808,-19061,27250,-24242,1524,23509,-30146,-15357,27549,18989,21688,15778,30975,-7861,-12033,6817,-20676,134,17073,-13315,26034,31507,22566,-12397,-30491,-16742,-3582,3551,-23869,-12672,-15128,-23984,-28448,-8045,2699,31199,20269,1673,12654,6385,16891,20318,25478,32381,3598,-7731,24518,10607,-11679,12619,-11368,-6995,32523,16867,5733,3502,-20601,10221,-7224,32571,-32517,23179,-22943,21308,-2686,-17581,14437,9804,15627,-24654,-6808,17960,23733,-20159,9603,8265,10790,25096,-1604,-14399,-3387,16255,-2363,-14275,-23085,-17945,-30470,9222,15975,-6196,23014,-29768,23179,-3437,-22510,-1496,-32192,-18271,15111,-8068,-17204,4565,-12532,-15291,-18977,459,-32240,-18177,-12640,20224,-31643,-17646,-4482,-26920,-11356,-12388,2071,-31916,-5269,29055,-28803,29869,-14918,25659,29183,21060,-7053,-31707,-26669,-10077,12527,2166,-15750,-22428,-1493,11500,-30572,29088,-31324,31217,-22639,3035,-21806,-21787,-22702,29199,-18869,29967,-309,-6647,-17576,29719,-4802,11927,-1281,16710,-26442,-31175,-20452,16675,15767,-23500,-8422,6104,18751,28400,5259,25652,-21629,32344,-22208,5836,-24117,-8369,-26465,-15548,16585,28413,-24898,-1535,27051,-23634,23389,-736,-7696,-9590,18803,-1091,10328,15816,811,2517,11572,-7818,31618,-1373,-19151,15008,32399,26957,20716,-29224,10608,14514,1999,13179,17367,-27282,12958,13017,-18499,15916,-18292,24165,-28259,14525,-9354,-19238,-27923,-19232,-17655,2774,18510,32283,-25955,14025,15449,19885,647,15089,-6734,-29989,-24339,-31588,-1107,29580,-23155,-32421,-12448,30443,32628,-3958,-20555,-6165,-17255,10944,32298,-13155,-4448,21180,-12364,28100,-22217,22104,31847,31901,-14616,-20795,25689,25918,20695,15958,-8026,-27533,6759,-18518,13343,-3915,-4659,-13401,29830,23123,-26956,2467,-21011,8926,-980,-18481,-26024,-2732,-23255,-2785,-22836,-4389,32026,-29482,194,-3372,26317,1826,30568,-2053,-11270,25160,-29289,-382,2920,4867,17223,-26940,4472,24841,-24076,13180,-5040,15276,25033,-16145,19689,-25179,29131,-31202,-31581,-17487,9090,-11299,-945,29404,-6866,-11311,10988,30817,16979,20255,-7445,-15269,-21350,14041,-10000,-27035,-21981,-14548,-13034,-5160,-9098,-31134,-28062,2352,-15146,14477,4843,-28057,18400,-5765,-32429,-14708,-1573,1577,-24266,-1370,-26424,5056,30912,-30962,21351,31421,-31826,-22900,6239,11904,-12646,29488,10185,25213,29192,-27156,-31096,-11637,13007,25022,25565,12371,26927,20983,-11627,16675,15021,31664,-32757,29413,27403,22146,24596,-11529,32034,-18181,22639,-18543,25111,22338,-28348,12643,-28661,27183,-22968,21444,-24792,-9757,17382,-19965,-30908,9854,14304,30007,-14408,-26102,-26975,-3841,-14086,8059,19177,9862,-1611,12799,-13707,-15183,-30213,22676,-15066,-30812,-11974,-5197,5939,-31394,627,15450,18815,22752,-7790,14307,19208,-19972,19464,-21170,15904,24286,25681,-31481,5908,21745,-12373,6627,-26561,-27328,1647,7699,-10616,-810,441,-31586,-23879,22241,28746,-26232,132,-15791,-20237,5938,-14829,8111,31002,25011,26472,26089,-6575,31739,22305,2638,-28087,-13477,-14588,-9457,-28166,5567,-15072,15844,-26729,5162,-8090,28626,-24227,30540,-14367,-24953,-7881,-6565,6388,-20427,7602,11744,7942,-5278,20156,-15062,16795,21924,-1300,16336,13200,-24520,8721,-27953,-24949,-2634,-18838,-7116,19709,-4879,19921,12820,22053,-19159,1835,7233,30735,-3307,28203,6693,-3000,-15286,8653,-32620,18553,-15216,-19732,-6562,-5384,30064,-10178,25079,-16404,-4051,25354,-10884,1851,-3873,-27845,25615,-11674,30629,1635,1301,13567,-14711,24738,28434,-15002,2162,-28716,-23930,19268,-3651,-12271,-8754,-16741,2935,28634,14706,2654,25209,17662,15700,3742,14650,-4834,-21950,-4095,-15175,-2160,11471,-31788,-17224,25153,8418,3403,16776,-10600,10680,-7759,8040,24856,-5727,-373,-1817,26594,-574,6294,14875,-32463,-31757,-31789,-5606,24387,3188,1808,27608,26823,18826,-23228,9413,-9219,19667,11336,-29350,-13051,-510,-31826,-31267,31860,-19443,-22917,-27734,-5915,-77,-2293,-30168,-24510,17676,30937,8163,-26177,-13913,-5888,-29638,-28218,-12998,-1290,-6038,10038,-9200,31521,-13552,-21207,7208,-25160,12546,-17794,-15093,10223,-2944,14994,14356,25623,-28657,-4888,13313,12172,-31460,-3656,20907,28710,-31658,-6221,31297,-3949,-30163,-2568,-6173,23539,24932,26763,-31717,-29760,16865,6087,14054,21809,17467,-11032,-18014,13808,-10531,30073,14793,-7861,18799,14773,21774,-13437,-11537,8358,21419,-21173,-32061,12553,-26446,25192,27499,-6974,-16847,6420,-1777,-29820,5242,24013,-5277,-32734,-28258,22935,27221,1829,-2474,-32449,18299,-5780,32506,-3268,-6584,-13191,16344,23561,-4830,-22345,-26447,-36,10415,-32212,-32021,11466,-1335,17517,24470,4078,7756,5841,31377,25357,-30472,227,-3275,-12743,-10378,11388,3625,2596,-16144,26626,11228,13178,13493,-20325,13150,31699,21716,-16678,-8164,-19503,-15199,8187,12602,-7281,-15646,-21185,16216,-8143,-22288,14181,12629,-6239,-31899,13390,-31299,28114,-24125,5603,30691,11922,7975,13841,-30720,10640,11471,26776,-4987,9552,25667,4590,20860,31755,10467,-23578,13354,-13226,-29535,16383,17048,-6628,-4042,-2086,8680,-27295,18198,19820,-1809,13590,-18055,31237,-29261,-31017,5116,-17374,-15766,30492,-11141,-20667,-1529,9818,-3030,17264,4280,-28643,-13558,-30524,-10352,-28459,-3380,-4533,-29952,-26340,-2593,-13631,26360,-20060,25610,-20166,16739,17914,-27296,-2075,15667,-26879,-18621,-25736,24784,25610,-4508,30870,-2221,28651,-24846,-23337,-26751,22358,-2626,-19454,-25019,-25516,10386,-2854,-4709,-28550,4482,11694,-18928,-23631,24250,24975,12365,-20607,3380,-9632,22731,22622,16017,19488,12243,30703,7104,-15210,-19091,7827,-19712,-24656,-9028,-14470,13802,-28558,-10790,19267,23698,2936,22867,23086,16446,-28242,-14892,-23147,-26838,26135,-22745,-19473,-15493,-30417,30244,-19539,28220,16064,21254,13115,-15922,8638,-21032,30369,-6371,-9552,12169,-12243,-16741,-18368,-4131,-1555,-36,-32503,877,-15767,-30938,31353,-22719,-1687,15306,3079,16401,-14890,-19789,-1385,27608,24909,13363,-28215,-23960,-11913,4066,31810,9117,2896,5704,-13060,-27886,-14341,-10201,11405,-9955,1607,-2718,-4474,-13967,-14412,18017,20305,-28239,32349,-5745,18807,-28144,-1813,28268,-8833,17830,6601,-21191,28145,-9211,16133,-27948,31175,-13075,16610,8596,-15788,21200,3367,132,10575,32535,25241,-7165,-29498,32043,-10026,734,4029,-15469,20726,-28348,258,10924,20572,32383,14880,22790,29418,-3116,27861,19797,-7440,4664,12325,-24816,7592,-32076,12148,32185,15929,3360,-7755,28225,14699,12265,13504,6254,23834,-1034,24555,19956,8869,27154,-4870,-16215,1697,11765,-14934,-2873,4029,25174,-24142,-30631,-30585,-21537,-9688,16540,-14874,-13049,-1513,-16869,-19168,20336,-5856,-2670,27975,2968,11501,26132,-26778,-17706,-21968,5957,-13082,3830,32411,-22083,9386,-28565,-19717,-24523,2214,6479,-19621,11908,-24033,14069,7025,-23586,17579,-15039,17439,-30179,11979,-17061,5994,20444,20600,23120,-1475,30894,8554,-16045,30014,-32076,25040,-26325,30748,8280,25363,30058,15959,-10322,-14882,4251,11181,6150,-7569,-11196,-28705,15746,-17054,7913,21325,-12518,-11966,322,-18540,4020,13725,-27025,-8640,15278,17931,17645,-5588,-29979,-15418,19437,11128,-6960,-13731,-19547,-5353,-13805,-10972,11425,-5611,-17187,1739,-7899,-32355,-27996,9292,-21414,26104,10595,-22811,-32152,-213,-15009,10106,-17427,-22138,-475,-4073,-9758,-20384,1237,-27152,-8275,-5983,7846,-17979,-21728,-21198,-18936,-10510,32637,-16119,-13923,-12396,-28328,22983,-31481,20457,-8886,8352,-7470,-6526,22455,-32163,-17962,10766,8311,-6559,-4167,6681,-29184,32699,10511,-18754,15801,-21748,-11174,-23509,8440,-14902,18043,-26485,8,-6217,15660,19853,23054,-32378,-9162,6850,-6776,-22964,6608,17729,-29389,-29820,-11141,-26267,27770,27527,17515,26244,-2643,8799,-22360,-2349,-7465,-6006,-13860,23688,-8873,5252,-25386,-7190,-27695,-22900,-15797,-16173,-10933,1521,28963,-7175,-27031,7759,4589,-19305,4807,28448,-15768,3587,4794,-10070,27883,31178,-1641,13477,27971,-8466,-5617,19253,3860,-1221,-16725,-22513,-27842,-3059,18551,-28489,-15169,-28872,-18148,-15500,14616,-30783,-25260,21508,18572,15823,-18746,-29472,-14868,-10767,8691,-5744,-24457,30491,-29297,31488,13048,-6716,2977,14928,-22133,-31330,28342,-19711,-15735,-7281,-24021,-21277,19875,30985,-1855,23355,-10810,-19922,23712,-17313,29422,-7199,-1918,21993,1451,5954,23451,6949,-17265,31974,-667,-29730,23975,-30933,-20241,-14631,1518,-32224,30677,12435,-12543,7182,3671,31206,25791,29744,-18611,-14891,-20389,25524,18091,-18123,-21060,11378,-14333,-16275,10533,-16047,-2899,7674,14865,-14646,-28057,-28668,-20068,-10666,15365,21368,-27322,-29915,-11459,2842,-6184,-12025,15946,8804,-22118,14338,29922,-11533,990,-25416,2599,-13616,-32458,-6709,31190,-31473,-26538,-14217,-7967,22050,18491,-12257,12179,-4505,5874,-25582,4676,5890,-31338,18290,-6403,-30679,-25771,-26172,-17147,29084,14913,-23092,24484,5623,15233,15196,-24496,-22417,17065,11600,-21755,21838,-13172,-20825,21922,573,-24198,9957,-7926,12657,21982,28347,-19622,18413,-10107,-21613,28967,-30402,5060,4365,17997,1252,12547,-17175,26027,-5318,24136,17948,25639,5591,-2177,-20680,9593,-25316,-14046,-31933,10862,3244,5535,-31634,24808,31061,-29529,12788,-2591,25693,25594,-4761,28922,-23224,9237,-23537,4927,25050,6993,-32182,-10857,24955,-15085,15987,-24499,-2083,-2923,-24103,-7810,7664,-5678,14939,32219,31310,-1671,-7370,13055,-28973,2280,28642,-4072,-6939,19482,-3710,22745,32211,-32367,30661,19895,21815,-9773,16766,-28395,-7393,-4277,-790,-23753,-10657,2275,-30293,15196,19252,19252,31743,-24891,31387,2281,10102,8192,4552,-8236,13275,22347,-17623,7652,-22036,-1523,11173,-23850,14739,-6375,12096,-28826,-13527,11126,-21576,25806,-7439,-6014,14334,17309,-10966,-9425,3883,-32305,-3079,-15420,15763,28117,-10713,-24340,5228,-11208,-4209,1843,-18116,27893,-15922,10345,21469,11628,32036,-14953,-13248,18345,20944,12984,-9519,31091,4616,32172,-22850,-22182,-21388,20512,-22337,-32525,24815,-30361,8284,-25347,-531,20178,-10213,31349,17503,13390,-29189,21287,29220,-11126,-12714,1859,-863,28945,-19687,9014,18543,-25870,11693,4131,2769,30063,7659,16794,23330,-25930,10544,21968,-6101,22729,-18012,23317,17261,-13701,2107,-10778,12200,23967,-3026,22099,-12735,-17253,25505,10414,-12590,14078,-9750,17207,-32288,-12012,-13223,31582,30120,30965,-16422,-29123,-29064,16851,9732,-27457,15492,6434,12468,-43,31909,9026,-9379,26871,6939,-29183,-24741,13437,-28160,-1370,19704,-27917,29258,-17701,21153,-23641,30828,-25772,-937,-12764,11623,-22202,-4058,30834,-29708,-14079,-11763,13700,-8038,16442,11861,22083,-26072,-23497,-26646,24830,30281,26289,7733,-29701,16038,-17824,-10382,-4610,-31841,22711,-16751,18246,-2518,22316,-7740,-8767,-6058,-8645,30712,-720,2181,-25799,31353,8266,-11623,14799,22254,16622,20242,-28635,-4429,2029,-25898,15687,15296,13143,18940,-5103,-19258,-25985,10491,15624,-29534,-14138,-24489,20388,-29085,-7216,14907,12272,-4545,0,15150,28396,6594,444,-21490,4274,21166,9497,-4283,4484,-21129,-2295,-19450,12019,2244,5168,-13592,29636,-23055,30258,-1099,5544,11245,-31133,11337,-6,-27606,23171,-26721,15138,2473,-14171,19015,4473,-19414,20133,-13864,-2279,-22556,-5257,19161,-23183,-20225,10797,18930,-25199,-4419,6390,-10618,19491,-10061,-22206,7575,22687,-8194,1297,-17980,8269,5456,-19194,8651,-8718,5389,30786,-26104,10028,1585,8048,-32016,-13857,-21498,22135,18759,32187,6315,-22924,-3549,7480,-17193,15183,11819,30497,-18176,29554,-23437,-29695,-22872,-22137,31430,29697,5569,11164,-1938,-24384,-10226,29621,-12940,19864,-22825,31380,-7578,-762,-12430,-2813,-5822,-16927,-28313,-26249,10660,-2859,-3462,-26386,-8632,-17243,109,-12873,-7965,-17288,3131,26473,13162,20394,9181,-21075,-22907,-13150,317,-26539,26356,5259,925,-32339,-10555,29676,-5951,-29276,18216,-3574,-747,-495,-25297,21737,30022,-5711,16428,-9783,-14215,5962,-30615,-27512,-9681,-25154,-20334,25026,8747,-17021,-27100,-6798,9718,-12213,3686,-11933,-9236,16605,-14255,-21748,-28396,-18589,-6535,-24718,20007,-31944,917,-21910,13408,24598,31089,-32083,-3801,-12266,1923,5217,-28371,26907,22532,7609,16160,1723,-19295,-5912,-6840,1534,-143,-26913,30308,-8911,-20823,7797,20589,-28346,-12192,-31899,3576,353,-8665,17238,17504,19565,32745,-25192,-27563,-8796,32085,-23932,28187,-15931,-1263,635,11371,22939,-4784,3763,2200,-4149,-25146,8986,20978,-19014,-29285,-6695,30761,-12910,-32593,6058,-851,-26250,-29963,-8926,-25473,6272,27230,9891,-12814,24439,24326,-7750,-1959,-18982,12840,-22161,-9713,22826,10877,12576,21747,20281,-21622,26044,-26627,12118,-27341,-20957,-27318,-25934,7501,32026,-28548,-14751,-9846,16375,-30662,-14706,-24333,2727,5746,-30821,15597,2313,13279,10714,25916,-32658,14452,-4433,26063,25566,-2843,-10302,24723,-23414,-30684,-16229,28681,4717,19169,-28736,-3345,-19416,11379,-5591,-20555,31486,12235,14160,-21782,1911,-10659,4893,19823,-12590,-26073,-9976,19638,26035,-14441,-16718,-30473,-6723,11110,15483,-11894,-32071,-29483,-1783,10855,-22980,11482,-30021,1490,-22070,-19394,9637,9338,21158,16445,-18107,11660,14799,-12312,-29638,9594,27220,5412,-3741,-29271,19731,-26300,-3703,-20235,30308,-19447,-17863,-22765,-28649,5679,26775,-4465,9519,4147,-2445,25997,217,-4664,-32346,-27332,-27068,-21173,-13256,-16463,-11649,-20818,3094,-13201,-16649,25649,4394,7690,30624,-5369,-29983,7023,8496,-18369,14742,20424,-2201,-2426,-16462,-10935,2042,7556,-30347,-6096,-23518,765,24119,25822,-16134,24416,-11707,12334,10751,-4480,25309,-30755,29436,-30238,17170,21718,13537,-18701,14276,12837,-20138,27830,30454,-11203,-21517,-3672,-8952,-22305,21282,3229,4350,-30565,-15468,-20714,-22539,-23582,-4203,-5026,18933,31785,27340,17954,14299,13800,16274,-10226,-32574,-9991,170,-16717,-12810,-5591,1550,-24639,-11770,12181,-10485,-30954,-17967,21814,-12522,-22599,-30123,2895,-12438,-29178,-2678,-3182,-21406,28395,15618,26433,-22369,-7362,6443,21128,25155,-11486,-5809,-1313,27813,-4532,-9417,-29778,-23872,30318,-5762,-31173,29730,-10369,-21782,28691,-1949,-19597,28354,-17179,-32545,-16164,21601,-5018,4385,-6009,-6921,-28922,11815,-22464,26370,21236,15550,15893,2702,-10748,19833,-31861,26904,-6451,3986,-7330,8229,-30428,16271,-27308,7987,434,-8906,-24153,-30358,7903,-31427,6679,-11234,-20348,13868,-5331,15521,-26181,9123,30185,10213,4401,32414,-10613,-3591,4209,-18056,14799,-2779,-20775,-31125,-24702,-21814,9523,-29988,13972,-4673,-22846,-16425,24196,-31764,-24470,11786,-16946,-15780,-22985,12934,-13667,-13885,-15627,-5930,-15156,-32041,22976,30601,26016,-18798,17292,-14462,11710,18167,-18264,-15297,11996,19345,-10905,11000,-29408,4291,11302,8574,-26132,-31223,20241,-19942,32422,-28682,-14897,3647,28600,-9237,-20472,31764,-13996,-13596,-7617,-31630,8011,24923,-16007,30035,-22707,11690,-6654,20589,-25210,8665,3984,10401,-19834,-18053,-29130,24393,-5595,-16718,-21336,6915,29762,9704,-1715,13000,23956,-23877,27988,-5305,15915,8555,12247,-13053,-25647,-17341,17551,8235,12918,7692,23480,28788,-16428,-12196,-26136,-13706,-13610,-31381,-21009,5432,26784,-6894,14402,-8184,-14374,-17043,28932,-24203,14192,19056,-6221,6232,8310,-4827,5265,20871,7568,-31549,-18473,7948,3708,26736,-2426,7183,-4996,-27038,-9212,-23247,21121,16328,-20325,18774,-13315,-26943,-15407,-15434,-28966,-20763,9042,23818,-16292,10456,13777,-11541,25352,-13514,-18209,-26688,-6644,26034,3774,-13915,-10464,12465,32296,17047,-28019,-3841,31689,15372,16572,24390,29893,14177,5244,-2047,27836,-10406,-16694,-19088,13265,9607,-13555,30938,-27806,-5917,-17664,1408,1485,-26853,24447,29475,512,5047,-1643,-28648,-1672,-669,-22441,25297,6992,14335,-22462,-11818,9581,-26103,18656,29745,9567,-4139,26015,-2836,7898,10116,17683,18419,2126,9513,-13531,-4491,11023,9824,756,6983,-17959,-5260,28929,26074,-19170,30012,-10101,-66,19062,-2993,-2573,24269,11928,12760,31931,-3181,-18651,-7662,3888,2029,-9990,-21507,-372,-1165,18052,12072,-1148,20630,-3543,-8775,-15889,-9779,7266,12331,8676,-7193,3985,-31588,-30529,-1608,-27094,4590,-22037,2136,8259,15914,19885,8299,-32159,18480,-4353,-7354,-13148,32347,10163,-23382,10190,-19954,-13698,5680,21975,16805,25432,-21027,20022,-8227,-18186,30746,-27018,23878,-19704,30490,19910,1262,-47,14754,17209,16730,15538,24587,-13066,20495,3952,9557,32022,-8542,11829,28598,-1458,-30366,-18112,-16140,-32195,-7345,-22933,-1708,19718,13172,-31278,17592,-28183,-245,-15703,12879,27884,-21195,26086,-603,-2173,-32257,-13507,25098,-12547,15376,7175,-12100,-30881,-18006,24338,12979,-19789,27875,29392,18661,20215,-2328,-30948,-10963,-10214,-25149,20846,22659,-31207,497,11029,-17303,7938,5531,-8715,-19528,-8191,15547,-13887,2352,-3813,-5568,-15185,-18295,9360,-1404,-13330,25293,-32763,2989,5007,10955,-31231,8715,-21954,9261,24943,-25002,-5345,-16735,32417,-21960,-6169,-10111,3880,-27779,9788,-6485,-31426,-19580,15191,-6846,29452,19042,17355,26131,3544,-8065,-16850,16159,3408,-6614,27316,16692,-25169,20789,7480,26078,-31956,-13633,-25437,-22177,-17397,-30911,-23109,-17179,-16217,-21891,-32733,-9526,4843,-23013,27604,-4997,15836,-25696,-1904,25368,-31307,-26132,-3083,-17732,223,27591,2516,30962,-24370,25556,-4917,16566,-27425,13912,8,24415,-3707,32346,-15823,-30283,-12052,16006,-22885,-27041,28172,2875,-31154,-11057,31514,27307,6179,20023,-24581,2826,26956,-21342,26187,-7222,-25903,-25101,-30284,20482,2929,8432,-14774,-29915,27867,8386,26419,26658,4616,21788,18792,6368,10249,28863,-20656,-15625,-22093,-14182,-26847,27870,25172,14919,28053,1244,-29201,-23912,9590,-10224,8707,-7726,-25265,-17012,-13956,13571,19991,28036,32581,3867,-13564,651,-12752,-7330,29571,-30570,11917,29661,30584,26522,30333,-24361,10280,19050,-24225,-30622,-11655,10322,-20150,-14432,-2112,-18413,-4674,689,15900,13398,-17713,-24203,31167,-26429,7448,29476,25022,27968,7272,3915,17838,22395,24733,24150,496,-5676,-19455,-2883,-643,-22001,-5275,21748,-30885,19481,-25273,-9052,31606,27009,-18150,19002,30231,-16481,-5960,-19204,-4366,28363,-27461,21670,18371,-23466,-8409,6527,23583,-71,5910,15949,51,25229,27324,2479,29861,-18815,22241,7019,15495,-14844,-21582,-312,-22871,-29297,6424,27452,-9841,-7182,-24410,-9447,2985,16825,-16032,2810,16657,6853,23267,22471,25551,-21487,21459,-23330,26005,-20723,-31309,-14897,-11602,-23373,-19381,20943,9354,-15049,31659,28540,25167,-2957,-20154,-32443,25503,-26822,-26730,-2813,-8214,29357,12691,-4931,28636,31914,31374,6073,-30459,24609,-412,9395,19511,-26316,-21358,31468,-26921,-10332,16119,-10458,-30128,-30140,24923,29692,16681,-8268,8217,17689,-19185,-23443,-2119,-22713,7656,18685,4631,-24027,3380,26595,-7565,5215,24404,-19535,-2531,-2638,-32709,-20811,-30116,16275,9541,15260,-4985,-32165,-24299,-7505,16711,-316,-2413,26965,-4308,-23804,-14979,26767,2173,20190,13498,28281,-23132,19398,9937,-10125,-2416,820,25219,-26042,-3562,9885,10945,-32062,-19662,-4212,29221,-16223,4394,26521,9116,30522,28011,29376,12726,-24391,-28879,-30252,-18660,13274,12866,4486,5696,-15098,-14269,14662,-27927,-11879,-4628,-30976,31486,-2231,30365,-1093,23019,-17923,-28048,19948,-856,8804,-16896,-25791,-10858,-5824,-11395,-11352,30235,6553,-5878,-15528,7678,-415,-3623,-18891,25548,-12618,2739,-32531,-5503,-28900,12280,-29938,-3878,9714,25715,-9835,13916,-29962,23354,-23874,-20625,-10883,-2253,-2296,13221,-28404,25312,23088,6656,-19070,-11485,9619,-26304,-8515,-8528,-26877,11966,6161,-5108,-26191,14731,-9117,-31643,-12656,27190,-3242,-3147,26456,-23007,23890,-21218,15970,-18059,28033,422,-30951,3055,11951,-20651,-9952,24215,19798,-32045,-18658,2489,-20894,-6917,-28146,17795,-5864,2178,-21797,2504,-23585,-13787,-413,18732,7148,21314,5537,-16860,-28918,9455,-2459,12649,-20937,-20302,20408,1891,-24627,14490,10020,15687,-21093,-23999,-452,28222,-15028,9454,9479,9507,28471,-32058,-8921,12206,-22835,19457,29088,24458,-10571,-4771,-10173,-13619,9662,-29862,27935,-26527,5924,10622,-32446,27745,-21226,14079,104,-25684,16370,11523,31219,-23925,23744,28083,25747,-30161,5806,27483,-12432,-23610,15843,19711,-21566,-24616,7543,-22138,-31074,-20950,7562,28244,-9590,-30866,10256,-4654,-3824,-1206,13132,9323,19247,4512,138,-4729,9731,-9652,-2003,-16045,15650,26169,-19595,-27128,-26628,23252,-30179,10439,-21512,-17154,-11475,29384,16900,16524,14557,13363,-15275,-15188,-6880,-30007,-28175,-26799,-71,-31163,-8306,6491,5469,-21787,-13276,-14120,16926,27339,-30574,24147,9502,-29326,31612,23406,5047,7906,-28148,-15315,-23863,-27232,18341,17366,-30869,-7264,-12475,-12985,7016,-30860,7998,20308,750,-12714,31280,2008,8502,-32522,17659,13371,6554,-4345,20099,-13591,671,10998,-3540,23423,-12432,-23419,12512,-17684,19059,-32520,-3925,-32269,-21134,24685,4091,-24223,6193,-10256,-8477,-4371,23093,1050,-17691,-29415,-18712,-11915,-11054,21136,12492,-24619,-10176,13954,14713,-10713,-14359,-17090,-1532,-30844,-27052,-25209,-18937,-6053,-4261,26203,28553,-25315,-10715,5855,-1867,-1531,-29371,31622,30561,28265,-21268,23075,13457,19704,23237,2395,11483,-17760,21595,-11996,8158,-5753,18147,-14698,32685,5485,-12613,20476,25605,-1369,-5088,-32428,-17784,9641,-29640,-13995,29595,-18147,31931,2974,5781,-29971,21334,6210,4202,5243,-7416,-24804,28531,-9194,15422,-28605,8806,32413,12591,-5721,24940,-31110,17788,-13315,15416,10107,-14665,874,-7168,18242,-1778,17553,-6532,-14228,-23022,-13022,15624,-23367,-25541,11095,4091,-1982,-31012,26612,16671,398,31859,-30776,-16454,-5210,24371,-17620,2258,-8203,-30492,-18906,-25309,12086,23772,-15055,-2028,4700,-1911,-25797,31345,-3397,-29552,-29250,3961,24511,996,-31256,-10563,-14517,5559,11152,18213,-19393,-26123,-28586,-17440,8603,29066,10965,22896,30277,-22928,-20470,10833,27047,-20828,27980,20403,20819,-29264,11194,16162,-24030,6347,-22476,-31227,-21836,16467,-11602,-2324,1982,26488,4331,-26952,30565,-28287,9165,-24015,-7217,28138,14309,6420,-7312,17084,24240,27915,-19014,13070,-27185,-220,-30519,-27924,-8485,29081,23189,-18848,-202,-26234,19679,12559,-20209,-12121,19699,-12324,-9582,22951,-5537,17333,16777,-19612,-19251,-9722,-13260,11005,28440,-16683,-8670,6010,-19395,-8952,27286,18758,-410,30033,-19802,-25674,11181,-32586,-16131,-30323,28379,31879,-828,-3236,19225,28762,13607,-157,-1506,-6942,17811,-3948,28027,-25056,20312,15716,29494,21540,-26090,1659,-13327,8547,4330,27072,-4823,-6773,15340,14502,0,-10172,-32593,-30738,-5271,-21642,-24329,-25781,-5383,26990,-11857,10730,23612,-3851,-23255,-12695,7034,11420,11638,19998,-20637,7245,-3116,-4658,-12681,-16465,-25164,386,3623,8984,-3148,-15253,4299,-12782,-17864,-6349,30092,-21287,4911,1372,6409,-24885,19211,21582,-3491,28566,-12972,-19218,-8530,-30178,-29519,16006,-4224,-28285,16277,-30556,-26045,20389,3347,30339,-2752,24454,-11680,-28639,4930,7185,-9306,-26583,-12325,-10714,18034,30923,13339,4398,-5927,-29161,17120,22626,18809,22835,9638,-19953,-7092,27378,-878,20286,23693,-5248,-28321,-22464,164,-31006,-2745,6411,29060,-14936,-22077,-23316,16906,6943,16606,-11903,4942,102,-27694,-23728,7539,1977,-6398,-5704,-5966,4193,8719,22730,9583,-17869,-24842,-4089,15511,-29159,-28926,-19397,25114,6564,6591,5961,-16147,-12249,15229,30072,19461,-29520,25378,-26520,-13747,-3061,3343,-22699,-32705,7458,-22337,18791,-14542,14863,12414,-30981,-15530,2786,22396,477,-16766,-30857,-13304,-15721,-18466,6649,-1265,9494,30929,-30299,-10238,19895,6671,-14789,-9901,29956,11121,-32496,27753,30834,-2778,-3583,-7092,-2438,-11682,24194,-7016,3627,-3769,6666,-31199,-26579,7394,-9582,16868,-6779,9878,5220,21499,-10173,14204,-27962,28990,16594,-7705,-6575,8381,2272,27405,-22978,5126,25068,9836,22247,-22490,27409,32327,-21387,-12849,-30955,23964,-29141,-22849,-18381,-3021,-19498,-22089,27044,-628,26274,-5226,10425,12160,13818,-10786,-2334,31808,8199,11416,13615,-29257,-26158,3281,3733,24956,-11908,-13824,20273,25245,-26381,29346,27517,-9330,11077,-20398,14267,-21841,21767,-14549,-739,-20356,13437,22042,-22829,-11055,19862,3426,-22211,-5583,-16266,25193,-12510,-5907,28812,23849,-25736,-560,27705,9776,13376,13425,13540,32199,6094,17412,-4216,-12187,14195,27352,-16159,-18409,10640,-20650,10722,3907,1527,27514,-12171,1019,3766,-24036,30579,-5168,26472,-13176,2250,8215,18630,-28780,-20463,14155,-25147,-9268,-3105,-21067,11120,-14403,-4978,-8928,17247,1452,-14289,17923,-11289,-5037,-28787,-11698,-3970,29034,20914,9784,-876,11224,-25006,-27257,-16565,-13337,19748,11746,13366,-30291,-10279,-14174,-2686,-11562,-8135,-5212,17020,19586,19543,-21530,21833,19115,-22015,-21783,14107,31656,-10988,-13737,29523,-11246,-3074,6966,29743,-10253,31750,-29063,-13458,-11852,24023,-8625,5270,-3863,1140,-20354,20856,-7192,21021,-25650,27093,-28423,-24799,-30135,-25575,13223,10887,-18174,-31535,-29665,25594,-2324,30530,-20932,-8595,5269,-24280,14543,-16107,3771,-27373,22480,-9269,5348,10045,-30836,12071,19868,11435,2822,30751,24397,5246,12466,-13720,-32143,-19668,-22897,-8989,21373,-28006,27781,645,619,-27810,13883,4291,20349,31737,25726,-9899,27583,10710,8652,-26394,-3845,-11743,18489,15960,19067,20181,12527,14915,-26258,18208,668,-9859,32004,-14371,-5659,17291,22896,-17784,-20544,18791,-7449,9908,18593,19514,14186,-21104,2659,-2820,16343,10578,-10322,28591,13602,10346,-21254,29597,5226,-14883,151,-1058,-15845,5667,-32487,9622,3526,-25043,-15698,438,-31752,16723,5204,11067,20118,-13326,10069,-2703,8712,1584,-11735,-23034,-27980,8788,26206,7383,-25206,19631,-16987,718,-28118,-30037,31767,7102,-18366,4892,-30241,-26362,-12903,-27958,-27240,-10908,-18397,22874,28820,15669,-21157,18205,-16751,-30269,-29167,-18255,32127,30890,-19971,9452,-20300,12508,-90,17268,-32010,-5680,-9160,31284,15242,-21705,30498,-15097,11427,-28041,-10693,-7673,-29992,31318,-21588,-3553,-17107,-26402,20125,5468,-25950,-26435,-29569,12951,-7403,14165,2521,3465,-6833,75,-21215,9263,-13975,18822,-18238,-10415,27864,20319,-15496,16900,6793,25674,-6308,-890,18791,-1923,-16014,22883,-22926,229,-21334,27299,16054,28354,7730,-8799,-29913,-30431,-30880,11939,20173,-7350,-9572,-8515,11548,11547,26029,10452,-14259,13930,27156,-16379,16853,26194,31743,29602,-10110,-31665,-14521,-31472,11868,24072,-27328,-10585,-8180,2442,3694,-6050,10649,-12413,30104,-24999,31613,-13524,-25630,28075,-11534,14550,-29159,10660,10341,276,-37,-3883,3881,9128,-13518,-13438,26447,-11940,8116,20227,30609,11268,28574,18041,-678,-31777,28783,7063,18954,5396,-17420,31474,-3358,30004,-6357,8036,-19785,17350,-15264,14268,-1640,22454,-16659,22099,17937,-10268,-19568,10960,19628,-13971,8242,-16329,-127,3807,-913,-27100,-8540,-10644,-9168,-12247,25102,-20105,-11822,31276,-3295,4545,-25049,-8733,-13219,-17794,-26543,-503,8578,-16114,7710,2955,10213,-2167,-4155,-18625,31925,-4797,-487,28691,-22955,-9814,-5860,-907,24296,-13343,-18138,-14673,6441,5412,-28323,-22921,9860,-9106,-11892,28810,10810,-8142,25050,-13592,-10909,3345,-17991,8753,14509,-15803,-1531,17143,-20060,-14855,-11169,15402,29970,-19788,-19134,-18995,-20715,-2569,-29194,-20501,-16610,32314,-12032,6239,31465,-21292,6940,-31461,30649,-10786,-1113,4186,9058,27946,-19762,-22948,-11976,23586,-13080,-13981,-5038,10825,31928,-8451,23210,10107,-20347,-18718,-5866,-30312,-1897,-29350,-2544,14875,21628,-26898,9168,3147,19164,-2070,-21310,-15583,8044,-2810,-5199,-9260,8649,-19388,1907,-6270,-821,-6343,-16518,-597,11468,31434,-26371,-12333,-21916,-29774,10042,19763,12529,-6063,2974,17570,-19369,896,26170,32139,-24407,10555,19440,1478,10479,8621,31673,9231,30911,-28958,21623,9695,3878,27193,9356,6338,2530,29117,5127,30790,-15016,-19900,18893,17261,-24983,-6954,-9265,-32313,11004,-21688,-6801,6945,9179,-26402,-204,-17618,-833,21127,16869,28933,4006,24839,20100,31159,-29836,-4446,5307,10858,-28531,-15694,-14972,24256,-14979,224,28491,20988,10292,23435,-3279,10377,19127,-28345,-28181,-6626,5715,28251,4423,-22906,25085,9942,11127,-24952,-15833,30785,29135,-26687,-11671,-18204,-18409,-25512,-3336,-3506,-25993,560,22555,12621,-6495,-2833,-16462,-9491,-28722,27030,23637,11037,-256,-16021,26567,-24342,-17446,-9266,7594,16374,-30397,605,10420,20343,75,-32100,-30235,-15977,2096,-1990,-23662,32577,-25434,31917,575,-11274,-23475,-7407,-16867,-10504,15653,-17172,20124,12765,22371,-23580,-9930,4244,-18418,-10558,-9678,-27644,11997,9329,18893,-7200,-24019,2194,-25842,-25281,21789,-31658,12398,30820,20785,-12137,12838,27948,3858,-2436,28526,-10530,-24078,-7945,-21933,-30637,16577,11421,10081,9113,-27366,22851,7122,-13215,18898,13087,7166,21115,19520,-5950,3020,8537,-9330,-5253,11894,23001,15581,-21343,31550,-13915,-10990,22726,18391,32144,-29830,29830,18753,26349,-10543,-21159,-7650,-12469,-534,9430,-16671,22641,4202,10916,-1283,-20192,16522,-11192,4502,401,-23425,29434,25959,-25821,16671,-6046,4096,-18858,-4543,-30289,24674,6179,-6884,29292,-5075,17427,16143,-16847,9200,674,21387,-31976,20288,-17025,-25376,4163,-4258,-2915,-13471,31421,-19213,17847,9295,26629,28528,5633,22343,-7673,14575,19184,-15192,4180,-25127,-27807,-2667,-11357,-1057,-8539,-3593,-10891,25408,10057,28103,-18778,23769,20908,-11422,11395,28051,-26932,22953,-4819,21773,26096,-32723,25227,2096,-3352,-13578,5322,-26880,-22857,27258,-10625,29065,32342,8332,27994,-20343,-24162,-19323,-27421,-24327,-28233,12544,27223,5110,-10641,20832,13031,28120,29918,-10211,-31154,-13747,494,10690,-10845,-17611,-20163,-512,-17049,11632,-26621,14095,-2813,-3042,-1145,8825,32326,-38,4306,-4563,-2558,7116,-14220,-19446,-9267,23552,15248,-20279,-30403,-23287,-10455,9998,-5343,-7959,25982,-6333,-26628,24616,19645,17001,-295,-16391,-12576,-11312,12754,-5395,-4813,25738,-26968,-26997,-29388,7063,-12085,-7145,-17116,10576,-11755,-21418,13488,25020,-4503,23363,-204,-30894,5237,11319,11106,-23941,6509,30625,-5864,25820,-11544,5443,3864,-30788,13763,3149,31965,-14595,1593,1629,-24503,28852,22725,-12462,-5839,15075,-10851,-27396,-382,28991,11825,-7799,-8546,-4070,3693,3644,10430,-5328,-68,-20455,-9636,-6980,25753,-4779,-15647,24656,-6703,9237,-15999,6604,21839,15049,4074,-28172,-13224,15989,-31553,28283,-14710,28596,-1442,-17533,-31508,24621,-10121,-20707,-1058,13484,11411,-23492,-7826,5080,17588,-20248,-27479,4790,29763,-4792,-10361,7656,-17340,21054,-19048,28665,27544,30131,4983,-28871,12016,16078,14791,17153,-30643,-4823,28311,14835,-18368,-18508,-3944,-24946,-5,16567,-10536,31225,13080,-26399,-4800,-32598,13487,32265,-29222,-4629,32286,298,2723,-30742,-29704,-13894,-29638,-22827,18869,1158,-5342,-16052,26945,-25438,30459,-6107,26587,-4273,18737,15596,15209,12499,32000,12479,-13962,-4107,29100,29277,-12104,5596,-18063,-23421,-5570,-17591,-11399,-2276,-278,4158,31494,-2436,-32299,30722,29835,-5086,13284,11522,29620,8318,7200,-9705,-22930,-20957,4735,-16555,24155,-32559,-7494,1941,-21366,4397,1968,-26303,5829,-21889,29224,-30475,21928,2739,-975,-27535,-17858,-29017,-18261,-22625,26394,-3433,-23801,23839,21187,11188,-10369,3546,-24304,-15787,-20453,-717,-25024,6607,6684,-8480,-13368,-10845,-26145,10938,7019,-12872,19583,27340,-29536,29761,21715,23476,10000,-21486,21566,-30570,968,-11222,-27861,27880,2607,-5810,23320,-30096,-31491,25323,5645,-15973,5639,-17831,8728,18593,-1672,12054,14053,-19449,-6363,13304,5155,-27728,-4480,12893,1524,31912,-15350,-2938,-8630,-4094,29555,-30547,-16978,22744,-5907,-12220,-21409,4988,-3794,-12328,-13055,19669,-29990,-89,17123,-30835,-19740,-19308,-10467,28793,-22306,18701,-8788,9968,-13716,22984,-17868,18979,-2535,14331,19914,18272,-6132,15427,3064,27398,12093,-31387,-18370,30474,12445,3097,-32463,27578,23761,-6554,-8851,2337,-13765,3040,-26892,8917,29471,19645,10304,-13596,-8974,-12740,-17854,23469,32701,817,16736,14541,12911,-18685,-15613,-8491,-22802,-31329,-18883,5142,10471,19879,-26661,-23454,23590,21907,6733,-8814,4109,-31740,29872,8158,19858,25225,-21224,22043,23939,8765,-14918,-17101,9951,10892,10172,-14935,-13488,573,27524,14843,-26864,2866,15614,-29217,17931,10947,532,4487,30744,-4760,-2913,-31685,-5820,-12936,31704,22175,-4424,4475,-15412,26393,-13089,27434,-25100,28774,5104,6533,12642,19526,-6082,31444,1391,-10082,6977,23984,21229,14637,-17505,15040,-19001,14866,8677,1226,-18734,15906,26127,-12779,-14471,25623,13225,8143,-31331,-17745,-26949,-31605,-21483,-29357,-32472,9881,30588,-27703,-6929,2492,7302,-12648,-29902,-21179,19684,-7560,16111,18778,5615,11542,-1011,-17447,-18924,16572,25921,1723,10896,26724,25725,13991,26250,25948,-4156,-18219,-15063,333,16996,30965,-7991,-10540,14472,-6347,16108,-19597,-6291,-17592,-31496,-28933,27177,-2195,-12353,18267,-7656,16520,-15280,-1770,-29751,-6299,-24067,5158,-31268,-17421,25830,-7283,30855,13292,17287,-4054,-5272,-9691,28399,2569,8472,-19099,22698,1722,22414,2151,-24858,25440,-28338,31350,20848,14669,-20529,-27705,-14107,2172,787,-16112,21336,5275,-9924,27512,17917,25818,31409,-11262,19903,30198,-21869,-2955,-30161,-3849,30897,-13699,19446,31152,-20186,-10656,-6476,-19285,2042,658,-28231,-10874,-8791,-5438,-10975,-16108,4931,8927,-4428,-29051,16485,13448,11220,11713,-17404,4086,-11296,-11156,-11515,21358,13919,-26544,-32391,-18063,-1687,16114,-13664,-9090,-18284,31120,6433,-15551,-8989,32413,26553,28202,6594,-20039,27990,12180,-31596,24573,19752,-22278,15661,28847,-7242,19342,-4511,-109,-3775,-22056,27806,-15528,-12932,10061,-27545,-10582,-31173,19104,23292,-7469,15922,8745,-10768,8268,29579,-4026,-25387,-10005,17893,-20681,5132,-1934,-22500,4994,-26699,-11571,-26018,-15626,9634,12965,-14027,-28054,1275,6749,18375,24850,-4399,-16405,-6161,-17066,8505,4328,-318,1483,10689,9450,13226,27869,15446,-31674,-9722,10262,16858,19253,-5270,-19001,-31343,22251,-32621,17418,16058,-7381,-16328,9015,-1669,4062,25166,-5282,17428,27343,27946,-5594,-7030,17824,14335,-25492,-6089,28688,-26468,25994,-27218,12306,8197,1982,-17658,-22374,-21934,-1311,-21184,25192,-14492,25189,-2238,-31547,-5978,-22455,24372,15746,24136,-19570,-22425,18977,-10120,20250,23621,-19678,31041,26296,-30416,15649,29581,-32110,-7911,-31955,12932,13762,-11530,2827,-9074,886,22296,-27161,-9088,23029,-22228,10139,-18970,24313,19693,-7977,-23011,7482,-9514,-26685,11568,13880,-7332,20953,-7127,-14454,21472,-16837,10863,-15496,9759,-10305,-27321,-11510,-10197,10685,25549,-3682,-17516,1069,15684,11362,-27619,-11949,-25799,14279,-4325,-12342,24090,-24699,20465,32027,29391,-5903,9690,-23924,-26066,28754,-15181,-25071,-32554,5517,29525,6626,13316,30810,-15042,-8247,-5497,-20880,23041,29700,-22191,9660,-8064,27258,17837,-9837,10341,-2026,-31803,-30041,21214,9846,10581,-2151,-19806,-12228,18724,6830,20263,16061,20977,3443,27351,10731,-25101,-25977,-23051,-32282,3032,-3158,-17792,13871,25323,19972,-9113,-31302,3945,-23486,-5292,22093,-14816,13401,-21419,26410,-2982,712,19666,31097,-5992,-14990,13388,-17502,31951,28641,10983,30479,-3889,-17773,30987,26138,28268,23413,13914,-5412,-16227,28110,8834,-18992,22991,21222,-11416,19278,-4556,12782,-19030,4683,26368,-2932,-14292,-15399,-7367,-6290,-8614,28119,5656,15546,22290,-29644,30275,-20751,-14733,29384,-20741,-5200,16178,29139,944,26355,-26762,-21051,-2372,-27693,-27560,28801,-12429,-5346,5132,8545,8585,-24584,-14289,-18185,29807,-17973,-4041,17489,28945,-14919,27614,-10064,24795,-13571,29709,-9720,10854,9659,13165,23540,-23563,9958,11910,14822,-26170,-23577,21510,-17473,-9915,21065,30197,29720,6596,-31891,-3254,-11054,16845,22031,22525,-28197,-8286,22910,9757,-26880,-16745,-13901,-28198,-14922,22919,-23508,22745,-702,-18411,18614,14063,-20301,8795,3105,19712,-26649,32455,-3405,-28114,-11660,28547,25980,-19068,3530,22659,-9902,29476,-26314,16374,-17941,5105,22167,5867,-3272,2356,19148,-20780,-32397,6958,-29847,-15848,24980,-3524,-23509,23645,-8425,14626,5918,-24375,-25047,29254,-21442,-2216,-24165,-27283,18631,-8685,3925,22872,27028,-21033,2550,4581,28326,-380,22480,31895,-11895,14382,-28088,8718,-16864,-6075,-10771,25529,-22845,-19131,3475,1057,18694,9993,30601,-2451,-21608,653,13652,-26201,30230,20933,22888,5942,15485,6130,-29744,-23328,-27045,30368,21529,10008,7360,21273,-9017,27166,30873,-28719,28178,14198,24718,29093,-15002,15247,-16336,6321,18893,7603,23599,-12234,20192,9394,-6307,-2394,26980,19840,-30368,-15192,11395,28162,8523,31927,-3153,-3051,-17234,3464,-14843,-7249,20158,-25191,32236,8107,-19926,31116,-23277,20484,-16272,-4176,-30148,-27778,30872,-3109,-18132,26315,-2044,24698,11376,-10347,-32306,14181,-5900,-23286,-3009,16713,-11569,29135,27076,-22505,5673,23883,-2950,-31562,3410,-30243,31080,4243,-16889,9396,16019,-29242,597,-14788,-12549,-12470,-4410,-1576,9806,-26684,23089,-1378,-23368,150,11658,-2594,-10123,28680,-8804,-13389,17606,-798,31149,-20411,-31767,30944,10722,-25361,-22859,-22844,-22561,-29524,-22782,12627,-25815,25865,-16763,-31121,4460,23909,-6911,12567,12000,32574,-10642,-3247,-21828,29822,-25084,-3044,-8370,3953,10414,-25324,-14929,-23160,-5139,18280,-4601,4496,-27024,-22207,-12043,6808,20846,-4105,28569,-27622,19422,-12396,398,-25930,25611,-25430,26629,-16928,7049,22571,2771,-7217,11769,21778,28677,-1314,12930,19227,12960,-10937,29181,-20735,4384,-29837,-10028,7370,14361,-908,11499,-11851,22215,-11535,7336,-1247,10202,-3525,10820,-30869,13025,13888,-9902,-23337,11649,-2445,-30969,17178,-15198,26848,-9712,-25981,17979,30389,-8244,27573,8449,-21648,24292,-32641,-795,29332,-28343,-13245,-22193,-30013,17978,-32531,6433,-11144,-15106,14355,29349,-5165,-19172,-16632,-25593,1012,-23511,28518,21916,-18555,17394,-24196,-23111,-23384,27722,-2263,-3255,-20039,19535,-3222,-8369,-30332,7200,-11832,-13910,32132,18447,4831,23705,-13830,29179,-12324,-29568,30507,-31304,12293,18828,-23621,-1499,-24611,9626,595,441,11165,-14027,3547,18320,-17787,-6141,-30681,17234,-11823,29079,-32336,-26868,15372,9919,-22755,-1662,1459,12385,-28389,-10112,1341,20287,4548,-31506,-24714,-22259,24080,-11268,9942,28309,-31801,-2091,-7304,13220,11535,16620,12443,31523,446,-22884,-22055,-28509,26194,3601,11959,26389,-26922,8516,2156,3487,21860,3857,31568,10275,-13005,1534,-18904,-25756,30932,-28152,29327,25111,29124,12796,29909,28477,-13382,10654,-30340,15816,11320,-17044,-6900,805,16850,-20813,232,12486,19879,16589,28287,7609,-9473,21178,14711,18933,13572,-12810,9700,-16216,-25418,-17035,28508,19418,-13577,3362,-22956,-23739,-11076,-28496,10681,22343,-4923,10272,-11266,-5426,-24559,1866,2765,-10649,17714,6594,-18556,11166,7355,-19573,18357,-8375,9974,17793,11314,-4295,30415,-19883,7264,-6935,9329,20044,-7178,-23441,4446,20882,-10745,-31606,-15729,-11188,-7791,28936,21878,18661,-24809,-25770,2822,-22958,-13060,-8187,6766,-19609,12847,-30738,-29154,-17363,-31060,7853,-8821,32172,28759,-27522,7816,13581,-1653,14926,26786,27427,9989,-26697,-6465,2568,21001,-29643,32516,-14472,-5343,3967,-29478,26976,-30858,3041,4185,32550,17750,-20457,5732,31800,14126,30757,-18787,-14588,21566,-11126,27126,30597,30910,9323,10372,13251,19151,13833,-26094,4859,15252,20149,-720,-10372,15072,12538,12733,-3612,-3591,-3495,25599,21420,24973,25250,14720,23038,7838,3722,-1547,23053,21511,-13380,29150,26003,4712,26456,4881,7609,2512,-8058,19351,-24509,-15775,22599,-2047,882,-6711,-19878,17895,-5715,-25379,-9468,27700,-31545,-28968,-22541,-24939,-28286,-5044,26944,14086,-5158,-27800,32586,20084,-30229,14685,11773,31219,-28482,6531,-29659,-25062,6707,5596,-32599,10981,28552,32232,4501,-2552,-26917,-3565,-30925,14979,19944,32153,14367,-9765,-14709,4633,31379,150,-10252,-8356,-12589,31180,19247,610,-27519,-6165,-12219,-23700,-22603,-4187,27310,-31654,-15454,8215,26199,31396,22954,-27056,-10995,12470,30466,-9634,-5024,-1742,21110,6568,20290,-15042,-410,26810,31864,11695,-32160,22459,14682,-32429,16409,27280,21397,106,32072,19127,-19962,-24456,17108,11577,-13523,-722,19629,-28180,-14007,-23839,-24764,14562,10758,30512,11677,-18300,16915,23053,9357,-30978,-18473,-29461,-11509,-25935,-3968,-25173,32213,32091,9297,24390,8297,-28958,-12796,14434,9603,-12928,14674,-15043,-20698,30061,-7611,-11241,8722,-17360,2464,1380,1850,16268,-27237,-7248,-14863,-29869,-7697,31356,19468,-26771,13331,-1873,28260,20127,30879,-21271,24351,-12853,16828,-22318,1856,13087,23676,-28334,-5767,14870,-18441,25130,5064,24048,10141,17206,22665,-16409,14058,24559,-30637,30452,32604,-32502,23349,-8836,-25804,13166,3116,-3397,19294,-1412,-588,12151,1045,-10670,-2578,24975,-1994,-19295,18837,29389,-23037,189,7208,-27779,-8871,29393,-17628,20932,21070,-11744,10776,-28468,-6965,31643,27402,-21061,26772,-10175,26298,-28658,-3981,27340,21855,17993,-2638,-16736,-20331,14731,-29593,25728,-26476,28782,-12340,30155,-15367,601,8605,-18074,-15619,-25724,26146,9611,26276,29978,-30176,-17812,-28980,15431,25664,4170,4863,22272,16878,21164,-23431,30770,2716,22692,13692,18179,-21759,23774,20558,17167,2097,-32017,-24642,26329,-21981,4549,31862,19965,4966,14339,-24484,3351,30880,-13913,-25457,20775,-638,16020,11274,-9140,-17255,-8327,-13518,-12325,-25866,32718,17342,18384,-15155,18084,1241,932,-18628,-27957,10112,8711,10235,2459,24891,-26146,27124,-30628,-4244,-17240,-21516,28907,16788,-18444,10122,16084,-17785,15804,6471,24229,10415,1434,20914,16313,21544,-17905,-25598,3989,11069,-15714,-5435,-22872,-25798,26986]},"conv4.bias":{"kind":"q16","dims":[384],"v":[10969,-36532,29943,13843,-463,-28955,-40831,43928,-27139,47654,-20679,47018,58984,32280,-64061,63021,-25548,48730,5138,27031,-43303,32675,46461,9623,-58013,-40594,44652,55942,58578,-14019,16434,-1574,-49819,19655,-31226,13754,16947,-13938,-31669,-23080,1450,25544,-60738,-36469,8495,32281,46414,-51428,801,-9274,49474,25270,-45733,-48719,-63795,-48013,23334,41268,59631,-54764,-10188,-18343,43183,53268,13134,664,-5524,-62091,59680,-52701,-39729,-58995,30523,10875,51858,3433,-45184,-31931,8565,-14634,-33208,-41012,25954,39385,-45883,49547,50254,-23777,6507,-55713,-12643,36981,-6607,-61414,33350,-19321,24261,33381,33275,-39567,60620,-55356,-2954,-1154,-38218,-45436,-61336,-54172,9653,61896,11041,4400,22174,27797,53976,-53334,-35376,-13291,35348,36931,35626,45181,42153,23980,-58189,-40236,23772,61159,-11598,-45605,62245,-49050,50974,-11597,1173,-7045,37201,-60484,42561,-19847,-572,-16082,16243,-50475,-40634,-46119,-50909,-48494,-27042,51487,26341,12121,-38401,-23902,30785,18393,-61037,65198,28540,17093,-55824,-50834,-30967,10072,-51461,-39545,-59968,-35489,17453,46594,-19198,-58922,-637,-53162,-45287,-16528,-36220,43406,48703,29375,-26067,-20382,49913,11378,30664,-7864,-26226,-26063,993,6445,16664,-2547,-36068,-34046,55116,-31475,-31432,60303,-29128,-6928,18768,32130,-9819,16292,35020,24215,-5855,-29002,27530,24851,-53440,17612,18359,-51619,59630,-5804,30195,-62496,33005,8526,48804,-4504,-35963,50206,9832,53,-20062,-37838,-24615,23821,4484,-63949,18124,23718,43538,36076,52917,54540,5489,-19114,45502,-14237,26575,44489,26799,25327,21981,60953,-53350,10302,-62081,32001,-58764,-40957,53469,45956,-60806,41876,178,43776,-21212,-17249,26111,9268,58646,-38877,-18387,-46860,-12570,36344,5753,-58416,-4233,6771,28359,38416,-19247,-35568,49978,-39569,29588,20335,-63642,9881,-37214,-42806,43966,9749,15231,-46145,26763,-37236,52341,-33563,-8820,-49938,-12681,6659,-31900,-14034,44462,64030,28776,-44674,-22488,-26776,-2192,-49609,15625,42286,13579,-19402,51971,53542,-65435,-41477,-61381,-48547,48961,-63353,48286,-8059,2175,10912,-21408,40375,4236,-63271,-59873,-14106,-1997,-24845,-34419,22865,38108,49914,63844,-36270,13483,57312,-38474,33118,10892,-7408,53827,45859,-43477,-50705,-27577,27747,39042,4357,7540,-25593,-24098,-54235,-6996,2112,20405,-9023,16083,43184,-31659,-61665,58313,-37214,31367,29011,38521,58873,54726,-29924,-38496,42860,26637,-65482,51047,13500,-37844,64675,22618,37866,-14386,13484]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/hyp_y.json b/wai/ops-conformance/sets/jpegai/weights/hyp_y.json new file mode 100644 index 000000000..254efb4d7 --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/hyp_y.json @@ -0,0 +1 @@ +{"conv1.weight":{"kind":"conv","dims":[2,160,1,1],"mult":102,"shift":28,"w":[31995,24478,-8608,27949,30095,30167,-30070,-18015,2353,-3730,-22606,14260,-29684,28954,4966,13233,9378,22079,-229,30353,451,25608,-31640,-29431,-3749,-15540,19434,-21153,6783,-24286,-16317,-24695,20803,32211,26762,735,-22286,-9940,2602,6205,-31974,-8257,-17094,19724,-24111,-1320,13213,5958,-11636,24771,17806,27258,-26889,-6157,16671,-6774,4773,-22737,15520,24841,1385,29801,-15636,10925,6527,-25439,15263,649,-6573,18276,-1766,-1037,-11199,-6800,-32094,-15057,11563,31969,-16857,1950,-30872,-6141,-25891,-9113,-24135,11852,25021,-11614,5123,15073,-12281,-10435,6099,-20602,-24960,-1137,10456,-12730,7203,20827,-4585,4625,27908,-20881,-1578,17893,16649,-2023,-23437,20970,8382,-28592,-9561,-2298,-23223,15245,-28269,-25906,-6725,11361,26090,-6872,22112,-20206,-10765,-8347,-12123,16128,25410,-29789,7158,-20428,25342,7387,-26198,10977,-12719,16384,28075,31184,-14546,-21882,-7288,-1004,4451,-18743,-4910,5706,-1897,26384,-30116,19769,23593,-14793,-15176,-31883,-6101,-20765,13230,11649,32335,-3604,29547,-32144,31369,3536,-4323,26504,-16632,-9655,29856,23195,31579,-24554,-21172,-17627,32396,321,28616,-28759,-27288,30648,5825,5798,-32243,23893,-8517,4877,-30548,23061,-7445,14043,-14466,10246,-14582,-29633,6336,25485,-29713,16321,-17626,-2222,-27323,-30045,-22977,30831,-27260,104,30822,25417,433,28429,-16368,26813,-4592,-6926,11081,-12178,17853,-22305,-2874,-8460,29607,5855,30697,17887,-31116,27097,-5796,-3744,-26947,31069,-13778,21180,-13179,-19093,20333,3117,5531,31720,3825,-28021,17557,12183,11726,-5253,12014,21628,-22032,18223,31611,9606,13982,-12449,-13139,-10603,23236,30827,18063,-15359,-22704,-15624,20146,-2898,-15211,-10965,8003,23826,9267,27716,-18845,728,21528,-25875,2349,-3830,16327,-26756,8951,-990,29391,-16983,-22871,6366,-10269,-30707,-13289,-18074,-9071,26463,12470,10748,-28270,-27534,122,-21007,-6018,-14534,3052,-3769,27490,-16955,23376,20878,13290,-6072,-9941,26581,-26777,7029,-18763,32172,-32097,-30325,-7178,19795,-7244,11460,9977,30081]},"conv2.weight":{"kind":"conv","dims":[2,2,4,4],"mult":1024,"shift":30,"w":[19445,25839,5687,-22501,-15766,-14488,9072,27347,-23906,27539,8843,1030,-32423,-24611,6242,-32465,21351,-842,-12138,24205,-3288,-1248,-22264,288,896,-14142,26564,18739,-16890,-23512,20998,7651,6694,-14642,-18286,-21086,-27370,-20115,-983,-32070,21213,-28713,17271,-9426,-26868,-6652,31867,-29747,-8160,20223,-23161,19791,20641,29450,-23967,1085,27150,5499,-9888,-19180,-19762,22972,9625,10559]},"conv2.bias":{"kind":"q16","dims":[2],"v":[55716,-40989]},"conv3.weight":{"kind":"conv","dims":[2,2,3,3],"mult":3641,"shift":31,"w":[6107,30400,21150,-24577,18845,-21140,19606,-10572,28715,27819,-27012,-3845,-26792,26066,8563,12824,-3291,-282,30882,18066,-11651,-16905,6649,-18368,-17557,13787,29425,-9740,18145,19956,17295,11230,5389,-29294,-20051,24956]},"conv3.bias":{"kind":"q16","dims":[2],"v":[-34198,61063]},"conv4.weight":{"kind":"conv","dims":[640,2,3,3],"mult":113,"shift":26,"w":[29025,-4412,-19352,18838,-584,-5580,-28137,30733,10964,-494,19496,-8195,1394,32467,30499,22195,19302,18446,-22143,7699,-5832,24752,-2354,-3547,28949,18937,-9632,-26256,-9871,-911,6882,-16632,22901,-9053,-4969,-18896,4809,-1142,-8164,34,-12110,-31155,-17777,9554,19053,18695,-26702,21903,26829,24300,-2579,-32530,4313,30743,6328,21747,-28029,-2715,565,4156,-22094,-20615,11444,-19444,12214,-10628,-22670,22039,22675,13235,28590,6302,27229,-10767,15905,8746,15526,-196,18693,-13618,16680,-8576,-620,10948,3599,12129,-10644,-21609,-18782,-348,-9531,30596,-31829,9850,6348,27910,3088,19796,-14611,-4734,-11283,4115,5528,-20673,17209,30464,28946,21724,32314,-18048,-18467,7163,23629,-13139,22848,1406,12516,3591,31012,24620,29903,18492,2278,-7074,16238,-31496,19009,-30934,-14277,8825,18527,22848,-30795,-20787,28628,-18961,7489,-29823,32026,13533,21612,13501,-94,-24252,382,29907,11624,-24819,31832,-14166,20756,13546,14438,32072,-31649,16222,-20143,-10261,26036,-21121,24662,594,-7861,20051,27873,-16345,21182,16113,-17548,13422,18967,3472,26433,10432,-22416,-11836,-20226,9927,28975,-4560,10215,-28615,5937,3998,29247,11312,29595,-5431,-2082,-24230,30582,-4651,2862,-28554,-20573,-24096,16154,-6414,31222,-23986,5895,-5538,-1871,18141,-24554,4132,29641,-5492,-16269,13949,19087,-14794,-26314,-32098,-7822,16264,-11470,4776,18151,-7665,-29074,-4642,4486,-30666,-1547,5791,12631,-679,-8931,-3898,-13245,-14157,6088,28943,-26307,27936,-1554,26653,-12290,-4913,-24564,766,32123,16227,12371,21764,13943,1968,26265,2364,-14930,-19227,-2184,18189,12510,28359,-14120,14261,-29802,29584,-5602,24250,-4366,-13756,4672,-11844,14052,13055,-29254,27599,11517,-5141,27778,-22301,-13214,31260,-18700,22851,5525,-28235,2004,-28183,-8623,24781,14046,-20748,-12171,-30193,25573,-6618,-8640,18442,24689,19256,23072,-18898,20984,8218,-9247,23982,8917,83,-17565,-6450,12734,9002,13530,27719,-29307,-16950,-16541,-3831,-4869,13822,-22839,17188,-31998,-13441,-7618,-11920,-22318,24154,29004,-14814,-27383,19816,-6950,-992,-31171,-3521,28153,-1920,-29095,-24420,9215,-23315,-13909,-7142,10649,31325,2135,-28507,27255,-19817,-18904,-10528,32610,-31495,-32047,17010,-19329,-15283,247,-12765,20951,-3299,-102,18078,-6365,-12762,6624,15194,-18175,23882,-3432,27812,13780,-19286,15561,26003,-15298,4067,-11332,-7472,-26899,-6901,-22604,9690,12884,-17806,-29177,29966,14123,-14320,-23589,19352,875,-28681,-7821,-20242,14048,-7378,15115,16925,32670,1555,18047,32568,32346,-28644,31070,28549,-19047,7879,-20278,-25897,25124,15786,-6798,-69,2345,-20643,21131,-12438,17474,-4025,-7833,28715,-8350,27110,7650,-30010,17761,-24633,-12853,-15737,23106,-16198,-25819,-10418,-28854,-16539,27843,-18018,-12362,-27173,-5791,-8317,-2625,5217,7074,-12293,-20224,26903,17703,-15651,-10079,2133,-6958,8830,21753,3763,7085,-30640,-31732,21447,12351,375,10926,31235,-17559,15971,32473,3876,16661,30478,15322,8633,30601,15084,-13813,-27170,31944,20426,-18154,10875,11758,-17948,13204,-7739,-6081,-14358,18297,22911,1713,11610,8997,-21890,31973,-15212,31004,-32678,6451,-1604,-16789,-32117,-22347,-4364,25953,-5053,28404,-30355,-17369,12289,3389,-9277,23347,24802,1764,20196,-30921,25229,-252,7192,-12236,13336,3117,1051,19709,1939,6012,8851,29587,17272,11951,-17488,14259,-26428,15851,-17815,26185,-27372,6812,-24657,27078,-28636,9473,27988,27521,19363,2268,16235,15530,12360,-23521,20915,-21421,-4829,-157,-18946,31030,26423,-28544,13947,-26147,-14855,-31149,17942,-3529,-20908,9384,12516,-14672,2368,9527,26242,-14767,1588,-19823,-8153,-10441,2910,-12488,12598,13907,-8305,27908,12628,19870,-11625,28957,3980,27856,-18155,4877,12102,9721,31404,-30124,-26944,-14488,-3672,6080,26538,16124,-20733,-4684,8519,-25436,26966,-19274,18970,-6160,-27794,-26289,20903,14293,9761,1636,10374,6246,2275,7609,-11559,-9687,-2787,-15914,-16669,795,28813,14447,-4186,2547,27342,32092,-6908,-25699,-21124,12298,15710,-217,5615,24227,-9214,31869,13219,16763,28652,19666,-23428,8637,-18128,5480,-18147,-5736,-28046,-13454,-20016,3095,-19915,20880,32221,6100,12465,16819,-11824,17682,6532,547,-18686,-1534,-22541,-25906,6014,15469,-11098,31265,-15086,-12759,16679,27481,14030,1862,2896,-10776,-20130,-20082,-26359,-12486,-7401,10548,-20961,16391,-1623,-27630,3500,17539,11464,24999,-28427,9883,-28106,-18301,-3476,-4455,31294,-32602,20054,2980,-29047,-31606,-20575,14643,-29145,-31679,-13955,26601,-27884,-29171,9120,8984,-19547,27009,24237,11812,22884,21657,-1389,-16280,29781,30924,8124,-20945,31103,-20272,31566,-27043,-4040,28489,8907,23980,-11700,13392,11299,-32707,-8068,-16243,11157,-5135,29509,30807,1490,7700,24463,-31542,31746,30504,-6509,28758,-5887,-757,19029,-22849,22335,-17033,5002,31507,3417,18046,26941,-22388,1223,-3755,12042,-4854,-17610,-16692,-16874,-2293,12241,22870,-31920,-14338,8323,-21874,5909,20263,-4952,32759,-25217,24782,-7469,10352,24665,30885,-20073,-20722,30573,-31615,-3284,-15473,-17558,15371,-25209,15109,-13956,-1814,-30269,-20484,8366,-23846,7162,29503,-29229,31269,-15971,5302,-18957,-22874,-15855,22503,-27602,5776,-20049,-7316,25915,5862,29196,4742,17756,-21804,-23874,-25429,9375,25800,11832,-15670,26948,4795,24590,16405,-21019,16628,-32533,21359,11560,9699,7485,2754,-8081,-4798,15038,-17872,-30162,14084,-18170,-15136,-19428,7488,-16257,16446,5480,-2941,-17819,24910,31592,-9341,15961,28188,-24337,28503,12529,-7382,-29747,-16268,30161,-16671,-29155,-6857,15803,3813,-4997,-24878,13648,-28930,-25810,-27293,-10849,3980,-16889,4589,4723,-17279,9497,-15051,-13976,-13294,20551,25820,8442,31174,17405,-1566,6834,20701,-13966,-16157,17044,-16608,16341,8995,6353,-14806,-10139,22581,-1884,-24576,3347,15523,-6418,-14908,-4217,-30761,21343,27881,19708,-18880,-30,-9114,-7240,20551,-5360,-1012,15277,-4408,-24275,28626,-19874,11731,13772,5303,3902,32087,-26877,29761,-32386,-48,-9626,-6413,17677,-21677,6806,-25897,-946,-10130,9973,-17631,19595,-8004,-26641,-9132,-18751,-1449,13512,-18688,-22221,21801,24095,-20649,5310,-16206,-15443,-31821,-32577,-17358,29476,19165,20180,24823,4066,-397,32075,32114,-2631,-14001,-18337,1097,17081,-22527,-8750,14879,-23431,2163,28398,10918,-19003,27466,24002,-25175,-6213,-25588,-26233,-25434,9475,30467,4314,20843,4593,23027,18442,-15207,9042,-29502,17644,25138,20773,-16937,17542,-7525,-28139,32368,-6962,15180,-8738,-2484,19503,-8617,-27377,-10537,-8504,-11768,5377,26679,-16126,-28201,12463,12687,8899,-26159,28219,-18819,-9872,-25083,-32163,-30418,-14556,27,-18493,1428,-23231,-21080,23940,-6639,-7039,-19127,10685,-18454,8653,11497,12971,26413,-10941,14237,-8584,-14675,-30015,9086,-24916,-20957,-13304,28365,11217,9214,-24188,-15759,-5571,25414,23571,-19507,20568,-29845,-1349,-18866,24331,7066,27003,7833,-22437,-17158,-7886,30614,-32076,12915,-32014,28011,30326,4555,-26921,-15467,21934,24083,-27090,-12303,-1092,9995,22829,-9850,29694,26339,32391,11014,-23538,26292,-25831,3750,-8742,13980,21179,-29839,-3016,28447,-1122,-21906,-15671,2320,27228,-6379,-20686,8438,-7365,20749,10324,-26201,8753,25210,18591,25766,22624,7198,3496,7906,-5951,2591,16321,-7999,28019,-27823,28724,31573,-17453,24814,2965,-19301,30949,4635,31694,28200,2002,-767,-24728,7336,22550,-19540,-23274,-29570,21850,-23649,11285,-28297,31189,-2856,-21550,-28305,-24389,29560,-29518,9558,31899,-22101,-32137,-5345,12812,-2632,22399,-6734,-23766,11592,-11205,-24606,-17808,9432,7602,22142,1386,8457,15518,-23225,-29777,-21831,-26558,-257,-19638,12119,-27842,-20077,15914,-9186,1211,13791,-32631,302,-3756,1973,25087,-28455,3636,-27885,-282,-17946,24227,14181,-4224,-31511,-14468,6433,5794,24893,-11758,-30975,2168,-9180,-8536,9472,18944,-14475,31714,-17962,-27920,-15970,18922,-20699,-2569,-29810,-25127,25980,-18641,-15360,-17328,-8498,-12923,2701,28693,20089,9969,31417,5969,-6468,18676,-14265,-25210,-26973,-14816,17484,-16820,-22164,29266,-25340,-29046,-22814,-19611,20832,31420,3325,28455,27219,-12003,-25048,-4190,-17842,9754,-9044,-10132,1193,-3928,31739,-10666,-15769,-23561,-17342,10337,20826,6473,-7010,20362,-2812,-4050,-5714,-6693,-29980,-9734,-2384,24779,10725,19829,-2994,818,-31582,3814,3795,182,-16481,9542,-55,-9962,-18989,18,-11077,31844,1828,-16364,-18993,28139,-25564,13265,7635,5353,-2249,-29088,-26746,-9947,-27481,-24640,17235,-26687,-6443,18513,1147,12364,-14618,19427,-28085,22534,-10054,-28544,29505,-26225,11616,7217,27818,3734,-28234,-12144,27669,-20111,7213,29093,-6436,-3593,19634,-21970,-27432,-6261,2760,-17340,-14777,11535,24805,1684,7957,18461,9535,15234,19640,-13479,2056,-28959,-10663,-4063,30139,-8577,23527,-7635,-6341,21941,-17048,-25797,13608,8046,-18926,-23094,-22409,-1064,-22883,22231,-30901,10041,15594,15601,7061,-21504,-4496,-24225,-5229,-16813,-25747,-3523,8713,-4253,28989,-5159,6833,-10563,-15553,10892,70,-13811,2448,9219,19918,-17301,20781,12034,-28681,31700,24476,20808,11260,-12572,5190,30735,14356,21571,9764,17955,14000,11949,-25484,-22537,-9209,14864,-30959,19983,-14823,-6619,12043,15475,-31938,1714,17063,520,-11759,-38,-26750,13189,7496,8482,14325,16229,-16953,-29784,24770,18685,8033,-7456,-30513,9548,6236,-25149,-28012,20663,11570,-9564,-27480,-1474,-25625,-5763,-8112,22547,8236,12182,13718,32760,-1940,14106,-28520,32078,15723,14167,32610,-8173,-20720,-16520,-21628,-18109,7936,19872,-13651,-29610,-21015,28049,-25332,20373,10044,-29800,31065,-9365,-17946,14843,32397,13941,-1248,19746,7736,-18313,-23279,-30375,2919,-7494,-31224,10822,23140,19962,-18925,21362,-26576,10588,27481,11132,25325,8909,407,-25410,30360,25539,1366,-71,2269,8146,-19417,26091,-6453,20921,22674,14791,17788,-1214,-22903,-32628,-3292,-10556,15650,-31544,-11457,23027,-6723,-3099,-8052,3532,11270,-7665,10060,-14845,14313,28427,-21152,-10379,27501,16880,-3859,-7655,-6886,-28144,-3966,-6553,-3740,-24076,-10771,-20365,-13953,-10824,-17801,8086,-25989,-2391,136,-29592,16893,-14097,9780,-23449,5111,32479,-12189,24142,-2809,-26209,26552,28811,-16579,-25621,-19670,22222,-19323,21077,-25758,27265,-5988,13257,23480,24365,-1512,4806,-31790,14351,-12875,-3732,25783,30590,30839,25871,-7150,-30481,4683,-30956,-8519,-20848,-6756,-32473,14621,-31,29579,10979,22049,-14385,-4996,21309,-4081,13274,25267,-24344,-5644,-24405,18525,-1107,-31930,24709,-27522,32638,19877,20205,19360,-21762,30045,30983,-18859,-31151,-18211,-11901,9252,617,15227,-7702,1487,2909,-10720,11890,2594,-16628,4848,2982,-21280,28543,26904,-2624,-21505,6629,15771,-26100,-11692,9629,-2867,-9957,11097,-31075,-6401,-25987,150,-642,-6078,-19028,8199,-31453,-29637,-3091,20609,-23367,-23265,-32346,29460,17111,17048,-1560,-15778,19759,-11098,-27886,14725,16587,2786,14031,-3554,-5221,-9941,-14126,-28177,18050,-6257,-23483,-2755,-32205,-128,-30944,9907,28602,4385,-20453,-26262,-28888,15147,-26310,30692,-19056,-23729,23874,-22643,-20948,-14233,-2028,-18612,8085,-2269,-16416,7396,9369,1967,17106,-21947,-14140,-23709,-20763,-22320,-31591,-5439,20738,-14125,3140,-2889,-4494,-3642,-9844,12503,1761,14648,14963,-1424,22049,-4179,31007,21058,11335,12005,22437,26224,28482,-15853,29099,6112,-17160,28284,31981,7271,8882,12755,21001,5848,-8246,30060,-22176,14945,8646,-31239,-17086,1839,24717,23188,-5775,-30791,30080,-2879,11648,6779,22367,-12677,-6619,-26078,-31558,-28572,-26876,-3730,-25962,-19196,18748,-8634,-7696,-2757,29925,4650,27429,3523,18706,-18779,3876,2819,24628,-9888,18286,-29193,30126,-898,-11893,-14086,24233,-12116,18885,-1884,7359,18567,12066,2832,-27171,-21105,-7305,-29627,-26159,-29005,-7305,-12475,10623,-27599,-4263,16281,-21555,-5287,-14337,-31125,15787,27286,14151,-21251,-5230,-31086,-1445,-18874,-9076,31729,-11751,1316,-12174,7235,-16433,-7390,-29857,21105,2557,-7864,26525,5464,23709,23385,15321,30072,10163,-14805,-31211,1072,26134,22420,-19463,4641,26341,32160,-32393,27715,-10172,-17634,-9144,-17381,-27770,-14633,-14114,17845,29928,-18046,30306,-18488,7833,29417,-29028,9838,27972,6021,15140,-3963,25200,-19815,9137,13063,23214,25466,-18348,31087,27111,18312,-2506,-19832,31807,-2298,6958,-26236,13556,22000,31399,7771,25530,-23790,-31927,-16735,19016,457,-6099,10628,-22800,29251,7412,12653,16440,4902,10331,-24190,-7420,30617,11674,-3829,30106,-4993,-13552,31889,-9943,-32218,5599,-22834,26566,-15112,15163,26121,-20906,22990,20896,-11572,5432,23204,20095,-26363,32494,28975,30241,-1036,-25479,24513,19929,7063,30796,-8445,-5879,8949,24971,-6852,8516,-9383,14902,27686,-32764,6633,7423,13359,4544,-4716,26378,-2687,-31312,4350,26875,-14134,-1520,-3739,17646,-22579,-6304,11788,5589,-9668,13578,-1188,10374,-13230,-19748,2781,19679,-13631,9852,6638,-19138,-13786,-7120,10593,16159,13358,-3842,31629,22186,-10227,8555,-23620,-11511,-2301,21298,-21804,12143,-11523,-5872,-23017,29352,6493,20371,1625,12748,28619,24283,-10246,31255,7794,-11705,16432,-9700,-16074,26496,-6647,15577,21085,-11422,-8336,12220,-24916,26100,24612,13450,26301,30933,30274,28738,-18202,2794,31889,13384,-14222,1116,27726,7358,-19723,12132,-29072,14961,-18361,-759,-30425,10872,-2348,-32229,-30799,22304,10629,7273,-4653,21395,18344,4370,5282,27042,31605,-25909,10417,25410,13714,1742,-16152,23331,-2839,-30491,18983,-16804,4729,27435,26009,13976,26030,-21113,24828,16964,-5296,-12570,19887,-11231,22777,-32083,-18188,28202,21097,22580,-14477,-32600,28384,-23114,102,-18178,18213,-31954,-7816,19656,15301,4603,-11474,3474,-4971,21308,7395,14707,25741,-29675,2867,19243,-25564,2392,-12,-17489,-16448,196,19213,15134,13855,13875,-28204,22222,14706,-23660,4951,-11742,11112,16740,-12518,30785,-25881,-25590,9404,-16199,8941,27383,5442,-1602,31228,28612,1517,-22100,-10049,-2202,15703,-30937,17232,-21136,-25579,-22756,19417,19076,2833,-10413,-25538,-9076,23119,-21590,-6297,7728,-17002,-16930,-31851,32573,-28049,13104,-4984,-583,21452,3549,-5423,-24475,-22924,-5536,3330,3322,1981,-6063,-18346,10072,-15574,-9616,17923,-2843,-30603,-23668,-13786,441,8540,-31343,-21726,24081,-941,470,-29877,17333,19321,10659,32697,-8128,24153,-18804,20591,-19302,-1355,-24902,-8764,18490,26990,30214,1852,30723,-10589,1287,14055,-21505,24560,16686,4873,-32080,28033,23677,7922,17528,10457,-25222,13219,6381,-14957,-16938,16371,25703,-8725,-21154,-27636,19356,-4145,6908,55,28808,20881,-15218,19275,-6413,3628,-31876,-5012,17947,15716,12620,-21466,-5529,18794,-1157,29659,-21840,25026,3251,-25133,-17502,19909,-6594,23564,5359,22601,6646,-7529,-12286,18095,23527,16394,4307,-30264,13094,-1459,-1775,5637,21190,-17817,995,5464,-4843,22548,-7283,-24637,10004,-17306,-29287,12863,2780,12692,-15951,23905,19726,8519,-11067,6774,23408,-2332,24621,-14398,16851,3848,-30926,22685,7827,-25591,21230,9343,30364,-16730,20941,24731,-4253,-31878,29197,-11765,-17779,-28523,2976,23251,-29448,-9073,8805,-9352,-13759,-32058,22808,8896,-23250,15406,16791,-3850,25503,-26947,17128,3189,-7587,-16679,24976,-5077,551,-26997,-23818,5807,7671,-16757,-2645,20237,-32185,-18879,5017,-19357,-29160,23623,3444,-1641,17027,-17985,32660,21313,22228,-32192,-19425,29496,-22326,29075,24024,-28475,-941,-11755,-9739,18366,-25553,1461,-15789,-2481,-17803,22731,-23087,15089,4303,-21248,-6678,4374,-23939,25124,24232,-29209,-6202,21754,1766,39,15216,14339,-25496,29510,1574,18386,18476,5801,-13047,-7220,-10048,-12433,-14244,-27825,-5491,25797,468,-17399,-29261,19402,22941,122,-8946,-26282,-172,18441,-10985,-28210,-19923,-2785,31214,-15716,25658,3258,-6496,-17766,22392,-7125,6153,22261,11631,31983,-3380,14624,-10229,-10172,3070,1386,-23997,-26932,17231,4039,3404,18239,-7529,-15489,-1955,-9071,21155,20369,-17357,-10849,-24282,-27040,-18547,-16691,30711,-19247,-9240,4101,27725,4994,-6726,12077,5861,-19041,6834,10660,-14653,8636,-23184,24672,23730,20858,26010,-12919,15848,-25965,12114,-3724,21966,2682,-3775,27893,-24735,11442,22462,-20119,-32210,-22420,-31083,26760,-14157,-16446,3675,30155,28207,-11629,-31449,-23944,-23574,11487,11687,4778,4878,-462,-20381,-19946,-31327,-24561,-31478,12548,-13437,-11306,16351,8560,-20914,-17459,-30424,-12399,27614,-13891,-26048,-5905,-8033,30038,31869,-4654,-10027,-4500,-23860,26129,-11348,-1292,-3055,25839,20160,11570,18272,20983,-12987,-17409,-25810,-28742,-2549,-27540,195,-7481,20293,-12786,-24834,-13058,4857,11069,-487,-15088,8009,12387,13401,-28351,20956,9568,31368,22162,957,-18821,9009,-25423,-29223,-26328,-25267,-20559,31098,6211,24637,-6214,-1244,15093,-29651,-31409,17491,-19266,-11681,-32325,-11444,18104,3464,-14310,3729,13726,-16279,-11803,31172,16082,-21607,-21027,23357,-4781,4062,12215,21280,-30576,13672,11528,18520,20853,-10809,27018,-19534,-15624,9933,-23669,5921,-14531,1203,-15574,-11097,-5133,-4355,-3178,-1423,-31774,9361,-25504,1208,2812,21012,-23438,-7455,-18090,26187,-27728,-15862,10788,-19211,-2510,9373,15105,21960,-16180,11355,-21119,27108,-13771,-5223,18498,-11889,-4669,22535,-24769,-14984,-1798,-4880,7823,-14852,17867,-30427,560,-10073,9373,30196,17683,24103,-5357,14417,-5167,15678,-28757,-20297,20095,16467,-29777,8149,-29458,14762,31988,24169,24213,-12655,-20729,-15210,-3521,21970,-17845,-31587,-5506,-17597,10438,14643,19184,-16746,-5545,21006,-10890,10423,-23138,8224,-23496,-19162,12861,-9911,-14331,20948,21102,13810,-7614,707,2710,-15285,4739,30759,26609,-13795,9253,3444,-7200,-16315,-7938,30510,-15026,23800,4258,21331,-10802,-23449,-25449,26657,-9513,15476,32685,3164,-1615,10365,-24510,17112,22799,23619,30253,7601,-11454,32280,24014,-6515,13253,-32557,-505,5817,16106,27231,-8063,21268,-27754,18800,12598,-13882,21932,21441,-27497,17124,-15829,-1029,30392,17558,21453,20964,-8147,-7175,5310,-14891,14235,-17539,1178,8952,-32019,15562,7603,-5740,-900,12079,-7403,-29031,17033,-10728,31798,28811,21680,17053,-1182,31186,-24918,1777,-7873,-9226,15566,-7984,7344,5365,-927,30567,-22925,-11676,-28683,-9739,1072,22839,-30542,27236,-4337,-4835,-11409,-10342,-13027,-18316,27529,18940,4077,-16796,17993,-31897,12527,12824,26698,-1729,26975,10339,-27182,-1116,3755,17373,-18909,29189,26144,-22711,-6761,-10427,-16743,-15196,-6503,1644,6998,18282,-24596,691,3004,16851,-31944,-11562,31950,-11535,-27782,-22951,-27178,10994,-27710,-14326,-28593,-1797,12424,-17078,-23306,-31649,19357,-27524,9966,-14161,-1351,15176,2818,15247,-10324,-23257,3942,-11572,-18262,18952,25470,19414,25229,3400,-22070,12847,-29362,26870,8615,23954,-26205,19894,18766,247,-8115,-28390,-7202,-14299,-21634,-7465,2501,-25756,7911,-31423,4730,-19194,19221,-978,-22535,-3201,387,-30641,24952,-21586,-4716,29922,16199,-27979,-7270,-23818,-21697,-20046,13017,-25663,20964,21452,6937,11076,10488,-27299,18825,32060,17983,-733,-31274,-13298,-24289,-8135,14672,9237,-5366,-6106,-19307,-23020,-13926,-2121,30720,13553,-15504,5835,6424,17171,23642,12819,1929,25720,13120,2472,31577,-21428,-12368,-1878,24905,25873,-7622,32720,-8263,23893,-13481,23940,22480,-14155,-3558,-11847,-6606,10051,-3216,-32213,24395,22266,6556,24096,-8332,-28995,4776,-25149,-28282,12243,19544,-13220,-9917,-10315,6829,-16779,24057,7495,-2119,-25173,-6374,-6220,-25414,29787,-18704,6802,-14325,21975,-14887,13947,11500,-496,-31523,11745,-19877,-23711,16144,14734,23365,19484,-8892,29193,3128,-9631,-18013,-24424,20188,-5989,23567,4427,10709,-5968,14358,-7016,13997,8570,25358,10775,-8288,21972,14373,-18796,27663,10930,16008,4551,15703,-10740,-12531,14693,2173,20844,28012,25375,17488,16515,-12295,-30504,3445,21707,4364,2961,-26998,24220,-17186,19590,-1243,18763,12711,30501,-18791,12755,-2140,-21728,-30916,4972,-16722,19096,12490,28454,18843,2417,25020,6559,-18684,29923,-13143,-20815,-20208,30404,4183,31567,26607,1944,-29725,-21271,9862,3487,-19729,-2706,-15949,32752,26714,16299,14756,-24726,633,6545,-12063,14478,6226,10169,-30668,-276,31301,-18804,-20943,-27231,-4831,6630,11063,-27577,11083,-32347,-12466,14289,28575,5284,-24039,-22274,19170,10166,26406,-20847,2758,18325,-22363,-26157,-8644,-10486,10363,-9290,-8697,-808,21871,8608,19291,5773,-2461,10720,25225,27232,6189,6736,-11549,-16822,24240,19753,-9782,21849,11789,24963,1189,-8602,19412,27137,23293,-22960,-12348,14864,-25605,28726,24004,10984,-26488,27254,31611,12588,-10644,-21355,31106,-7415,27904,-4152,15182,1621,-27298,-24570,-28445,6589,17360,3939,-5564,2249,-8884,-29686,11153,-2090,-18548,12945,29269,-10819,-14474,11531,31585,-5596,2577,-17053,-10666,-15819,-6368,11457,-17664,7236,-17129,-20769,-8778,-5593,-24083,17243,-20901,21976,-13555,10577,2913,-9581,9826,12660,-10338,30703,-14429,17771,21370,-10584,-19619,18909,-13120,10012,-15165,22801,-25402,-4452,23290,-26310,25750,-5796,18434,-20904,22403,14977,2989,21777,27192,16574,-24444,-19142,1659,15784,21810,-11164,8966,29004,-27544,19069,-24479,-18253,-17155,27419,-4858,-7928,6757,12668,14087,15365,-17152,-17959,-31110,27680,-637,-18589,23281,15759,-31969,20982,13595,-9548,14250,31243,-30294,-16922,-20855,-9171,24434,29949,6570,-6687,28997,31825,-32445,30502,26273,15546,29695,-17376,-1782,22964,-27982,9147,18259,-8634,-23840,8519,22504,9303,-24386,14845,14881,-98,-9498,-17593,-14647,5642,20914,-24657,17191,11491,32760,-29654,12202,-10104,-5536,20210,-5910,21136,-22977,22144,-31408,15247,464,12069,28124,-3617,2180,-27552,17158,9484,14014,21849,-13628,-14142,-629,5580,-6992,21543,8184,-7966,-7469,6068,-29974,17584,-25263,254,-8284,-20350,-29359,-17977,19246,-18439,-19011,26224,14218,25711,13031,-29598,-16870,-20753,10943,13079,-4334,17404,16783,14066,-16639,-18299,-23226,-22852,18069,-17849,-26676,-17051,-6644,-8260,5096,29752,-17092,24267,6118,-1505,62,-27171,-27803,20487,624,5768,-31198,-31947,16108,-21183,-22866,1805,24079,2625,-22850,-18471,-10097,23765,-23248,-26131,5702,27165,-27875,-7856,9962,22225,-14397,31452,-8322,-10889,-1605,-28347,26136,-22355,-31468,27610,4388,-17189,-10823,20133,9736,-25978,-2395,14699,19778,-25943,17207,31066,-5876,3485,6364,-14502,25598,31793,10027,20515,3525,-4813,29764,-17514,10178,-30912,-16216,-8386,-15333,-13436,-24698,9144,31870,-4913,14356,-26439,3849,-2711,-31645,-20054,4466,7268,-31569,20394,-8972,21249,23313,-717,-11866,-14349,-10798,-8435,-2439,18754,-21056,13717,1726,19466,11468,-1287,23860,2834,4250,-11159,20328,7873,3945,26030,18633,18203,-24811,-24880,18631,-27267,-720,12198,-28067,-25233,-27388,17383,13877,-794,-1009,-30172,-9106,-29042,11087,19298,5374,1037,-32561,-15792,18839,-22450,-1445,15808,-12603,29201,19671,-30308,31684,16963,15830,-12686,10496,-25507,-19100,23527,-21820,-435,-29860,9540,-27864,-14178,2302,-27341,-27282,-5268,-11472,1213,-28014,-22449,-4563,-16098,10820,15012,-13864,23431,-29625,-5727,-24911,-6736,-26728,-21884,32152,20414,21428,-11703,-12944,-29291,21611,20603,-13028,1563,-1803,2485,17266,-22605,13043,15991,20887,-13515,9493,18062,10135,-20324,20450,11214,8748,-26258,26458,-11674,2208,-3611,11056,-22422,-19160,-3434,25798,7387,-28806,31775,-29412,-22233,-8126,4358,-11922,13342,23236,-1742,-4970,14971,-29046,32174,19011,4984,2636,-19002,-26173,23570,2034,23709,15588,-14050,-29962,27833,-23775,7649,164,-14310,11663,-7233,-30186,-10470,31889,5192,-9876,28539,23837,-13123,-24813,-7149,-26218,14067,-12884,-5477,-16373,-27272,-17203,-1298,-31994,-22607,-7636,-12589,6843,12037,-22343,-5352,17522,-5428,29123,-7564,19325,-23875,-8551,28362,20973,-31873,31666,-7067,-21502,31940,20767,-29156,-27808,8758,-11830,-5405,-1642,-19942,-27978,-28555,-26435,16799,-13704,-25924,-26570,20566,-29597,14748,-2937,-4843,-4,24747,6727,30303,-11743,-7953,-23994,-20666,27677,-22040,2085,-12529,13427,-26299,14486,-23214,-27861,9444,32657,-18931,-14987,-22342,-29725,10843,-22323,-8062,-15998,-17552,-28027,-16788,20212,-15206,-31489,23527,-981,21617,-31791,-5797,6083,-14531,-23430,-29523,-5924,-52,29040,31226,1634,24715,-29832,-20262,-15757,26698,13691,21168,-6669,31278,26013,-14933,-30252,-29510,-2522,-18997,3903,-12993,-9932,4078,-23712,-30773,22676,-28572,-12573,22040,-4203,7872,10746,-18783,22691,-2863,11709,15714,24706,-8769,-15495,13027,-16513,-7101,-8257,-5175,-31073,23851,13038,-9601,-3871,28363,-21276,-10341,9168,14655,8890,-2378,-1378,13366,-28970,1748,25533,1341,5908,-28583,11216,-21141,24859,21098,-1772,-24873,2488,-23836,-14486,-4811,-32676,-2630,-31656,-10094,-3035,31572,30493,24152,-12015,-16245,-9745,-8419,891,-6825,-25336,-32479,-29909,23312,-6488,5366,30405,-10016,-22302,23867,-30121,25075,-18753,31511,-641,-12858,-135,-19736,-19667,-16068,32321,-29098,9262,-1594,-26089,25591,-22963,-25399,-6016,-1265,31424,-21141,29499,-1505,-31772,-9004,22082,-25350,-8023,28946,-21661,30177,-28601,25959,26708,26556,-26773,-5919,22026,-28141,-17110,7786,-2913,28466,-30035,9907,30392,32596,-1889,-21186,-6109,-19802,26278,-2138,-3510,-23039,10237,28608,-6330,-7382,13405,-18583,-20383,-18507,-25092,31830,-13443,-9364,6777,27242,13084,8045,5422,9774,-14766,29326,11163,-6292,13762,22404,-18519,5548,8201,30153,19823,15916,-20730,14960,-2586,-23098,11171,-7382,-24895,4394,4403,-18158,-30235,-349,17877,-5876,3428,-26700,-22939,26779,-9089,27464,27392,31853,22983,16605,-12327,-15788,-19774,-24825,-26375,-9788,26783,15686,21893,-602,-28152,20416,-9508,5631,9446,22212,-27823,4229,21270,29603,31056,-23047,16794,-22792,15192,-28219,-10458,21128,4670,19756,-28177,-21519,8517,16959,84,-7178,-30685,-14784,-23188,-14755,24450,14092,-25621,12281,2076,-24483,20040,-9216,-28999,4423,-32300,11875,14343,24305,32261,-776,-31801,21623,1541,-749,22917,17123,-24336,-25761,-13750,-15684,9744,29502,-32125,-20843,-13656,8337,-1032,19962,22755,13047,241,-12848,24992,-19704,-31282,13139,31789,20213,-512,-24141,-9629,31692,14106,28158,19349,2119,-18138,12144,10149,20238,-18136,-32369,8582,-7300,-14557,-29935,23013,11056,25970,-5669,1876,-7685,16823,-28173,-17541,21619,-7437,-12673,-15926,-28674,31292,-6926,-27737,-12276,-5946,-16944,4502,-31466,-22062,-17990,-24248,-10803,-22127,12020,8848,29866,5251,-28835,5209,2050,25376,29075,18117,23146,24131,-5741,-907,-21956,3465,20256,-14633,-24858,-16900,24402,24175,-3536,4909,10886,31337,26666,-651,975,-12502,15243,-25147,31672,-32041,17734,16817,-22052,1433,-27829,4091,-14347,12503,-28469,-28031,-4912,9624,26494,-29046,32468,-2556,-29775,-31561,21716,14749,17670,-26140,-7277,4177,15622,-19786,10637,-21122,9625,-9602,24344,-9999,-2666,30224,-20224,28771,6157,13028,14332,-14524,-14102,-5973,25702,25476,-4994,12468,-19508,9201,957,-18213,10797,6676,10703,27953,-29200,27362,31402,-3556,-6761,12504,14484,7083,-8300,10555,4292,32286,-10933,-4456,2867,-21858,-29710,-24240,-29754,25743,-12035,21294,126,-26346,14659,-23233,-31006,19143,4193,-62,-32478,22695,28344,30626,9950,-14844,2745,19397,-8184,-17479,12224,-21892,18560,17506,16596,19917,25478,-1412,-9079,-7038,-13751,-19124,-13357,3670,-30353,29492,8985,-872,-13424,-25586,17302,8300,23207,-16508,-27577,13874,-8072,17336,4047,-2112,20210,31237,5622,30122,-23148,-8049,12393,-20628,13439,-2584,-23830,19846,14392,2231,-22025,24312,23336,20003,-4579,31109,-10792,-31246,16157,-5960,21083,27251,17109,-13578,5935,-29264,6206,-2636,32732,25475,18773,-7495,-2585,-9378,26899,27803,8807,-14599,11020,13693,-1377,31044,24791,-26993,-24228,-23287,-6080,-20148,238,-21153,7319,-25824,5973,23391,-23691,-26581,-12104,-14876,13753,-27966,14545,15681,5830,-1222,-14402,-4812,19695,10251,18938,4521,9871,-29023,-23064,-28460,14929,13910,-28069,-7392,9521,25164,-29311,17384,-15217,23159,20251,26742,-27991,14067,-32697,6063,12052,24071,-7336,17293,27516,-17213,29869,-25572,-9780,861,-4632,24380,27494,-10924,11778,-1762,-10726,22930,-17625,22458,24727,-3925,-12006,-24128,-24437,15419,-26409,8960,-10864,25357,-22210,20729,-19809,-23194,-28958,24338,13645,24185,-9111,30126,27781,15885,26937,14884,-22013,1816,-19653,-11001,5030,-2451,-5914,16756,14617,14691,31246,31606,16561,-11384,-19879,-15613,-23147,18899,17665,6729,12500,-11194,-19290,-3328,-21018,-21652,6339,-11921,12091,6581,-14347,-15389,-31112,-17721,22501,3503,-16523,-11192,-188,24225,-20547,12119,-14221,-28980,25068,28931,-23110,-20532,28217,7983,-14131,-31144,-11532,18322,-4169,-18347,5607,24542,-9866,26468,7492,12718,-14844,6254,14093,-11914,-26648,29979,-29594,25700,-26293,-13571,21824,1156,31437,-2292,31748,-25764,-26515,-26501,-22252,27991,-6139,25696,7520,-30268,28921,-20077,-23029,-18578,7586,-31787,31904,30582,-5937,25472,-1968,-10610,-18509,28830,-23457,631,25759,-21372,-28396,-2838,30131,22758,-13698,-2647,-13449,9771,-2275,-17610,-6285,15613,-1040,6205,27635,5519,-25363,20773,-3724,-1978,-21203,352,-4946,-6110,-12427,9908,25127,19138,103,14557,-26121,12393,15070,25616,2297,4898,7347,3780,12713,-5291,-11565,30875,-24095,12938,339,-20283,15424,-30221,14311,15977,-30068,-3742,11196,-24754,11666,468,-1782,-3960,15458,-32543,-11432,-659,-26325,22324,-21292,-8561,25557,-15882,-28311,18433,-5930,20807,-7926,21705,-31951,801,-24037,-17190,11036,-31479,8891,-21723,16169,-29789,31607,28708,-4417,11953,-4523,-9754,-2699,-16327,-12557,-21426,7057,-17328,-26379,15068,23829,-10197,9694,16867,263,-21947,-20543,-4810,-5071,-23805,12180,2372,-15217,16471,18719,-10502,-16854,10428,28525,4201,14881,23463,19125,-20417,-4597,15444,-9355,-3920,12548,24141,-13273,-9414,-31858,1940,-19776,5943,31627,4187,-25535,-23081,-27168,11972,-13179,11865,-21391,-31398,12155,-15297,-22928,-31082,-29950,-18744,12618,-15261,-5842,19322,20679,-26259,-14186,31083,7428,29835,27026,-5009,-2142,19453,27966,29473,19851,15855,24210,7553,-7357,29801,-29134,19523,-26470,8438,-29121,28945,-8686,-9556,-12182,15963,-3808,-22432,22492,-16480,294,23756,8942,21056,-27915,29360,-13766,-21902,-2702,-3048,-20131,-11,-18029,32389,-19096,-26072,-32719,-131,6209,-21039,-6479,-17985,-31157,1836,21320,3137,19027,-15745,21293,-3911,17594,-12048,2643,-17750,-1493,19708,-18236,19969,-14450,-31517,-30467,17082,12912,22558,-3961,-11610,-12214,-3011,-7046,15026,5253,3140,9942,13627,20269,-19346,-23433,-15192,-6216,12064,27180,32374,-15491,4193,20691,9985,24507,16794,-32502,-833,8762,13298,-9795,-32417,16964,13505,24607,-9349,-27524,13324,-18235,16949,24571,-10431,-24098,-16027,-31711,-1781,10108,-11138,-28610,-6725,-22300,-6346,9797,-6405,20125,-2623,10255,-21007,25385,5062,-3644,17193,12473,13103,-30225,3277,-14143,-8224,-22881,-29880,-44,-30663,-23831,-30836,-31688,26273,22304,23501,13464,-6709,6937,15070,-28274,-25821,19183,17085,-15868,28375,5383,221,-2654,17252,-18683,-23384,-17005,-720,-12392,30616,4441,17514,22132,5642,26386,-4122,-30799,-13348,-13080,-13511,1290,-20948,-108,-15859,-25622,703,26664,21410,16483,-5395,5874,20896,31409,-30170,-10748,-12505,5970,-31070,-18741,6221,206,6754,-24335,15610,19831,26648,2807,310,15021,23783,1521,30609,-16032,-32069,22415,29878,31272,944,-14019,-23716,-535,-20680,-4927,-21974,-5307,20558,17780,9502,1853,942,-6263,1538,-4276,-13531,-16254,-5795,-19045,-31613,23199,-32552,15402,-22059,-32410,26385,-29831,2173,14066,-2117,7258,-11786,23404,29355,8315,31558,19403,17266,-29965,20458,4970,3599,-32430,28821,-14228,19028,519,7070,5723,-15617,27947,29457,-29790,-6382,-629,-30919,19265,8431,-28693,25146,-20737,225,7696,18796,-7560,-8871,-14732,-11643,-4947,-5442,31807,24697,8721,13703,-6242,32056,-11635,-16897,4427,22478,20625,15945,-12198,-30344,3884,19790,9794,15219,-9126,-24975,20101,22896,9505,3479,19036,-22541,10985,-17118,-25622,-15343,-2178,-11328,-3550,23070,6950,-25977,-7721,69,-5336,29033,1950,-21966,-25363,8193,11603,-4286,-27272,12246,7728,-5460,-24917,16422,17536,-6889,12519,28364,-21125,-7751,15980,-28805,104,2067,-8260,-23453,28011,12557,-24943,-2482,-19114,-25040,23266,11039,4954,21559,-6188,-16038,-10193,-29007,17671,-11292,32087,-27045,15800,2138,28847,31817,12428,30150,29330,-18116,-8523,23032,28238,-8634,-13963,23005,23145,-25264,7113,7344,16722,-2277,10045,-14609,8390,-16634,-5249,-21419,-28324,-9330,-6301,-9920,-4334,23963,-9503,-27925,28045,10391,31080,-18143,-5007,-22437,-20244,-12487,-16371,16288,-16751,-11566,22467,24301,17557,13618,-21915,11124,-18792,-21387,30186,30577,32005,-11415,-23761,21172,31597,-5588,9869,-21378,12219,15578,-27987,-672,-26040,7675,-30863,-20429,-30655,20271,2459,-31766,20242,-19022,-8405,-21184,-24257,3384,26757,25289,-4665,29189,31976,-22483,-11778,14315,11301,-2942,-23506,-6442,23502,26401,2947,29257,-22757,-3672,7183,-13351,20041,-25101,-12936,-20679,12019,3057,-8827,-14377,738,-22150,-10433,18817,11405,10691,-23260,-21061,4264,5552,-20774,50,2170,11366,-21841,31072,14527,5924,-95,30250,15228,-4344,-1055,25741,-30344,17765,29657,-19211,16827,32760,-21333,20357,21971,22214,-3300,2503,21550,-15872,15535,-19579,18800,-19533,-23187,-9230,-2672,30250,30095,3563,-1481,19902,381,-21769,142,-8448,-17267,-24288,12487,13750,-9050,26354,-24235,-31846,24354,-30105,-15824,-2880,32744,30826,6922,18496,-20350,4623,1034,-19303,-21125,168,32707,10223,-19557,28071,16469,-996,-31730,4146,-9276,-13339,-977,15192,-31528,32258,-19904,-13919,12907,-9857,-1767,-2918,9376,31120,-259,13478,-30534,-8618,16221,12880,-17357,14981,10354,26662,26642,24376,-4163,-19402,8069,3846,-21923,-31048,23817,-19053,-2062,-4831,15797,-23510,13681,4366,-17141,1015,-10266,-10595,15123,9941,-458,15601,19644,-19155,-23958,-6090,29683,-12211,-20042,17543,31926,28179,-20183,18811,6094,-11549,-25435,-3678,4715,-15392,15097,10044,-3946,-11404,32083,-29831,3608,-1870,3452,3751,-12080,-9270,6731,-18054,-8421,-19518,-14110,-30340,-7906,1651,-28910,1874,-17962,-20025,-2665,-16303,-26941,24355,-27107,-10212,16754,19026,-15287,-387,-25978,-20460,-18611,-21126,6972,2751,25610,-30420,-14867,-13720,-2920,-9171,815,13014,36,-3579,-22399,-8251,24221,9718,-2076,-16487,-19322,17570,5535,733,-30710,-24240,16178,-11010,4795,-9106,19510,-1505,-369,18157,17742,-23655,11862,21058,4788,24081,-8629,-26766,-12387,20524,-5321,6324,-7940,-21116,-1086,17724,7284,-22699,13234,-24303,-20797,-27374,3546,-17415,-9487,1459,31433,22189,17034,12336,-32633,31655,6089,-4570,-18536,-10698,23930,-16786,15803,-18113,30019,6910,6366,-24139,2201,-8437,-23038,1904,-15166,340,1203,11117,-14699,-15302,-8687,-8020,31893,24371,-22555,28846,-12358,11241,-5188,-23338,13693,30312,19663,1297,-25248,-18835,-15933,-7453,-32224,15261,-14321,-31658,-29474,-9043,7733,17392,1503,4535,30227,27746,26608,-18633,28961,-13729,32337,-22017,21297,-19668,10236,-27835,16091,-18615,4264,-18478,-23020,9435,-29650,-4529,-22929,-27389,5249,-26212,1998,-23573,-12439,-30264,-30270,3089,-24583,-20715,-6357,15089,29078,-20613,9399,-28205,21276,24645,-29775,230,17868,-4258,-10203,1912,-29276,-2729,-17543,-1996,25402,-6812,-32332,16812,-30951,31645,-26605,17681,21221,9525,8342,-2955,30758,28958,-16940,19220,32022,-16663,18379,20867,-20466,-21298,-24605,-4838,7320,32502,1492,-6177,24231,-25578,18595,3417,32225,-12480,28343,-32738,4123,-9741,-4570,25986,-17778,-29078,11862,-26922,839,22672,21790,-25055,12888,-28556,21022,-7875,22898,-30655,5847,-6223,-4247,-22144,-21302,910,9048,-20522,-1960,-23151,-29034,-20764,9611,6416,13656,-22919,192,23816,-1773,-29156,-13380,-16257,-32470,16745,25569,12318,23881,-25706,14342,15221,17535,30758,-24949,-19235,-7727,6847,-27047,30766,16853,27247,-12663,-10955,-10409,15880,27037,-18597,10973,5682,-18873,11162,-24485,6790,-16920,22886,-29700,-18959,-8080,-5021,-5399,-11570,-4476,8794,-13903,26918,5820,2073,-16653,28828,9960,-16488,1360,10607,11108,-2457,-14967,851,-4197,14509,14623,-27544,-2212,-13917,-26602,13563,-19809,-23922,14609,-10404,-56,-6211,-18341,12257,17073,-15732,-12313,31992,-10499,20295,-2604,-9337,24836,21449,-6349,-22901,24016,4712,-30807,-6383,-27805,17718,25507,6867,1017,26552,-32509,-2451,-8983,4002,-25330,22415,-31833,-16080,-23700,859,21714,-1376,-30641,-21118,-7882,8345,5460,19617,31149,16175,-5302,-17238,-845,-25847,-28845,25484,-26970,-4663,-3407,-13196,30232,6298,-10222,-6990,23325,3657,-11240,-10190,18010,12740,18890,-3920,4839,-18961,32226,-26516,30882,-21215,-781,-23247,-8836,30680,4644,-28543,7375,24163,9712,4028,135,27267,27319,12976,-31923,10957,-27292,-10956,-24141,28211,4385,5049,-6814,-1518,24463,4062,-14867,-5034,-395,15547,13461,-16353,-5961,-16837,5450,-15419,-27879,194,-14730,25232,5296,6003,19425,22297,32713,-18254,-3143,12092,28306,-19491,-16874,-27986,-25494,-17827,-4943,-31395,-9886,-32082,-24792,-29784,-15393,23088,28678,-5746,-24452,-5168,25755,13911,19963,32489,-25968,7071,-12059,-17382,8775,-30236,14146,-6094,-790,32412,3253,-15142,-88,29260,4374,-6549,-12162,21115,21289,10554,-28300,-12523,26616,-30067,16739,1492,-3443,30682,-21202,-22117,18541,16694,-3647,1374,16770,-10547,-10797,17787,-8728,-19028,14826,-23708,-19503,-5016,21052,-31322,20182,18545,-5123,-6160,32138,-10800,14286,27800,-12320,32711,23425,-32538,100,-28428,-29169,-22331,-28049,-24527,19010,27927,3589,12513,-25534,12588,6513,-2539,16527,21431,-28322,-1450,30375,16771,3723,31598,-16955,22491,-7757,-31769,26656,-21235,-24011,28157,-3917,31732,12043,4354,-23662,5962,22042,-23571,5337,16752,21153,5999,-27119,25101,17763,13403,-27420,-14962,-8661,23084,-1038,-26236,14264,17462,-13990,28130,-32231,-136,-17368,21895,2401,18390,-9290,-12341,2070,-30297,-15256,12617,31462,-29056,-30092,-17337,22381,-27844,-13350,-7845,-28507,9655,-4007,12280,-4378,2080,23632,-29441,14260,16659,9347,21351,-30199,-7109,-32717,-31486,-30944,-27323,20265,-7233,26650,-24215,-30933,114,31942,16987,-6170,-6087,-7962,-4966,-30027,-10134,26460,-7804,15495,-23552,-30195,-29943,-7718,-6687,28737,23818,15760,-30432,14179,-89,23997,6954,-18880,18501,-4530,-11461,11463,-17257,3346,1257,-7385,23186,-29175,19819,4244,15004,-4155,22382,-20819,29221,26241,17965,32507,30005,6530,29113,32706,19843,19415,14993,12994,30307,-8203,11059,-6939,24526,25106,11612,3174,-5978,-25426,21710,23571,-23651,20796,5570,1768,15924,-30147,24305,16495,9781,9043,-24063,17419,-517,-19477,-20619,533,-28527,-9735,27729,434,18711,10662,-601,-2077,13713,30702,-15558,20463,-30532,-16470,4751,-1541,-30981,-31053,-8017,10734,11932,29029,13924,3845,17821,-1634,-31428,-15929,11500,29814,31016,-1288,-16392,-18450,-21487,10952,24770,-25935,17093,16061,26489,-21298,20630,-1844,-177,-31134,15286,-20461,-1112,7803,16598,12458,-13523,-13984,-25632,-2669,-31345,9717,-30428,-631,18931,-6423,673,11647,19489,-4874,1264,-20221,-15180,11027,19044,26417,-30387,-14920,28169,20901,17529,-28517,-10255,-28421,23663,19645,26500,22266,23617,-25819,29955,16501,13856,-12218,21693,767,24417,29284,21440,-8691,-25856,-11751,-18584,29318,11841,-23063,-11951,-1923,20672,2282,23743,-28197,-14604,15005,-6077,-26665,-16481,10979,-13354,-11967,32404,19042,-16466,-1261,30823,23055,-15586,23213,28521,7562,-21235,20797,-19438,13350,23397,-508,-3628,30372,-851,19701,15035,11667,-12342,1485,-25263,13134,-29387,31159,9468,816,28653,-23360,31967,-21272,-19697,-19088,29143,14298,-26904,-21234,14842,-4681,18007,-28151,1085,32573,8451,29963,-22490,31535,24492,-29139,-13175,-32479,-28909,5924,1728,32291,13330,28369,-165,-6567,-1672,-28521,6436,6184,-21192,6228,-22277,32565,15560,-3976,-25622,-6093,21040,13826,29986,1454,19201,-7870,-10888,-10256,-27620,-18793,-5633,2076,-6355,-2331,19110,21042,-30162,-8009,10121,-16964,-621,27409,-927,-27796,-656,6511,-22485,6177,6756,-20150,27514,4110,-9433,-1142,-1554,23726,7432,-31214,-7084,-902,-10426,-14739,14286,21038,2327,4977,20358,5488,11653,23752,6955,4347,-20614,1455,-13820,3500,-26958,-9108,5692,19493,11183,-21875,-14344,-20517,-8552,12951,28514,-1204,-2108,-14424,-4200,-19843,-14507,30879,25515,2761,-12182,13926,-26665,-3856,-16185,23777,28678,5504,-8376,-20552,-3575,7711,-11797,22472,21051,10260,16825,4759,26282,-10052,-11067,-14169,32343,10229,15752,-19220,2051,-1616,-21326,-27281,30591,950,32535,-29434,21040,-25014,29724,-29065,-7872,-6113,24066,4705,-113,-24131,24131,-11314,-29033,4090,17682,-1704,8567,23336,6502,1983,5882,2504,29588,22935,15593,28999,-18686,-24947,-13200,8520,31601,-17086,-10693,-15995,-3900,-28726,14922,20790,-20529,-26277,-27126,-6486,-15129,26078,-32740,-25228,5517,-23901,-12871,-12974,-19018,9117,-13756,-11099,-26908,9044,-29412,27770,29081,22978,-1947,-24022,17968,-2330,-30437,7367,-9360,8572,-22803,9851,7556,-8612,13895,-27600,-14088,26353,-11101,-7795,15361,-7302,-23578,31840,27529,-23649,1079,24545,-23361,625,23729,-11446,-26240,18033,-20394,19041,-12361,-26503,9037,-19715,9620,1233,-6878,27015,5496,17509,3716,-2593,-29665,7755,-24732,6006,18089,26839,-8103,-6393,-15468,-13213,-8380,6046,29116,-29215,-10003,1358,-27112,24588,23604,-9808,-25610,15345,-29642,-2625,-14404,-6346,-13785,-22234,5738,32539,30174,-14130,-31209,-22972,2413,-5742,21897,-30909,1506,10734,19926,22128,30303,-20947,9357,29111,17401,13957,9252,25122,18055,8429,-783,-32026,-10234,-27458,19972,-29745,-8015,18274,-6969,-23691,-9600,-24335,-11672,15486,-11779,-25750,-8717,9852,-13761,3736,-12377,-29366,-21972,29668,14318,-14515,29325,16656,32459,2327,3750,-16727,27904,-126,22059,2989,-12520,9835,27606,-3483,-21403,26818,25873,-1185,16162,-28352,-5863,-31071,-23728,-1703,-11559,28038,-19099,8290,20473,19673,21751,-9507,-20596,13598,-28324,12650,25459,28954,26805,381,-20195,19727,-3428,7794,29698,1320,-1132,25149,-5129,11521,-2352,-10224,-13213,23751,-9715,9589,14199,27177,-27886,-31436,32661,-2063,24668,-27955,29116,13217,10880,13955,16566,-3683,-31589,15412,17114,26756,10419,-17803,-22965,12785,22156,26741,-25497,-21028,28522,15456,8736,5129,-23375,-2322,8916,-15468,-8385,30556,489,5989,2013,-19755,-16113,26588,3972,-10396,-2068,-1532,-14524,-24974,13581,3533,-32138,-20229,28188,18082,-6902,-31354,11490,-1432,6281,-16118,10494,2909,24990,-15692,-15795,-11375,31668,17230,-29390,-15378,3086,-6233,9699,8978,-1078,17277,-24362,-8648,-15501,25779,25352,-31417,2523,-6551,-24234,-8717,3230,-12653,-31965,-3803,26042,-16377,-6775,-22461,-4220,-28884,-1787,-31912,-10688,-21770,-367,-15063,16537,-29911,10225,11852,-29207,-16445,-7364,-3009,15865,2441,-22604,7034,-5284,-3861,31661,21157,-21245,-20763,-26694,7274,1112,4307,-8819,28170,13687,21082,-31024,-18511,1526,-32091,17396,-5582,4635,-12155,7445,-8010,-1607,-16676,7272,-26548,-3650,16737,-10305,-25903,-20802,8244,13456,2437,22732,28347,-2693,-25377,8372,9261,-5451,5407,21857,7486,-24003,-3519,-22138,15699,-7514,7759,3967,-19362,-31619,-11874,19263,17613,-31441,-15240,17431,-32709,19216,-15819,9306,2132,16907,13079,12183,-7001,21057,-11543,-22600,24648,-9017,-8383,-5547,30426,-31221,-7202,-4396,11124,20863,8289,-26937,5231,-19897,23220,-5533,29129,-3552,14159,5224,12894,1453,13397,29375,-7052,23191,-25995,10097,-17490,-15009,-29469,-11964,-12411,-21863,-1509,10159,-19519,27752,30730,13724,-18818,2310,19100,8321,1104,-29664,21571,-11722,-26355,-30331,-9451,-9747,-7347,-14388,28711,-27259,10015,-4573,-6058,32524,24430,3139,-13578,7769,19387,-12750,2384,-12556,-6659,-21388,-29775,25196,-12246,-32384,4701,23051,-19943,-12725,-26114,31416,-12627,11237,-26033,-5956,-11772,32072,19166,-16588,-2281,13392,-13508,-7382,-13661,-18374,22662,27292,-7826,-28996,-4878,5397,6797,26747,18945,24587,512,3404,30907,-5100,11917,-8757,23129,-2266,-21853,21368,-18734,-2362,21909,-21614,28239,-10708,-10248,20466,-18427,6984,-270,-28916,5179,-5046,11214,-26518,-16957,12586,8241,29667,-5746,-29549,-32379,25077,-29500,23595,-14079,667,12722,-6612,-7248,-27941,-12201,-22297,-4379,8599,14439,-14011,-6887,-11988,16834,32513,5210,-8058,-5821,8606,-16962,-18332,4361,-18552,28904,26765,29290,-19602,12717,-6455,17952,8790,22553,-23184,-13150,25018,-3784,29009,7651,-5102,14915,27608,-3816,-30916,-555,-8685,2498,-28426,-31415,-24538,25984,27556,8465,-18762,-13952,-25243,20412,-29813,30055,-15945,-17295,19914,10653,-20259,25423,5769,14359,4855,-5133,-2912,-11887,-31781,-7082,2280,-17804,21631,-8659,-11061,-9007,-16828,-13441,-27782,-6332,22944,-19617,3481,4147,-9983,-21,8200,-17437,-10434,-2090,7351,10067,-29270,-20391,22101,21245,-14704,7534,-12960,14653,-1351,-24582,7526,-7209,6158,-23715,-19037,28046,-8004,-25710,-21395,-29609,28250,-13721,-7420,-6219,-3233,-794,24951,27561,-25306,-18717,-27973,-29882,-22966,-29490,6536,14264,27921,-29354,10250,20917,32738,-2394,10388,-22167,30782,32614,25666,-29255,-4398,-24367,30003,-459,-27872,-7961,-22388,-24595,17079,-1484,25678,9662,30396,22693,20642,1957,26623,-10013,28302,-8448,-134,-26442,17376,-12086,15246,-13483,-21792,12835,1539,10508,-31901,-13107,-27432,18812,-25691,-2262,-23,-20973,-32247,20369,25163,-22650,623,21977,32284,4541,20595,27264,-5020,4554,16817,-6681,12020,31325,32203,-6883,-5352,-22560,-2105,20498,-9894,148,31837,21607,-3238,12644,13242,28144,24338,-29223,28085,-18820,14632,11572,21262,-17065,-8452,9466,10815,-4528,-7451,-24988,22814,11089,-24595,-12577,15096,-3915,-14486,-27430,4932,16198,-18704,-14056,-7844,-7843,7238,-19123,3487,-11233,5028,-6016,-3674,-10809,-9811,27272,-9245,-11039,-14287,-14104,6295,-27642,-15298,17554,-7864,1894,-18191,5248,27688,6559,-19159,12282,-24227,-6735,13917,-28358,11714,1589,21098,-13702,-17505,7719,2363,32285,-2791,30401,-16415,-11041,-234,25580,1334,15551,9145,-27247,-5986,15277,-4220,21307,-16713,-16064,-29542,-6038,10516,3533,-25983,-22257,-25890,3049,-9342,-20055,24014,-27632,-10165,-10337,-8872,7950,-17425,-2835,15142,-25404,-17171,-17684,-30652,9881,16840,-28493,9449,-24530,-29168,-26215,-10387,17428,13924,13776,14370,-32202,-27022,29220,10500,5094,29598,22421,-8747,-10852,-25440,-21745,-13647,-16602,-12224,30935,-24937,11406,-6684,16769,-15871,-21092,-7890,-30251,-8144,14373,1947,-11740,-12098,19832,23526,-16106,26403,22278,-1945,-19290,9789,1811,-29686,-11962,10696,-23936,32494,-18043,32390,15818,-2858,26911,23527,16230,9835,16892,-468,-18179,29998,-20123,-1595,-2977,31209,11053,30277,15324,27396,-13708,4324,-9175,-23358,22735,13329,-25645,-24409,12248,-25108,18056,7391,15507,23308,26664,10430,828,-23889,5481,9115,13058,-27303,1447,20402,-1388,-16315,22039,2975,-28861,18722,-12780,-15047,-7848,7629,11414,1966,-7419,22489,-6001,-15390,8876,13324,-20304,-23666,-1681,26437,31961,-8729,-20962,-3625,-24708,-20137,6131,21132,17791,24347,-22817,32721,22473,-25776,-31154,32430,22784,-2486,-3077,316,-6044,-1286,-17558,9001,29581,28986,31344,-18003,-24489,-16276,-29610,-26897,3116,12423,27176,12300,30145,3938,-2438,-15855,7277,19704,18097,-29094,-21146,13785,28726,-5617,13176,12882,-21804,19282,-29601,9173,-18317,-25406,-12226,18407,28967,-31738,25462,-2376,-20920,-2692,21841,-17377,-25225,1341,11932,-7405,-6830,29364,19444,-28850,1843,23953,-5816,19749,-6863,-9426,19174,17108,23242,-5625,25916,-1261,18207,-32657,23571,-20329,2661,1152,3148,14660,-16129,20653,-2943,16753,-1702,-8844,26114,26651,1206,-27225,16855,17954,-17942,-5864,29304,28062,-28901,-20098,-32486,13302,-25219,-25387,3090,-15111,9188,-10374,31273,-30532,-1336,10692,21525,-15590,17190,5078,-29704,-7522,14908,23993,20586,2960,-942,-10941,-19899,-11992,-11356,19782,3395,16355,25781,-19470,13331,-520,-19039,22947,16789,30256,-21070,26177,434,-18359,344,-4775,10941,15747,5812,21289,25566,-16064,13356,19820,-20048,28155,-16384,22863,19158,-24193,-24690,-25660,25465,8269,7432,18793,-6000,18918,23208,2323,-27897,14755,-26181,-2042,-25519,21343,20052,-24478,15243,2078,-5381,9428,-22131,1923,-32515,-12013,-1562,-17759,-10015,-7074,6786,-551,12047,17575,17193,-2681,-20347,5909,2437,25178,-19659,5437,28475,20385,25732,4052,-28636,20522,9276,-20080,26080,14826,6776,-27119,30421,-19349,-1036,-30915,16783,21893,-7730,-9213,-9260,-2889,-25102,-11577,19292,18101,9701,18495,-14943,9345,-12656,22269,-10728,-16776,31411,-3088,-13449,-17225,19869,-24333,31517,11836,-7365,-25412,24852,14620,8218,-5171,16930,5568,15643,-9475,8808,31347,-27348,-12357,24688,-9794,25597,29091,18396,-12438,6947,-7984,-589,-20843,18973,-24436,29807,-30457,30245,5048,-20890,-14582,17660,9665,-10826,10833,-14561,-17215,-6244,19266,-26761,3749,2432,27248,-8316,4963,-3669,6861,-32456,16707,1189,-25642,26354,-15909,27362,23660,26916,16652,-10367,-16393,-3803,9453,-1388,-26626,23066,26973,3015,-21335,27523,-28789,-28452,-4724,-19671,-31759,-2341,12484,-27536,-4852,17484,-26257,11355,-1045,-28805,-28386,4915,-22499,13210,15557,1313,7122,10338,-16822,6302,-7156,-13656,-29247,-21396,31998,-29208,27393,-26126,-31718,28855,-32690,-1105,22794,-13726,7319,-24512,-5700,-8260,-18905,32698,-11709,-4966,4369,-9795,-32607,-13693,-12871,-7790,-9794,25015,-30683,10337,-21211,12053,-16466,-17696,4419,-21099,-10584,27680,16477,31571,-31019,8536,-27360,-28678,-9420,12124,-30474,23463,22440,13986,9998,-4290,-27252,-30858,-5993,-2139,-3410,-15163,11967,7697,8116,-30871,-6322,2106,-9059,-30475,-18618,-1530,-30388,-28781,13187,-7008,-9144,-9818,-26446,-23906,-13383,27014,29537,24642,-25675,-27116,28797,276,-664,-10666,-29099,5265,-27748,-24645,-26806,-24193,-16921,24334,-20500,-18773,-30444,7907,-12803,28467,3161,16282,13933,-23986,-24681,-32148,-3310,28031,-3215,14340,4674,15968,32381,7584,13763,15592,9610,-21741,-1159,15687,8896,32337,1621,4722,21949,-16229,-18318,-17529,-23814,-21989,29872,-8212,-19885,31394,30073,-25321,12557,-8508,-402,-13891,-11027,-8925,24034,-20607,19039,-22572,-20171,-21827,-24516,9139,101,-1228,21890,16022,-23739,-32207,-24420,28636,-15802,693,-1784,-2839,-665,10621,-2571,-29034,-29739,8661,20294,25330,-2205,-29349,-17083,-5811,-1408,17096,26873,12288,-8699,-16718,-22305,21762,-1010,15747,17534,19179,-14108,-29213,-6556,26804,-19747,1716,22245,-6056,-14973,24398,20272,31580,30337,29325,-7408,21826,-5657,8573,-4922,-2693,-21031,22607,13713,30684,-5254,-6866,30991,7911,4891,24864,13075,-25081,-9747,-31115,31262,-14723,7358,13639,-1769,31740,-17129,-15225,-15319,-2983,-1602,9720,-31925,14767,7338,31196,7867,13417,11935,16064,-28363,-3515,10593,2422,-3843,-26477,14888,-7134,3597,-22972,-7979,6585,-25290,-22246,14199,-8922,-15916,11154,21488,18473,16719,13871,-27717,-32764,5380,-8321,16851,-4270,24989,-27581,-6744,-18967,-17452,-17379,16023,8914,13432,-29343,31801,23871,6574,-19130,-5109,-32079,-7475,-8717,29583,-32390,23847,18236,2346,3015,25737,23927,-7205,13340,-25566,-28356,3809,21592,28898,-16524,22633,6266,1241,-12008,1772,-21335,16291,27140,29162,23262,-29852,-11933,-572,30269,-3925,809,-12878,5336,-25445,28078,23383,-28685,23411,-11382,4127,-28455,12565,-21798,-871,-28997,28270,19322,21317,11386,20978,25404,-6080,28466,19686,-24067,6809,-28138,-10386,27053,10966,-20750,-7545,-28051,14844,23873,-23977,-25453,-21541,24899,30577,4947,16170,19010,-11775,20544,-6012,-29924,-17461,-14661,2719,-19313,24984,13655,-756,11546,-11318,-24357,-20936,32278,25056,17516,-24194,-2450,10620,-20147,-6318,17352,25548,30037,-1747,19247,28845,32335,24753,-23185,-19738,-1969,27908,-28011,2217,-7505,4723,-888,13903,16883,-21553,25330,5726,-649,-928,-12218,22898,-11981,-7148,27403,26482,-397,-8216,-4923,-7973,-19573,3952,13524,-9717,-17745,-20700,8763,21889,22815,8621,-23345,-18288,-5073,-20248,-6639,4436,12014,-3769,-1891,-31684,-389,-1908,23159,1072,-13197,-16392,27613,-10542,-23051,-26895,20982,32380,22429,-16297,31670,24463,30314,-31716,6898,-28677,-10593,-19545,29357,32641,-16740,15682,11090,25460,24576,32073,-8264,27473,-7506,-30487,-26352,25130,-4663,2909,10745,31501,12454,-30879,20845,1560,-14263,-1582,1721,-7969,-18457,-17746,-13128,-6024,-3302,-11777,13393,7319,-11500,30067,26758,7460,5202,-6870,32719,-31298,-497,14974,32538,8499,1214,7175,4408,-11044,17137,-1492,7942,-26762,-455,-31768,16620,17438,-15792,-27564,-32582,-30999,-28574,-16148,-26805,-8944,-23560,-21805,-12957,-14323,-28801,26695,30206,-16943,-18576,24912,12310,5636,-5487,2779,-5308,-12587,13788,28705,-3366,16209,-3955,-15169,20747,16342,13960,-15207,17247,-226,15880,28172,-17286,-14109,-11406,-10258,21037,-24538,-8016,12452,23959,23031,-9345,-14733,-19235,-2921,17590,10603,32383,-8604,-9777,-23730,-14516,1712,2744,-8867,-21706,-12496,17956,30534,-30679,-5321,12381,-3377,32226,-4616,17736,-28,-14850,-23646,8778,13530,-12099,13712,-27711,-10451,1145,-10044,17490,-7171,8430,-3596,-21723,-8887,12567,-8350,22003,-5521,-25141,-28720,-18864,29004,26539,-25557,-2727,-20363,30879,-4809,-29007,630,-2330,18100,18371,29102,13401,8786,-1857,28613,23642,3409,-31682,-23757,-5621,31365,29740,-26836,7676,29394,11135,-11440,8689,-19437,-15753,23063,-16509,13072,-30929,-3075,-7689,32688,11130,12249,-30714,-27274,-17034,20660,-17021,-10134,-3544,31975,-27063,2703,25765,27890,-16816,26174,26639,3957,-5503,30403,3589,28756,-14059,29084,21915,4700,-19536,-10768,8265,32134,17664,31347,-19800,-2802,-11014,19444,2585,-26396,-142,18037,26685,-2446,23853,23082,18156,-28618,20800,11126,-6037,-20063,13144,17914,-28158,-17250,10411,22056,-7205,32040,-1999,-8007,12864,28254,13365,-31238,-7772,-23708,-12493,20715,-11983,-27336,2112,3502,25408,-32174,-6758,-31381,-22084,-3625,-14555,-22589,-26735,9970,25177,-30695,9982,12480,-30237,-23007,16171,23421,-11509,23860,-30877,12951,24399,-7522,-15835,4108,-13101,24656,-12223,-20396,4642,5624,13051,11948,27080,-30760,-1118,8558,20632,-2925,-4162,-9841,19608,-14712,-18580,29877,-1466,-14984,-6307,24278,19272,23508,24939,-32348,15869,-27246,-28549,25420,19897,4172,-4083,-26698,28116,-573,-2701,-3738,8554,22219,26611,8904,11831,-30633,14763,26495,-18847,18840,23597,12702,-10093,17902,-8341,-27889,-28044,-2729,-4630,-28109,17811,4322,-29760,20576,-14393,-20737,-10157,24772,-19668,14285,-14672,-10791,32652,31288,-18851,-15035,-22602,31736,-2832,25989,-3304,-13067,10405,17655,2355,11698,26584,-31157,-6843,1234,-21699,-9977,-5492,-6161,-13081,12971,-27939,6641,6313,3718,18265,-13552,-7156,-11828,-29453,5925,-3973,-19830,14309,11128,-15858,-18748,4125,-9104,-25539,6698,31383,4125,22920,23706,23850,20874,31189,-4967,-13806,-5050,-23886,18854,14751,-13103,20738,32054,-782,15391,22311,10719,20682,-15331,-22694,-8333,15078,22518,-24299,-1593,6911,6043,-17798,-2899,-29909,3491,1699,-6534,-25011,12974,-22156,10301,1517,-29059,-21330,24601,26629,-22486,18907,-26710,9490,19289,-9980,-30119,-3599,10089,-27354,-6427,-30302,10475,25950,9373,-10814,12361,10208,23756,-28399,7697,28735,28221,-3712,-15388,-11290,-9951,15515,-9091,21148,-4570,26175,-7486,-12001,-11515,-10204,-15198,1720,32525,6375,-1147,22764,-10356,19071,22165,-24727,-28116,8760,10410,-2458,-18528,-5939,-3651,-4068,-7287,-28904,-18538,-29138,-1059,16093,19499,23228,11717,6067,-19755,-26030,21170,28410,9175,-5940,-6163,-10046,27564,22890,-15785,13771,16801,18861,24550,8955,10989,-12601,15838,12380,27437,-5234,-14999,-9834,26614,-9594,-13705,-17344,12604,-24899,-11857,-15524,8452,28801,18025,-29116,-6405,13660,-32761,-3562,-18330,-8925,18248,-20806,6514,-17296,-16643,-5826,7525,-10226,-4066,-30264,-24026,-22070,18288,-20168,25464,-18591,29490,-10843,13197,-15100,-32475,5857,31678,21210,6685,-1248,14561,19174,-28290,13495,-19469,31150,-11230,32639,20878,9497,-27496,-23181,18288,-25525,-10235,12368,12430,-26551,-9598,20314,18825,-3809,-2022,-30206,13207,12634,2557,4279,10011,-13615,32401,22283,5593,5685,984,12735,32555,-3152,16827,20879,-14406,-32721,18253,1104,-16457,-21951,-21127,28612,-10841,29798,7158,-4627,-8773,-20976,-23400,-28477,-9311,-4298,16193,26391,13731,25742,539,17736,24542,17390,19769,27245,-10623,4752,18552,-22198,-13380,14643,8372,-29134,15893,-1650,-4580,-18714,20823,-10044,1135,-17831,-7442,17458,12301,-31853,-24305,-11943,-23180,25386,-9035,-25298,-16795,2385,20768,16070,26607,3562,-7054,13817,-1886,-12507,-25583,30412,-25629,-21689,-29623,948,-1480,-7775,-27333,-21098,-6401,-13387,-22724,-16352,10797,-27241,-28788,-4355,-3093,-23418,30900,28640,13005,29926,-11809,14675,-25201,6839,-27889,10116,26624,-9829,11469,4209,-10158,29976,2745,13131,5841,23203,22113,1660,12988,1511,-23479,-26566,17354,-24392,-12634,-7600,18471,-16908,-22842,-8517,-4435,25294,-21013,-29671,-18804,5746,8138,10343,11746,-20816,14642,1657,2602,13077,23121,15170,25412,-32245,29494,1584,-28780,-9756,-26252,26470,21134,-23491,24566,8319,-22197,-2845,-27572,27906,-29680,24736,-16725,-2896,-25981,25603,-18560,12805,5190,-28644,-8543,-27446,28585,-2099,5375,-20889,5150,15285,-22782,31188,-30824,24218,-3056,3296,4076,-21147,17522,-28660,-17985,-26943,3389,-434,24003,13809,7960,-23558,-8001,-3062,-25673,9,-28529,-9265,-17685,2399,-27784,11392,32057,-16495,6164,3167,-3762,-6417,-20777,-2106,-2815,16454,6124,19999,9205,26671,-26297,-23559,5963,22671,25025,11599,23312,-28382,22670,-24611,-11914,-27401,-3734,11023,-11029,-21493,14901,28750,28298,9312,-16910,24629,-18278,11905,1465,-25896,-17221,25583,29954,6949,-2248,1445,10995,-5523,8707,16919,-3746,-16479,-25323,16483,-11272,9892,6257,-25948,21912,14075,-10147,9423,6843,-21911,17968,-22814,-26740,29079,6636,-24282,10670,22561,-1968,31904,-31967,23150,20956,21468,-24431,-11343,4496,19260,19226,-31640,7443,15843,21587,-12880,14561,-26654,13908,-7435,-16686,30293,-6637,1457,12285,-22435,13651,-6531,-24597,21363,2509,6015,-10552,-26858,-18366,25567,6327,-4486,5821,20667,13803,-25743,-15342,-2727,-15364,-4781,17698,12260,-17388,24238,18567,23657,756,20493,-41,24759,-19283,10459,7240,-15459,-15914,-5930,28400,10920,14906,-18821,-2799,724,-20595,-31930,-30040,13642,5185,-23296,-2749,-1871,-7812,17200,21419,19351,-31100,-29425,-21592,30460,-20555,1855,14686,10657,8550,16900,3377,-30501,-943,20234,8072,9466,15196,-23359,24474,-16899,-9872,-31825,-1250,16933,16455,-9414,-3129,-9312,11598,-12841,-22800,-31200,-14344,2529,-32070,5148,9777,-23713,-32382,28945,-29494,21915,2591,-31330,14325,-17013,-19337,-895,9837,2582,13862,-16379,13815,-25834,27916,-23859,19646,-31555,-17018,-940,-7326,1376,-9321,-2963,11190,10705,-9456,7060,-7385,-3574,-8063,20782,5684,-20718,-25940,-14487,15068,-26459,10719,28819,-3598,-23202,6617,-21075,24816,18466,-8549,-28219,-9483,27401,4212,-22692,-24299,-26695,-31853,17201,3884,18553,4044,-8357,239,-24940,17918,2917,5801,29263,-18389,-3109,-23879,-32168,-1983,30216,-3439,1125,32557,14321,-26860,-31721,-27719,30590,-5612,16887,2204,-15965,24151,-5340,-15814,-29552,-15832,23804,10805,7022,9529,-11032,31585,18558,-28158,-27711,8616,13935,-3903,15062,9660,-27956,-14221,4173,17874,30858,-23997,-19795,-4906,3264,9816,-29099,-9896,-24768,-32240,-30873,13018,4984,4239,26147,-19032,19100,-31508,-27575,6046,10409,-28877,-15808,8286,-7108,-8422,5555,1786,21935,20498,27791,27890,-1547,24373,-12251,-22503,-29079,5103,-1646,20096,31857,13818,-22716,18968,-21157,-26082,-14477,-9018,-29366,14833,-9840,29457,5934,1221,26697,8802,26537,-22451,-14955,-9059,18898,-14589,-31865,22697,12211,-21601,-5764,-19076,8930,-13497,-31158,-403,-23171,4127,10453,22410,-23068,14752,12362,-27655,-3777,-10531,30079,11987,2971,11279,-27636,-6868,-16715,21266,7516,-27727,25515,-24482,32010,5034,19063,848,27294,28345,21784,-32661,7074,-6436,-6715,-9459,32305,-5909,-29054,-27886,-26429,-22097,-32743,27485,-315,9900,11133,30478,2336,26371,25797,-6035,21439,15935,26679,-5587,-5470,-13867,11805,-18799,19549,-25457,18151,-24055,-17882,-2978,-24952,-6076,-1832,20326,-21404,-4455,18117,13247,27429,-16712,-21502,-17097,-32166,11478,10589,-2143,-28535,2925,-24771,-17414,10230,-2966,-12554,-7970,-6468,-13385,22196,-10711,-4687,6965,29985,32623,-5990,-9083,-23486,-3235,17320,31030,6540,-16326,-24827,5642,17681,-1884,24439,-16656,4804,-18761,-10431,27438,26157,-22674,10844,-29710,-26026,23270,-12954,23448,-6810,-26661,18164,-16955,3543,7281,-4377,-25769,-16623,-7425,-15100,3540,-7215,14893,31964,-9594,19638,10829,594,-29230,23911,11256,-9045,16566,-21181,22451,-16819,-8710,31514,31845,-6084,31948,14881,5288,27715,31995,-7761,-12512,14307,-5409,14739,-6,-4903,10010,-26284,18660,-2310,-29978,-295,31207,-29011,-28103,-29758,-3719,26931,121,-18659,7292,-16366,31435,-24565,15346,-10712,4609,-30374,-346,-18172,-10652,-2188,-9216,25998,-13983,-2461,16615,-27325,18736,-8904,-2564,593,-17661,-30687,-17753,-20620,10430,1002,17635,12131,-14132,2981,-22314,-28185,-8624,-2274,27803,11240,22561,1683,-19902,18274,-19264,-20580,-7024,3248,-9880,-6928,29200,11344,-24815,16080,23691,24899,-11819,-30299,5056,25986,-8793,-17044,19916,-26524,9530,-24151,23339,2333,26687,2614,12962,1610,-26985,-14112,-30084,-30451,1444,25707,13022,16066,12721,15345,18276,13631,32109,-23539,18640,30958,-18616,-14300,-26749,24897,-9751,7934,-7548,5558,-19311,-31647,-20044,5189,-21246,-19183,-31290,29091,-15680,13892,-14624,14412,-31314,-31661,19317,-30789,15680,10118,2204,18222,-2383,-15252,-6044,416,32225,11930,-10538,-18538,-26589,15013,-13985,9131,-28175,-27763,5381,3056,8370,4618,-11189,22525,-9760,22845,-32757,27383,-3152,-27658,17637,9947,7803,-19650,9533,-7177,11697,27711,27252,-29203,-19177,-5559,-9686,-12769,11782,106,-11834,31357,-12626,-13578,31094,-12730,-28650,-23373,-15140,-7264,3721,8287,-828,-1338,-26853,-20713,-18552,-6253,-7860,8807,-2195,-26432,24829,837,32154,-3356,31324,-26918,-25960,31381,30528,-167,-2863,-19912,5189,-22295,10709,-14601,-31287,8402,-11471,17254,13083,-22358,1175,-29562,15338,18686,-31461,10892,25174,-32239,19220,-28598,-4465,27488,21104,20828,-13095,-5839,30355,-8708,21379,-24260,17342,-22110,18108,-19743,2202,10487,-24478,-31189,-14857,-18593,28561,-4530,-17846,30460,-21074,-14678,-27509,11533,24375,-11823,22676,17654,-1478,10646,24331,25623,12680,-17705,20996,27881,-16027,4847,-9766,-286,-14448,6344,-17498,-256,-10823,16288,-29754,-14586,-3467,1302,-24479,-26343,2043,-3406,-2409,-19153,17890,-29928,-27125,-32394,1354,396,1779,-22087,9047,-28726,3727,14716,21713,19924,-10870,-13323,-6642,-9130,-26817,-18408,17777,5174,19016,-11777,28386,29451,881,-22885,5822,23105,24696,31161,-1441,-5496,29365,25158,-18091,25520,-9556,5592,-6505,-22544,8128,26066,7225,-21907,21348,-6906,-15599,-28024,9082,-14998,-20759,9991,1145,20395,-10210,-16263,-6720,30192,3386,-12307,-8259,-19303,-9948,-17638,-23110,1721,-4480,-20012,29814,-20080,-9688,21263,15,-28167,-24617,20788,-24210,-18090,-19104,-20610,-3173,23078,-23705,-1924,-5547,-26218,26702,7722,-22380,26593,16843,14400,18453,14391,-24763,-25568,30373,20191,-615,20950,-24075,-24206,12760,-28416,-4153,25848,10355,24720,22680,13643,3238,-20458,-11620,6576,6664,9457,21023,11006,-21503,-28058,12011,21366,-18385,28708,-31792,18393,15477,5705,-24577,31792,-3165,-27851,9331,-24833,7384,18338,-32526,23062,726,2376,13923,-5041,1974,149,-3779,32076,-4631,2635,9100,-32164,-12938,-12809,-294,-2401,14857,20504,6761,13360,21209,30283,24768,10170,-30337,-5901,-31627,-11394,11643,19946,1006,31939,9639,-4609,4407,-18881,20616,-21344,19708,24069,-21043,-28819,28257,4284,-21140,-29256,-28450,-1963,-28447,21023,-30540,3477,-32583,-20225,19442,1707,-21840,11233,-26035,-12999,-17446,-7707,30579,-21054,9785,1966,-18543,4485,-8193,-14043,-13532,-13504,-18228,-32106,27835,-17063,-10268,22620,5445,-16812,-4446,-19505,29986,-18426,2249,27265,13604,5589,16002,22826,22459,-30477,-27221,-15164,21143,-16058,17683,11178,-14536,16322,-9012,5811,-31953,-4670,29915,-11554,17627,-24047,10846,11301,23166,17306,-29209,-31083,20000,-26302,-4240,-16431,4688,9003,-16153,-16204,5049,-1294,21524,-7798,-10004,9697,-14126,17021,31957,-932,5988,31982,13753,-13165,-5183,24832,-7227,-19106,-25888,-13381,6409,15987,-3540,17195,4666,23694,-3655,-29661,-30294,20406,-6825,13276,23588,17438,-15002,5291,31862,3095,31901,-16489,-4727,-6827,34,31615,10863,-28215,-6193,21368,-2127,-31377,-1428,-6867,-28576,12007,-4495,-16981,27702,28110,-20430,-32291,-27115,16991,-3481,17632,-14940,18264,5965,-13639,-31671,28176,29797,3903,-23877,25290,-7852,8267,24739,-15240,-21612,1702,-4562,13605,14292,9710,-24032,-3287,30195,17427,9761,15054,-11025,17482,3082,-31177,-20970,5639,22102,-23819,-28254,-15922,-17084,20671,13846,2497,-19922,19408,-9798,-17152,13547,-7518,-2871,18605,-22505,-22421,15448,23841,-21970,20871,31530,-6572,28509,21575,3270,-4778,-3129,-9880,-29377,5592,10252,5588,-10841,9968,438,-1771,32114,20841,10012,31330,-5069,26711,20481,-4951,-16668,-2103,4864,8054,30048,-26571,-29703,10338,-9759,24631,7824,6130,-28269,-19767,-9766,-13716,-10171,1809,-6490,-13146,-13610,31596,18303,-5575,6770,26738,-7339,571,1231,21870,-8566,10918,25759,22448,-17710,-12110,18438,-2604,25324,-24627,-3607,15287,25908,1126,28770,-16593,-5713,-766,-22445,-31961,-23658,29931,22235,-27751,-973,18902,-4206,13263,14787,-5286,22015,-25840,14590,-21711,-21510,-20040,23681,20047,15824,-3716,18725,-20501,-6467,14565,-16293,17286,-4012,-14432,-23296,-31371,-25405,-28596,-329,-570,-512,22624,-18438,-5668,-15213,-15335,-6014,2652,-8539,15281,-32389,22966,25338,-6642,21006,-30182,32740,24957,-7608,2859,23654,26311,26459,-7556,942,29419,-9620,26525,27615,-3243,-16583,-27951,20353,-11815,28620,18988,479,18854,-6995,4374,-6573,-11972,20164,-30329,18157,12098,-25295,7752,3846,32417,-20523,4974,11355,-14216,-31160,17976,-13011,-23596,29147,18258,-26925,-15935,15774,-20802,5490,-13526,-32458,5218,-11119,-26214,12198,13506,-22453,5041,-17796,-17348,-5649,-23783,15851,-17556,-30966,-14897,2771,9809,19222,5014,18098,-27736,7098,-2480,-10375,3959,9598,16397,10973,27338,-16960,-10008,-28515,32345,19393,14704,3900,-8687,15538,5940,-21606,19852,11873,-30465,12845,-1113,19599,29874,-17896,23570,-1709,-11517,-2131,11895,-18837,29615,-327,-25457,-12663,8505,-31000,-14406,5474,-134,11724,12888,-1853,10943,22781,13605,-2834,24740,30624,10767,21123,29762,-8675,8290,277,1739,3886,16046,5920,-17455,4510,-9228,22007,28651,-1166,-7606,30591,-15317,5397,-27994,8537,-3475,24163,3573,-16852,9435,9589,-10995,-1174,-27696,19322,31895,-5601,-28046,-32563,29892,26215,-13738,8897,-22434,10962,-18536,15029,567,-15370,-1695,-31743,-6699,-3341,9007,16457,-2969,32735,20672,4083,27546,-20838,-21088,31545,18878,-8567,11894,-5250,-32763,17601,-31335,12185,3740,-29761,-11417,-3343,-14830,-24119,-32315,1480,28325,21743,-3690,15692,-26056,28540,-25236,-12984,-11417,160,-23982,31853,-15886,-28478,20416,-8163,-6978,20282,14369,10061,14633,-29064,-29707,-6816,-4831,-20777,6216,1786,17709,1481,24595,-11049,27550,-14098,-4110,-8862,-24495,-31771,25555,-13849,21999,-15853,31027,10863,-22559,7619,671,-19385,-26157,-14136,20095,24589,-8827,-26945,13849,26166,-15666,-20772,21194,5662,-21106,-3655,-21991,2767,1995,-1136,9212,-8243,18384,-6023,19584,1812,-15121,17303,-1783,8387,-1103,10936,1564,2311,31842,32051,24233,-22457,-30252,-6156,-31296,-25968,30687,11673,-4346,-15113,25244,3087,-18982,29452,-30447,-12516,23942,-11751,-3658,-26200,-22873,-846,-11098,27749,-29681,7375,-10655,-29142,-18869,-22771,17820,31292,-12931,-12433,-10082,-12406,2453,28715,-13052,16713,30177,29210,32043,24103,-3385,-18743,-31070,15196,-21839,-23574,-14402,20514,17876,7958,-5463,27779,-13614,19895,-6365,-6524,-15049,-10219,18966,-16035,27422,-24805,-15945,-18953,28288,-2162,-3138,29367,15112,10421,18486,-29679,11551,7500,3983,-24603,-4645,3096,-28867,31380,-15891,-2867,-28319,17181,-3201,17253,31375,-24469,-30260,19921,-24323,18791,-5813,29462,-5017,10950,3118,-14128,-4235,505,25659,-24142,-23593,-5032,14089,30607,11615,-26883,24523,9044,-835,-5579,-2657,-4930,-1338,24009,-3808,-2958,-5383,9505,9288,-17125,30886,-29300,-16055,-15039,-15938,4510,-24316,17057,-29717,-22729,31445,-31986,26239,-20700,29000,30114,-9733,-8284,2255,-32541,-32419,23462,-19201,-2941,-13324,19157,11159,3405,-8902,28921,3565,30279,4733,-858,-16070,-5045,-27072,-6927,-11539,19406,29119,-32455,-23910,19382,-7969,32536,-14407,-26170,-1700,-30836,-31507,-3970,-20092,-679,-32265,-19869,-13352,1592,234,-15996,-25844,-4172,19863,-30877,29206,9223,-12627,-30759,14871,-32270,4323,-21586,28231,-9113,14028,28349,6707,31226,-32650,24400,15233,19193,-3495,24119,-23063,20287,24278,-8150,-22830,-3327,26951,-9720,-18269,2910,-2384,17230,3315,25464,487,-4001,-14005,-20556,28242,-25207,-14838,-7153,-32399,8991,11915,-23634,112,24963,-28412,-25747,4308,-28992,-17454,20271,24366,-11453,26973,-30295,-17910,-4704,2204,23706,9642,9867,-24399,-16444,-31323,23195,-25957,673,-1505,-31603,29643,-5828,8637,9643,24617,-8547,-5066,535,24045,-16563,19404,-5031,29438,-29692,-27054,4395,15792,-6638,-6048,-697,-11031,12658,23066,-29778,28582,9191,15519,9591,-9342,-27850,-26259,32306,2378,-12433,-1407,-13187,3642,7473,10797,-28389,32474,29379,17172,-21081,-25589,-11388,23839,4385,6967,14671,-682,-24058,7545,5057,-15573,10168,-25082,19591,-21757,24444,-2578,-25877,-24215,26714,-16155,23151,-17761,-12121,-17685,4121,10486,26941,-10417,-23251,12480,-24482,-17670,-5781,11722,-28079,-17806,-149,20962,-20291,9026,-15360,-19673,19509,-5769,6754,25634,-10524,-29903,28983,2362,-31515,-25192,-973,28233,-31884,10750,-32716,29327,30320,26351,15634,-5500,-12824,10895,-11783,-5020,-31608,17115,-11320,23819,-7162,-12111,-9273,16584,12738,6921,-1841,28338,9316,20552,25318,21854,-7074,23218,23657,-30669,-31917,14919,-4616,10487,-26768,22004,4389,-13378,-944,7310,-29870,24196,9683,4591,8922,-8940,4602,-29940,22843,25624,-29292,-2977,-28464,-7171,-11201,22155,-27899,18681,26292,-1388,19224,18736,-10254,-6198,-14479,-10027,25997,-19141,-25499,-19512,-30825,16421,25466,-9600,-21084,28366,7238,13658,-20586,-29850,-9759,30319,-15551,-18580,-28973,19008,-28713,-14168,-8743,-30180,-16899,11342,-1622,18840,3600,19375,3566,32192,20427,28596,10580,2619,-438,14358,20992,8060,-20378,24433,22245,22605,-9375,-6062,7110,6135,-14927,31164,28195,10613,-7712,4554,-3874,-10743,-27075,-10448,-3490,28504,17087,-7548,-26717,8392,-10891,-27491,32168,14870,-5577,-4268,-5312,1904,-12772,-12828,7786,-27165,-1691,8153,28367,-12549,18817,-612,-32629,25658,-1234,-1243,-29638,-6963,16861,-12290,-23194,-305,-23063,28761,-27100,12347,-15409,6368,-28373,-2370,8337,-3904,4967,20440,-11958,-15605,10649,14894,20779,-12268,27059,-32727,-21541,-8216,-22600,26323,-8091,1022,19983,-30445,27714,-2680,14400,9465,-10868,-1934,-23577,-13843,1068,32516,30464,13723,21317,-18084,9476,-24762,-32584,-1003,15223,29082,-10399,17338,27584,5552,-25183,-23690,15899,-29514,30403,-17354,-19270,-15448,5932,5579,25723,9566,-796,-26334,17609,-19484,6071,29678,-27021,32752,4777,-27347,21526,8987,-25729,24339,-12438,19121,-12826,-20605,-6617,-13907,-16364,-14857,15631,-6814,-32569,-14149,-24567,-11319,24821,-24979,-20425,4333,-2688,4552,17755,-14999,12199,-5456,-6931,16661,-11553,6022,30025,-25127,11307,15640,12971,-8409,11838,-32422,-18225,-28648,5782,-31339,29739,-27367,-12320,30764,3245,-23062,25803,3852,-4037,13831,-23522,13495,-14100,-15813,-13146,-20380,-30096,5232,24637,-28886,19105,-20220,-6882,20417,14726,-28762,-25742,31565,-3721,-25494,24938,-29712,-4419,3908,15732,16995,-6906,1599,12700,-10572,-2719,18171,22665,-5108,15931,30329,10985,17330,-9200,-5055,10585,-9260,-28845,3666,-26966,-22307,-3842,10647,-18854,1019,7030,4228,20946,-30249,24202,25272,-8310,23419,-5264,-137,30578,27972,-25539,-8074,-16733,-13646,-968,-12308,-22006,12734,30614,25045,26303,-9280,26327,-32467,32741,-27836,16901,2601,8257,-17399,15953,32244,-22053,22922,-14129,18613,-2129,-20747,21088,-5161,451,11610,29402,4570,-12003,-1692,-28039,-29729,9843,12096,28010,-3968,6473,-20153,-16325,-12078,8105,-23904,-2870,6264,-28586,-22317,29791,-5033,10251,31153,8229,19704,27731,12617,-17290,-24854,-868,77,-12791,13433,-5177,-11429,-27439,29426,-19427,-8709,-23463,-24671,14452,-32561,-15120,7004,-21422,6444,-30553,-9669,-7461,-19913,4128,11113,2560,-23858,18333,-22680,-368,-4813,-21316,-28554,13834,-1549,5555,-2394,-20,20960,-6706,4355,-11513,5757,31924,-30747,3631,-29732,-20007,9874,-2651,-14710,28990,-1415,26592,12684,4052,-20466,-9758,29885,4916,27772,-17248,-23349,29963,3679,-16309,32570,-14718,-12059,20681,-19937,-30901,15036,-21581,17493,-3258,-20925,-24990,-18558,-18870,-17115,14959,-1339,5462,-28418,-17910,9180,-11048,-5180,-9721,-20785,31939,-17421,-1114,-17755,-14738,-30015,-3488,19091,31033,-29732,-30497,-32095,18712,28940,12677,-31530,19735,-7640,-13173,14846,-27000,14773,-11093,28093,25835,26031,2960,6004,-25714,-23056,26758,-5151,31779,11087,-3192,-21565,2412,18921,154,20817,-30838,-21226,11956,-20141,-14494,29912,2991,-14640,-18442,16511,23635,1435,-7464,4050,27838,-12578,-2727,-14669,-9246,13144,-11369,19510,10494,-9128,-12637,19778,28881,12976,-25858,19533,28705,12302,-31494,-16028,-7024,26039,-23707,-8736,27176,20160,25703,-9143,29269,-9455,20317,-26168,6189,-28451,13767,13358,11825,16733,29963,23393,32688,12996,27381,-27724,29947,-32386,21162,22826,13845,12198]},"conv4.bias":{"kind":"q16","dims":[640],"v":[-30408,40316,-34549,25016,-39688,30335,6961,-16666,19636,38032,-12317,28378,9904,20417,43179,-59367,-62296,64989,-50722,-52654,21342,3134,-2630,-36262,-35093,-63247,42122,-14893,57693,-30377,-32195,-55783,58111,-42800,28699,-40115,19196,-40434,14501,16449,27184,20194,55632,53958,-37588,-42134,-2088,-22468,-13639,18142,26728,46160,-5578,-28454,24890,42855,10827,-24918,-7570,15847,-42598,-63159,-22322,-27951,-30674,-7445,33242,-54367,-62138,37444,11997,48995,64756,-42466,4534,53848,62427,2834,-50160,-32684,1475,-835,61804,-14222,-3836,-810,-57558,-6385,-20374,-62003,-29766,35829,31385,-36946,-37656,18469,21607,61778,23588,20156,-4938,-25045,13316,-35932,-17422,4921,-7891,-36925,13259,-12448,-6725,22948,-25783,56405,14067,-7189,41782,19048,7113,-6393,12118,43823,-34955,-48927,49906,59766,-22957,47703,42531,22425,34688,-53884,1204,34251,-44981,53910,-29958,19718,-6273,11510,47168,-4590,-18977,-3743,1910,17934,-33717,-49520,-57437,-50346,-63696,48970,50669,20434,27476,-3499,-59613,21689,41088,59744,40084,-46894,-25503,538,9405,2288,63816,17350,49258,-43807,56724,61004,-3201,-3009,-51566,-18835,-10168,51629,-21167,-7403,19408,7818,30246,11763,9401,33612,1313,-48664,45487,-52259,37884,17580,11799,-6568,13613,42445,9905,14284,-13464,-9364,55378,-52111,-52170,-17844,-29048,45819,10341,1312,-504,39751,7696,62486,-20086,20963,30109,-15112,-29269,-40320,40724,-6037,-24933,-42687,17755,3041,-48707,29218,-57364,33119,38632,-53515,8838,1503,-8758,-31150,1268,50543,21166,53449,-33138,-57777,-11822,27589,-19175,-59435,-65175,56165,54453,-1633,7277,-47895,52688,-55967,28,43354,-2579,12454,8740,-37270,-26437,65501,-23475,52445,-13382,18982,42978,-3913,-24709,57048,-31190,-20620,-61935,-7176,-34659,64377,-20575,700,38850,55494,16441,26066,26659,23430,15065,-24327,-38820,-46681,34213,17696,14662,-24583,-25636,2324,-29834,1421,29822,-35146,21986,37668,-55041,8789,22315,-17373,-39123,-55839,-33337,-60995,-1016,-23256,-39939,-46977,45378,-2065,-56972,-56970,4117,1930,60965,-45232,45432,-45661,-6765,65186,37647,18001,23640,-59875,7607,19258,-6135,26516,-29954,13481,-4833,-36172,47217,44896,27133,51231,-25072,-5704,10935,19712,7262,-65047,-22509,-17521,64438,-17756,-28433,-24324,7690,35006,28794,-50688,30346,-29599,61037,28842,6140,17860,7265,50527,-4694,43060,29209,50855,-23876,33059,2887,40933,31504,5423,-30543,-19505,-63375,39516,-45634,-63828,-38669,30066,-54073,31717,52156,5921,52614,32475,1138,47421,28118,-53121,62231,16741,50469,-3539,1111,-40195,-20227,-45324,-57059,-24910,29372,16950,46423,-50377,15672,42320,-20342,29475,5456,-63614,-31540,-49896,1082,5475,47724,16598,14906,-1426,35848,-51425,-1514,-9019,-7662,-17863,50321,-38160,62554,50631,23841,-19655,-6045,-47522,-39564,25798,-52026,-25962,37096,-23106,-55742,-4929,582,-52160,-880,-8959,30011,-20004,-51204,-16345,51857,39347,9857,-21740,18643,18363,-13567,12083,58193,-23456,28274,6571,23638,-59294,21574,8692,-21319,1795,44959,-56082,61736,41720,43946,47878,-45822,36026,14847,13990,4648,-40771,6994,10052,18140,15835,-54145,43324,11603,32114,-65162,42127,59417,-21272,54384,-12440,-48494,-16536,-44776,-11671,-17654,-14437,-35197,34215,-38885,44323,12619,-45350,-25971,-41353,59603,-14566,49821,-50058,48569,-30246,49018,44953,52598,-34673,60743,-39639,18656,-22849,51668,23966,-11474,-4640,-9369,58986,574,-9117,19651,-61321,-30439,-19488,17079,-53643,8734,-11938,-44403,-6966,60405,43715,-20486,-5344,22051,65017,7562,41186,-29128,-18253,13423,23736,25200,-9188,8696,41700,61511,13097,58336,-17302,32427,-14505,-47944,-35724,48518,44797,25165,10033,30523,-26183,-21677,46509,50528,-50199,-40826,-14896,-60699,25930,-29612,31447,15144,16156,-39453,-36130,-62387,57706,22588,-2962,-21293,28180,55459,40228,-63939,-17268,-1931,45663,25248,44585,-7580,2922,58438,-62567,25531,6850,-48571,-23835,18650,13550,-4694,60301,-1100,10914,55349,61141,45619,20280,-22853,-36437,-51115,-30228,-2470,-48408,-46285,-11793,51825,-41614,810,-19238,55093,8514,31932,-35670,52629,64299,-28235,44759,-59601,26215,6873,-44779,-18109,-7157]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/mcm0_y.json b/wai/ops-conformance/sets/jpegai/weights/mcm0_y.json new file mode 100644 index 000000000..abcbed866 --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/mcm0_y.json @@ -0,0 +1 @@ +{"fusion_pred_net.conv1.weight":{"kind":"conv","dims":[2,160,1,1],"mult":204,"shift":29,"w":[-3716,19116,-1860,-24856,32678,-11115,1556,9660,21290,-18707,27458,26250,-15008,-12356,24616,-29890,-31012,-21607,-2059,-26727,-2988,-18811,4887,-17302,-9819,29687,-15722,8405,-5965,-29422,-9181,20123,288,31495,789,-29567,-29616,20939,-9567,-10105,9613,-26804,5627,-26911,-19424,4293,-3830,-14516,-19614,24520,12482,-17256,-2032,-30370,24229,29069,-19504,31665,8313,3645,13036,13691,14002,-7584,18744,20004,23606,-26303,-15196,14226,-14391,-21791,18274,-2016,-8915,23346,-8133,15251,-22441,31842,27127,10304,28098,-25676,-16340,-347,12738,7723,29695,32467,17302,2816,-30378,5870,21905,-19552,22028,-14632,-3535,20980,21621,3425,16351,-26963,6213,25030,-17318,-17699,2040,10578,2034,15521,14460,29397,8083,-16237,-2665,-5384,10810,12835,24958,11102,1835,1792,19393,4956,-6843,-19397,-2103,-24626,24054,30084,29267,10775,-25393,14165,23356,-285,-10368,4852,-30268,-537,9412,-16726,-18249,-29751,4182,24545,-1900,-746,-27711,9361,8995,16590,-2519,29775,25611,15291,-19525,25955,-24160,26936,13542,32218,-21834,-10134,-10353,-1132,-12307,2563,-30620,-29420,-24412,-26086,24943,24125,-14757,-27504,1228,32617,-32732,28804,-15003,2639,4117,25423,14272,25860,28822,23984,2789,-12582,-2553,-9474,9358,-10641,-433,-28448,14580,-2811,-3183,-27430,24971,-1731,6186,-22358,-9283,-28800,9518,24518,-7048,24623,17481,-31446,-29347,-3357,-5616,32061,19477,-17761,-28014,18032,9405,32167,-18825,-27922,-2252,18536,16929,2722,19507,-10504,-3800,-27983,-6553,31275,23482,2970,7405,-30816,24887,25212,22459,-24965,23879,5283,8145,-2291,-32301,-7240,-23975,-2797,2346,8900,28776,24150,-32445,3992,17335,8155,-10173,19796,-22851,16947,21837,3182,-13147,21335,4823,31722,31652,-29243,293,29442,-14368,32274,-9938,12899,3291,-27402,-23778,-28138,-2211,2404,-12203,-6593,-14108,-9521,30060,-16393,-5691,24828,-2746,6970,-8713,-11369,-7237,-31708,-19389,10865,19938,-23787,14339,30552,26830,-10405,-4163,4258,-20809,19442,-21867,-14232,23825,25712,-17211,-29516,-4218,12690,-18599,32427]},"fusion_pred_net.conv2.weight":{"kind":"conv","dims":[2,2,1,1],"mult":16384,"shift":29,"w":[30611,15983,-22516,-1064]},"fusion_pred_net.conv3.weight":{"kind":"conv","dims":[160,2,1,1],"mult":16384,"shift":29,"w":[-11517,31463,-8565,19044,28589,9055,1812,17682,24197,15593,29157,28924,17526,-4427,-22507,-12660,-19308,24257,-3869,19378,-26961,-30432,17615,9863,-16831,21614,-12667,-32265,-21587,28586,-14229,25487,-28187,-25295,-28708,5740,-28550,19573,-27625,-12151,32466,-13872,6731,-20650,-29165,19466,-13785,-27911,9571,24282,2317,-11222,-3096,-30421,12603,-15952,-16571,13079,-22180,-3901,17885,23484,13464,12848,3793,-5712,3866,-6774,-12885,-23662,17921,-4974,-2638,23764,-19950,15871,-20574,-9144,10025,13508,-8615,17372,-4091,-1864,-12570,25658,-27639,29500,7937,27543,-23627,10806,17981,1582,19115,-16506,29243,13646,11993,-21447,10171,-251,23059,1336,-7829,-16404,4963,3454,-14777,18345,-17137,30046,-3197,-10881,12055,1983,-26960,-8598,32328,20657,-24864,6285,-29133,2023,-14469,8642,25298,-820,25201,-9837,16162,-26663,26322,32684,32284,9693,28381,-5960,22514,11750,6255,30320,-29937,7059,-22147,-27624,-27382,-18068,9102,18158,-15198,2489,-4024,25348,-23051,-26757,-8192,-17626,-10396,-9977,-6553,5500,24262,-25308,18169,14942,18627,-194,-31073,-1986,-2977,15865,1615,18558,-4063,-10174,-5588,-2855,16757,-29243,-28094,23426,26537,-2477,-25493,-23629,15799,-22618,-25469,-30980,-26444,-3314,-12884,3784,25946,29817,-8045,7323,4029,20048,-27741,-8809,32723,26182,-199,16300,-29868,4225,21548,5760,-16083,9958,-15908,3107,23102,-25778,2011,18659,-4026,2997,-19702,31345,8304,-2372,-1646,15729,-14480,12989,-3423,-250,15321,12590,-1907,-24798,-8683,24055,-26658,6147,-4836,22846,-3772,29035,9914,6550,7916,-8159,21710,5313,10018,-6948,16828,13830,-22242,-28320,-27973,-25443,9323,-24022,7818,28971,20897,-2190,16059,32508,-28211,2713,-14178,23152,-23326,-25550,13272,22770,-10303,-16053,15449,-1066,30199,17855,-12509,15465,20748,-28373,20183,7336,-5371,27941,-403,-31483,1558,-25559,17758,3380,-25123,-3348,-26824,27778,20570,9633,-30145,-15398,9050,27690,-25770,13154,-22980,14896,14888,-1742,-18629,16760,29514,-8700,-15825,-9710,26336,10268,-19122,-10251,31067,-2028]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/mcm1_y.json b/wai/ops-conformance/sets/jpegai/weights/mcm1_y.json new file mode 100644 index 000000000..38a8d9516 --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/mcm1_y.json @@ -0,0 +1 @@ +{"conv.0.weight":{"kind":"conv","dims":[5,160,1,1],"mult":25,"shift":27,"w":[30964,-11617,30831,-9351,2873,-428,2518,-11025,-10040,8042,29351,-12625,32053,-12780,12078,-30952,3308,-16187,-11838,18818,22045,-29786,7355,25828,20210,-10488,8235,1587,-6985,-8184,26516,-15860,28314,-18074,7292,-22986,-12182,-14985,-23331,-16657,17931,-1874,26305,-32143,28161,-28245,20926,10678,12343,21621,23286,-24217,-19885,27998,5026,-7527,-25380,20796,20941,-6930,-14380,26093,-10347,-17555,6793,-16186,-334,-16282,-27186,-23234,-29980,-21751,25280,-6510,7774,5299,27744,13979,-13247,-31564,-12096,-1509,-12942,16539,-29932,-18405,-357,-16548,-15875,-29830,-30902,-10845,-32119,-24573,-31018,30689,4005,1538,-24562,5787,-17988,-23612,-16558,-11481,13166,13319,11325,-6350,-12311,-12000,236,-6405,8362,25676,19639,-16175,17864,-27470,14177,27375,25809,-21003,-10831,11316,32350,-15984,31359,1097,-20073,16487,-25326,26612,-10438,22739,-10844,30390,31733,13152,4673,1225,-182,-4447,-17165,-25821,-19151,16437,-29580,122,-12578,7315,-12477,3222,-9237,-17567,-7658,-21843,26112,-14964,-26728,-20829,29040,23301,11536,700,11319,10485,12903,22921,-16214,-23323,11334,-17820,-4787,-13636,13988,14642,-19373,-13846,15549,-17223,-2611,7016,15929,25477,-30925,8292,14843,-10952,10584,17486,-1093,-29712,6555,31872,20407,11261,7982,-10654,11329,-13645,22623,-13094,-29373,30233,8691,-13896,24479,13070,-29579,-8466,-14543,32753,26730,30722,7983,32589,24591,-10478,-17752,-15574,6151,-25749,-19000,-21544,3905,-10576,-1029,-26831,16636,1754,20457,-755,4620,-16868,-28275,4621,-20247,-6438,13851,-25736,-24417,11555,-32756,-18018,23982,-6902,-8211,-4458,41,9605,-28223,24894,1922,-2441,-12422,12848,18883,-4558,-23170,13598,11149,-21653,27989,3420,29203,24762,16117,-2648,1756,29804,-200,-29782,26514,19099,29379,-14808,-27796,-15169,17461,4270,-22523,24257,-16194,31321,-16972,-31591,-4581,4442,5167,24087,5523,28936,-30439,-25324,-31973,27405,-18079,1452,-7320,28462,25695,-15000,26295,30053,23096,-26623,-22072,26868,-13128,-20885,9855,-4706,11292,24819,27240,-21136,-16379,-26529,6212,-17308,2189,-16543,-20389,23811,-8494,-14942,23846,20231,19755,-3208,8668,7493,-26087,-30007,12793,6384,7000,-28,25951,9798,26164,-17843,-2544,24183,-28725,-6525,-21110,1204,32050,-22581,-26840,3480,1454,-29821,-16489,8837,10856,-15309,13887,14384,-6617,31930,14955,14135,-12002,6936,-30299,8387,-22226,21725,-29920,11652,3863,-14920,-377,2699,-8287,-13197,-15521,29066,-30974,-15865,-27884,-18914,-24189,-3978,625,-8358,3004,-135,2419,-10015,-16424,13628,24140,-31757,-2009,7453,31587,-1771,-29656,8250,19941,27301,3232,29923,25397,-8088,29994,-5020,31764,-18026,29575,6851,26468,-13226,-15826,18781,-2074,-23061,-21375,9084,9929,-4386,-18956,-9062,-24613,16861,11035,-26549,3925,3401,-11635,-25311,22604,28360,-25827,24104,616,-10993,-29899,30801,-3826,31387,-22019,-16248,24726,10329,3782,-26538,21397,-4299,-27599,-25833,-5241,-24958,10494,-17812,-21000,21133,-20274,-12916,24733,3285,-14885,-9795,26543,-23924,7119,1013,-10339,17414,-30672,-23678,18380,9071,26995,11492,-10687,-12001,-7070,8091,-171,7689,-5236,-23160,745,-20545,-20103,-6465,8450,2092,1830,-6323,3661,-9230,6861,-3945,5685,24560,15551,18298,11531,-24448,2782,3619,26816,15940,7617,28871,27154,-26109,-23067,-31306,8986,28354,17081,2272,21364,10495,12553,-9864,-22131,19004,-10427,3183,18912,-25486,-4907,13693,27028,-25684,11607,24606,-1330,22068,-3973,30781,-6498,-3157,-10923,-21549,-16386,30017,-23037,21524,28693,25429,29648,-32687,-26363,-25335,21789,-7456,-10322,3015,-3520,6388,3080,-7310,-17136,11071,-28938,-26234,-25113,-25961,11019,-20074,26186,-24058,31514,-4072,-15459,8361,-21576,1961,22471,14096,27064,-11091,-8019,6712,-31922,-21209,26296,-8753,-9510,22341,12061,-19257,-27252,-20019,-22410,-21682,-29276,24326,-22185,-6517,30406,15015,-19382,23631,-22990,8344,-29546,30157,-13013,12822,831,-26951,-15040,21511,2774,-23023,801,25813,-15166,-28356,-30605,-2832,-4560,-6212,24055,6539,6859,-3652,18257,18122,10112,7514,13,-3600,-23409,23706,21603,25981,-1562,-16023,4727,22750,-23405,29826,-28012,-26329,-26615,10218,-907,14798,3545,-22263,-16244,-26372,32142,-4047,19284,4488,-25849,28365,25050,-29484,-19772,-27022,12447,-18252,-20794,-26839,23431,-16836,22562,-21928,1734,-26926,-21984,4384,-6192,-486,13179,-5435,13966,-26054,20332,32583,28503,-10879,-7741,-30341,32655,17220,-5556,-16901,-12899,30339,19638,-25643,-5011,-9558,-2079,19336,-28440,17392,28351,27411,-23635,-25701,29580,-10350,25148,-21011,827,26551,-5217,32431,16406,8482,5142,-19366,18200,-24122,-5914,-28,-11370,18725,26295,-12671,-8999,29263,30924,23052,21198,-28161,-18947,16142,11057,9411,7552,-3521,13691,-26507,-21330,27587,-29640,-30567,23208,-3699,23180,27642,8322,8475,-5642,21603,10582,2252,18820,12252,17714,7117,-21224,21571,4401,14327,11262,-19459,13088,-19622,30411,-25882,-5331,-11549,-18701,-5928,-4298,-9650,32197,9029,-16596,30822,-19964,20370,-29000,-30425,-16960,-16669,25927,-26097,-4636,20285,-14385,-4265,-24426,-1800,-20575,28290,-17814,27593,14699,-18925,-17464,-18477,32023,7256]},"conv.1.weight":{"kind":"conv","dims":[5,1,3,3],"mult":227,"shift":26,"w":[-24950,10238,-24075,10520,-22403,26954,-14132,3476,30113,31900,-20734,3475,-1076,14958,-2224,-50,11913,-14326,7212,-19620,15178,-1806,29394,22020,-10166,-15331,-24509,-27613,-5277,-23408,13198,-16851,-5831,-11163,15631,-14625,-2891,9712,-17958,13045,-7634,-30133,17570,-31247,-8477]},"conv.1.bias":{"kind":"q16","dims":[5],"v":[-53064,24600,-29369,28127,1938]},"fusion_pred_net.conv1.weight":{"kind":"conv","dims":[2,165,1,1],"mult":24,"shift":27,"w":[21835,30084,4313,4216,9673,22824,32334,11412,30017,17016,-22768,-29692,1723,21420,-17282,27373,-12493,-16296,32226,4263,-14082,15761,-14703,15813,-26242,24442,24337,12201,-7367,-24866,32709,26,-16078,-14267,-22648,31686,19269,-32385,-9898,-27153,-3825,-7849,-844,-29960,9401,25466,25616,-5740,-30272,-8711,23927,-21237,-16505,9810,-23778,-4578,-18493,17448,23485,10954,-32098,-16110,-31945,-18013,-31659,-27477,24587,8732,-6706,24943,-19414,15487,1086,-17131,-11546,17272,-13899,10027,-1317,-28187,-1594,-15621,32483,31440,-17739,25145,32697,-15720,-28072,-31689,-24871,6659,-26984,29486,-19269,17059,-20532,25661,-27952,5080,-8851,-24685,3487,9130,7993,11924,-15815,16669,9192,-11044,-23340,10052,24604,29707,5681,8540,-29940,-30410,29307,-4259,-10369,20506,23997,30124,19723,20687,29050,31577,22307,13575,-26722,-30132,-32289,-23234,-30891,13677,-23953,5980,-28573,-27718,29761,-27316,18516,-25796,-6436,-23626,30751,-10911,14288,-13854,-23882,-30904,19256,14280,-23522,6596,-26795,-6276,21667,29303,-5376,1718,-19507,26088,-19616,-19605,-24144,4328,-6706,-17174,-15124,-18444,5145,-5128,-26181,11919,12030,-13579,24235,32246,-387,22196,-15303,30683,-29582,-9720,-24649,-12364,-24918,-14314,-8371,-5833,3056,17338,-17011,1047,18807,-8026,-5237,-31927,9815,-19119,1596,-22668,11540,22832,-825,6569,1303,5254,28892,1867,13217,14817,-3313,937,13994,12148,32225,-16945,22089,5920,23142,20816,21424,-25420,-2414,-15467,16296,-4141,26920,2913,-9719,-27166,-13664,27161,-2531,8083,-3588,-18029,-31796,-381,-26210,-8174,-20415,26430,-9134,-16208,-9153,8282,-4825,29461,-30367,6043,3980,7584,9750,10909,10745,1943,12238,-23759,-12452,18468,20758,-22227,-13551,26890,238,5206,2435,-14861,-31416,-13546,-10228,32536,-7073,23528,-17106,30744,4833,17789,-10553,8485,4162,-32228,-17964,28157,-18501,-29358,16763,21984,-14153,20539,25236,-24596,28394,22900,-308,-3689,3729,-2134,8784,6921,-6252,31270,-32393,923,-12047,-7296,-20943,13012,25880,-13404,14825,-6845,-21266,16445,3251,-26141,-13434,-11675,26318,31226,21700,-6773,17671,-30047,-22419,-27790]},"fusion_pred_net.conv2.weight":{"kind":"conv","dims":[2,2,1,1],"mult":16384,"shift":30,"w":[28462,21095,-1898,20764]},"fusion_pred_net.conv3.weight":{"kind":"conv","dims":[160,2,1,1],"mult":4096,"shift":28,"w":[9654,7561,-7243,2763,-14665,15965,28931,-21747,-29107,-15520,20270,-23730,-21015,4354,-27861,-24055,26543,-3379,-16324,-8201,-32338,-5246,3108,2043,-16544,14979,2398,-25343,-28682,-6375,-19273,12974,-24503,-23551,9622,11905,7415,-18222,9432,4348,-15127,-812,-25201,5532,-27076,-23119,-10207,1821,-21988,20864,-4529,-29847,-13797,15508,31371,-13008,15822,-29208,11101,-28172,1032,-8786,-264,13065,-442,20592,-206,-25370,18191,21534,30078,23205,14113,23489,-27565,6484,-6173,-22261,-10787,-21672,-29405,13180,-20900,16666,15659,-18397,-9624,27365,24247,4565,-4917,16086,29693,-26771,-26280,-31135,2193,24059,30736,23019,-21348,-13450,-31692,-11573,9343,-20388,-32119,-12061,-15012,-18023,3437,-27749,21994,-15730,-20066,-29360,-14048,-30659,-13840,-10070,-562,20427,14743,5921,-18302,8082,13003,19168,20501,29913,738,-3576,15628,19178,12275,997,-21897,-19005,18474,-11429,7627,17419,12760,-20110,-30761,-6494,-4861,-2254,-5442,-6373,769,5090,-29751,3013,2812,-31366,18318,5725,17843,28582,-3370,8320,-9666,27051,7301,20411,-29140,-1987,-14899,23898,2821,5425,-10289,-25308,7786,-5255,14495,15727,15599,-19237,-17683,28690,8590,-9975,865,5525,5911,-7274,-5846,19646,222,25686,-20161,-32713,-11237,15968,-17724,16625,4492,31799,-520,27377,1273,-21435,-1369,-12555,-4536,-29667,16813,-22559,-1633,16074,18214,-10682,-2204,19903,-13690,-18595,4043,16589,12207,-4275,13314,-26748,25115,-26835,32338,-9578,15435,30621,13976,-31938,11422,-7010,17643,25056,-26288,-26530,21048,-18631,-15263,-25687,15984,-12307,-19053,-8393,-9665,1264,-18259,30415,-11884,-9223,-19774,12868,30765,-16767,12100,-14948,-20237,19881,412,-4820,-5230,25829,30256,3066,-21717,8968,-29514,-3479,24490,-2718,-3978,21198,-3002,32386,-16814,-17857,-2962,-24711,-8648,8995,-13553,-7557,-1123,-27567,-23685,-12266,5869,-6751,31067,21204,17706,1883,-20684,8765,-26064,-21166,-17209,12336,-1632,11914,-12961,-12392,6083,-6255,13294,10903,-2229,13822,-30911,8782,459,-28027,-1753,-31320,-26151,19426,-22147,-15057]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/mcm2_y.json b/wai/ops-conformance/sets/jpegai/weights/mcm2_y.json new file mode 100644 index 000000000..cefde8737 --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/mcm2_y.json @@ -0,0 +1 @@ +{"conv.0.weight":{"kind":"conv","dims":[5,320,1,1],"mult":408,"shift":31,"w":[-24815,22215,-2991,-14066,-6510,-7901,-32043,19442,27607,27453,-29929,-24986,-14310,-17169,-17968,-13824,3447,-22384,30884,6901,11983,-29756,19508,-22365,8034,19449,-25833,17388,19670,13402,-12219,-19354,-4726,-10963,-17680,26008,1938,2072,2713,28970,11612,-30897,-18785,-10323,17037,-7737,-1086,13319,-13514,-14334,13662,-1876,1600,32748,20206,-6118,1167,-10168,-5073,17658,-5314,-8170,-12465,23940,20397,16734,-8618,15374,-15530,-9344,-8656,1260,-31427,-30268,-6548,11976,11151,7849,7764,6534,16081,-7651,-12974,28641,7447,12653,408,30990,18160,-20108,98,-24427,-2825,9424,6919,1860,10870,10574,-5410,28816,-6344,5019,-9290,19092,10744,-2412,-18477,-3914,822,-20394,5500,-1411,28710,12545,-6914,18175,-29216,-21434,25787,19232,-28160,8910,8796,15275,-7301,20575,-30740,-11414,-20192,23786,-3588,-12911,15683,-27598,1747,-8067,8088,13880,5370,13633,-23518,-12292,-19720,11467,20652,24285,-29439,572,16938,-13568,-7454,2727,18786,11616,-30820,-24828,28975,-5663,-4188,8050,-22059,-10784,25185,-6959,23279,-27970,25749,17786,-17097,11757,-29060,13915,-28261,-21900,425,-21320,-23549,10551,-2547,14352,13054,12133,5921,13703,4693,-22358,-12337,-21289,-5679,32466,20749,-3776,2476,-14227,253,591,11384,-19105,8934,2023,-25616,25285,-27148,18627,24731,-620,585,-10904,-6228,-22313,-11972,4344,18501,-27653,148,-24787,-32393,7485,6022,-21381,19203,5323,8428,-25523,27704,-18503,-146,13758,20748,-17292,-25439,4123,18760,-17257,5930,6452,-11823,19356,23020,-10736,-26283,18204,-5970,22150,11717,1570,16900,-2960,12741,8613,-27857,-30877,-26203,6038,18602,20573,7860,-7260,32099,-5516,-16824,-23672,23306,1119,-31511,-24944,29209,12207,-25493,-18826,19076,-24146,22495,-1190,26522,11915,-3118,22331,15477,25568,-6045,3937,25806,18196,-4430,6158,5780,-25435,-13155,-31913,-8377,11746,-555,-13379,13262,-18916,-1699,-434,-15835,21067,-2569,8663,-27476,6490,12538,-29601,10973,-17753,671,19076,-25777,15457,26573,-192,-12081,18275,-26904,24117,10501,-11047,20960,-31421,-23904,-13300,10178,-15194,26255,17015,4176,11380,28999,8402,28302,-3949,3010,26570,-10087,-7208,23593,-30497,7941,10295,-11276,2919,23079,-24044,14273,3113,-3489,-192,-20779,17918,-18779,28751,15210,749,14849,30727,-22331,-16050,13766,-15153,-203,12506,-20509,-16406,13960,31332,-3170,-18456,-31125,6883,-13344,32103,15315,28303,-5547,-6449,2383,-2811,-12535,-8467,14815,32629,24083,27998,22173,25328,281,-27846,29608,26579,13414,23178,-3954,2919,-9286,-11637,762,-11989,-13043,1982,28017,20407,-6424,31372,19341,-8055,7658,12480,-25965,23695,-8289,-23509,-22281,-6957,-2167,-2060,-4712,13956,-29700,-11927,5760,-7449,3382,11474,22221,5715,27611,-22688,8858,-23474,-16467,6078,-3127,-7690,1371,2263,-13038,26406,-16764,-12090,6380,20627,8395,124,20229,28572,-5635,-23104,-326,27351,22299,3489,31926,16818,-15079,-19778,-12012,19321,-4456,16458,-20208,17382,-30256,601,30160,-3173,-25585,24034,17763,2805,32441,23167,-23262,-15874,-25383,-28268,-27606,25033,-19869,10191,5374,-1943,584,26994,19572,7733,20719,26182,16979,-2899,-14680,-23850,-15269,30921,-31834,-13658,-29000,-11895,13222,18303,2361,2000,-7096,-11829,-2836,-6146,-16434,17647,14932,-30041,-10447,-8149,25088,10788,-5213,-31874,-23588,22108,30190,17311,-7704,12043,5719,9081,-21115,18640,19120,-20685,-3222,-24645,-16811,14005,-14894,-28971,28435,-21951,-14710,-8875,-4866,32547,22417,-32136,26205,11506,16241,-18485,18334,-19588,11143,28508,-18598,-6799,23671,12567,8053,-20807,7855,28067,9243,-26332,-23242,-12530,9799,23019,25431,751,-2047,31251,16821,-31615,1657,-15572,14667,19374,-15933,-1410,-13168,-14633,-21859,-10697,-13618,843,-30974,4313,-2437,3772,-16910,25402,5753,15270,-5709,-9702,32140,-12556,27886,-17706,3768,28188,23182,-6059,-14734,-23280,15632,19165,1267,-3113,3850,12280,13040,-10407,11999,13519,12384,-14811,147,-27522,-6706,-28368,22656,5026,-26167,-25973,4098,14129,12741,-9689,2392,26519,-6456,-24005,4369,-22459,19679,-30596,29182,23094,8307,32255,27016,14752,-833,-18968,-23302,17742,-22076,25813,22166,12627,14578,24580,24799,-24668,11639,10764,9227,-26666,21582,26420,-13773,-25318,438,18094,31682,-12502,22828,-21836,-31108,30876,19967,7843,30265,26924,-155,27400,-295,1160,739,-32569,10582,8715,-30318,-5189,12208,-30425,13048,-1097,28460,-2061,22999,8778,8837,-28213,5534,11594,26257,-4414,31534,-9007,-20335,5284,-12382,-29806,-26112,-23335,4504,15907,6791,-2061,-16630,-3658,-22001,-8376,29107,16757,-12692,17989,-18997,11683,4277,-27540,27728,9885,23932,-7038,-11833,-18511,30318,-15038,22211,-23651,19816,7202,-21328,26561,1300,9535,-7156,22386,16220,22293,-211,1031,-29926,4487,21664,3160,-21145,-12577,12978,-21897,-22632,-17087,17454,-28938,25305,-15226,17956,-31044,-1340,9976,7155,28377,7380,-16758,-20023,-15293,-32246,8295,-25462,-4868,5819,-9901,-22968,1725,890,3752,-5381,22923,-9530,15752,-31040,-14153,26385,-15981,-2732,1000,2210,-29679,-23917,32155,11572,-6083,-8871,11261,17131,13856,21969,-29312,28119,8579,-4348,18878,-22816,8717,-15052,26376,6345,-9102,-27260,11858,4358,-23411,9961,1297,-30590,22187,4105,24169,-1639,21301,-9910,32649,-29363,-21242,2648,-28892,6949,9911,17697,24654,-28276,8865,-30425,-15726,-27068,-30023,18835,-4575,-9445,29680,1998,-26530,13086,-202,-18710,-26479,-30371,194,14465,-4903,-31979,-15517,-4220,-16796,30657,-3031,5155,-7582,15369,25548,-3236,28908,-30448,19446,-5305,-25220,550,30792,-15679,-23004,-18989,21015,-8748,3001,27079,32359,13079,23179,8206,32363,-27133,15824,12472,23144,8166,-20828,22627,-9513,-25372,31575,-24010,-9033,24241,717,-13409,22110,-17735,-14345,-23229,26922,27675,7260,18364,721,1272,-28339,-26336,5006,7062,6957,-3867,-9419,14791,14983,-22782,2901,14224,21491,1000,15104,-2567,-21412,-20061,-20616,-19970,-16881,-18512,-10378,32244,28066,2770,-6050,-11598,-11902,-21200,-25710,10684,21377,-31442,24505,-26227,-2776,-26568,9140,10434,16629,1246,-20322,-14593,21472,1394,-29777,17420,-30470,-28839,271,11644,31534,-26386,-8022,-19898,25993,5442,20889,-16981,-9098,-3242,3679,-22873,29528,-30115,26783,-31292,26300,-16895,3493,23304,-9033,-27022,2955,11171,18612,-932,18128,3548,26026,-1161,19867,-10751,-7328,-11566,7588,20177,-20178,-17895,31862,15706,30471,12138,-8402,-7700,21531,-13891,10915,28889,23665,23894,24382,265,-32316,17588,15831,30200,-1677,-19994,-2381,-28301,20518,-30855,-17886,-4494,-15040,4178,-17903,57,-15628,-2029,-19181,-5491,8117,15614,-14413,-29469,1339,-6465,14734,23753,32285,-2863,-19835,21515,11135,14567,-20490,32505,30106,-6973,21439,-13327,-9140,-9849,18362,-2101,5455,24353,31852,400,-11001,-27443,-30461,-15077,22189,-29169,19132,-9707,9516,5355,2806,-22626,5536,-1804,5643,-30871,-30355,-22365,29026,-26556,7696,12584,814,-12986,2055,-15567,30253,-11010,-12867,32540,-25020,7478,-10182,3721,-32144,22439,-21259,7455,-15992,-29238,-14627,832,-31287,15849,-24248,-15455,13297,9440,27110,690,-2575,18014,24575,5322,-19033,-20047,2971,-18804,-24515,-13090,-26662,23246,-8787,-10572,11590,28150,9263,26448,6137,17800,-30297,-14655,30399,17886,-21457,9474,12564,-19864,-11780,-29244,-26202,25814,31096,14785,28883,-4194,7580,-22767,-28698,10615,-9572,-12063,-18414,8331,1822,5897,19095,31762,17426,19322,-24551,-32342,-21134,-30962,2953,3894,21992,14105,28658,-30205,-5345,17824,-28319,28220,16601,-28258,12945,17015,-17150,9456,-19393,-31116,17784,22573,29907,-6137,-9165,28373,26165,-32664,-31965,-2284,10525,30016,7628,-30194,-31935,21830,-6837,-283,2050,-29004,-12479,16777,6146,-4587,25829,-13006,30120,-30645,-6553,23564,-11832,30007,22871,20401,31059,23146,-17481,691,17406,-12457,-1697,-19472,-25275,-22304,27474,15747,-19374,-5448,19273,13102,-4033,-29817,15541,9701,-25346,-11181,-31368,-30593,7084,5772,-28820,25399,5221,29158,4877,17807,-13427,31841,7804,15557,-3727,-15925,20031,3439,25692,-23084,31203,28393,-13184,763,5052,-27982,22137,-7079,14412,4514,14857,-29584,-11845,-3412,7463,28549,-7128,3098,5691,10636,-32380,-14793,27859,-29045,5961,6259,12325,20432,-8661,21401,8249,28434,-5837,30533,-13246,26085,-21637,580,-24149,28506,-26983,-31908,-6139,13472,6274,-12938,7982,-11858,11380,14007,-23960,-19846,-12209,-29670,30735,-25153,-30116,2554,-15042,-16828,-22053,-7085,-10482,29580,3475,8973,-2454,-25889,18542,-21970,-16653,-4543,-12702,32050,30741,16343,9050,-1232,17753,17426,-28905,-3470,-7370,5064,23527,29559,-29940,5677,-8935,19640,25777,-32302,28823,2929,-26535,27485,-25925,-26070,9601,-18842,-24581,-9440,-16944,22728,-1541,-13765,-25557,14897,24919,-15148,29216,-12448,13834,23612,24258,-12995,-23530,-18896,29223,-7170,-15221,29527,4846,-1394,11016,-31708,3269,-28933,-22372,5463,-1937,-15725,-30932,-11621,6510,-27992,-31069,3220,-8078,23386,9748,-11177,3418,18477,-15570,2760,-13054,387,-13308,-9455,767,-5334,-8060,-12812,-8452,-5736,9887,-14588,24223,17743,-30864,-14816,-19991,-26101,20056,-17154,10075,26428,23590,8411,-24407,-14561,16248,20076,21757,-148,-28191,-31967,-21837,-13848,-3864,13359,-18521,-18174,21645,25145,-31246,11229,-25452,-28439,19105,12757,17244,5038,8653,-27686,9929,6581,11732,19520,-19973,-11642,-19190,-24023,20442,-9053,17227,22354,20212,-26707,22384,-12103,2182,15299,-27039,-14130,-23207,-10986,-7035,18397,-4311,7456,12752,505,22360,15097,-9503,-26312,13291,8129,-3784,-25706,-20710,-29311,17453,-24064,-20521,-14457,-12925,7390,-19924,30234,14632,-31872,-19542,960,28898,-6397,-23424,-3233,21397,5921,11121,-18011,24982,2711,23965,-29787,17114,-31594,31514,-13951,15522,-19300,9042,3076,27423,-26570,21353,-7222,-8634,-1043,2030,-28875,11720,-6223,-19161,-9246,26475,18722,27838,23361,6074,2778,-4922,-1213,-27535,-19011,24746,28564,18762,-26063,6280,-9184,-5459,2147,-8429,5746,-26203,-25828,16802,-566,25157,-17069,-32742,-26185,2271,23509,-1109,-13114,23357,3921,12414,26792,23117,-9109,-13415,-13364,2970,16601,18514,20361,-21309,-28597,10251,-9839,-20202,946,-3248,-4423,-27196,-27083,-24823,9775,-8532,23044,-32362,10,19673,2379,21276,26442,-30914]},"conv.1.weight":{"kind":"conv","dims":[5,1,3,3],"mult":227,"shift":26,"w":[458,12051,-16720,31251,7756,2014,18132,-16436,22291,4128,32587,-24100,-12433,226,30307,-24530,-6997,2247,14002,-3266,12059,9676,-26269,-12854,-15200,-12270,15241,-5509,-17734,-788,-21142,-13926,22345,-4444,3014,-12192,-9275,32034,-3225,-3848,-9531,28049,-23470,967,3552]},"conv.1.bias":{"kind":"q16","dims":[5],"v":[36281,35503,-40959,-39277,-48071]},"fusion_pred_net.conv1.weight":{"kind":"conv","dims":[2,165,1,1],"mult":48,"shift":27,"w":[-8962,-29439,-9915,-10548,5435,24994,-1520,-23654,24404,-324,-10790,-22649,-26338,15956,-10792,5486,1900,-12259,-19220,-17700,-10582,14548,-25975,28830,16364,13017,-6554,18374,2435,-18340,16262,-10575,-2311,18508,15469,-5525,13525,-4246,30903,-20555,-30208,15718,24727,15084,-15252,7570,16886,-4263,-26386,28221,1926,-28696,-32101,-32430,-9062,18925,1812,16909,23776,30,32766,13524,8881,17297,-17309,-23019,24475,-17986,16187,7059,31275,26160,-28360,-21623,31812,7496,-16155,8298,-24826,-28448,-26880,21685,-15240,31916,-4390,-13619,-6019,-30335,-11134,28536,-26591,30721,-27792,1058,14408,20066,-25492,11927,-23172,-16669,29089,-10637,25150,19822,28448,-11666,-16250,-12533,28256,-28334,-18281,-20014,-17488,-27971,22132,-15717,29395,12367,-8715,-20243,-10978,24691,26970,20304,-21856,18522,-9592,22713,26324,26155,-1559,7547,-18687,21692,-16990,-23982,22820,-24836,-32317,-17159,15003,-56,13466,12641,10192,3451,16210,14343,-6489,-22142,25505,-30874,30377,-19652,-30741,-27958,-17678,-17398,8942,-17759,15181,-1678,18582,785,-21998,15409,29040,-1933,1876,-5221,-6462,27821,-30846,-19539,17754,15712,-451,-18171,32500,1735,19590,6076,-6700,-12002,-17310,-12461,24509,15752,-12489,8969,23511,-26142,-6495,-26609,15915,-18094,8719,-21602,1869,-29806,7103,-19387,16084,25460,-6032,16670,20675,-32124,8503,18347,-20492,24346,-27878,-17100,-1702,4392,1410,-300,-8845,-30103,7622,4383,6875,-20530,2061,-22450,-10721,26849,-18592,-29926,22331,-26271,-31350,-13919,-11294,21485,27874,25252,-32675,11580,22221,-12941,31547,-12570,28245,-26301,6991,-9286,16317,-23075,17368,-19912,-24269,18077,-4923,32713,31448,-11522,17690,4037,29046,-12950,15422,15481,-25603,-9607,32168,-16542,2322,28458,796,31489,-7946,-20135,-22849,-1366,-30124,1754,-15695,-17592,18133,-18200,23374,-4692,4037,-10932,9050,18468,-22730,29868,6571,-21325,5768,-18350,-10833,-32334,28770,15348,30976,217,-10116,-28748,1342,19246,-10483,-13412,30437,20110,-18386,20304,-27241,9974,-17234,-11405,-19378,-21565,14739,-4991,-22019,-23875,12131,-32191,-525,15515,-12615,-25638,-17590,3360,22960,-17971]},"fusion_pred_net.conv2.weight":{"kind":"conv","dims":[2,2,1,1],"mult":4096,"shift":27,"w":[-25549,-9083,17966,-6928]},"fusion_pred_net.conv3.weight":{"kind":"conv","dims":[160,2,1,1],"mult":8192,"shift":28,"w":[24983,5734,-23813,30935,-4222,-23563,21855,18890,26315,-2930,1427,6602,-7496,22749,-20605,23280,-19005,1965,-2953,-29261,29832,16017,-10596,18744,-15998,18977,-11416,5647,27688,-18896,-29517,16932,-6339,15054,-2540,16648,28608,15480,-17021,-28266,-29269,-403,-5248,15044,25731,-7070,9762,14184,-15749,-29549,8344,415,-15360,-11013,-20224,5756,-21745,29537,-28862,10939,-2740,31318,31654,26831,-1062,6214,21244,-9011,16328,-28907,14353,-19581,-851,-23788,12158,-27492,-12885,4410,9104,-2902,15428,13034,22035,-16451,-1921,-9839,-16345,11343,13471,22521,8900,13055,-31132,5337,-27840,2274,-3102,19280,-4337,-1563,-13001,-6518,19994,-14388,-18697,-2204,-27763,30312,29863,25077,-10788,674,-19978,-179,7249,-20463,22824,6566,12170,11616,766,-26276,22362,13208,24122,17133,9828,-11775,-23761,-15449,-4838,31700,18820,10819,-27643,-29207,3186,19140,-3930,-23180,7694,-31412,-17849,20298,12615,-25944,-29846,-6524,-29755,-15364,-11115,-3667,-21165,1995,-23132,-30120,-27330,-14093,-25661,21266,-19940,14847,-22978,23924,-31164,30401,24453,-24400,31329,-23224,-5772,-14139,-16057,-31919,-28214,13202,-26614,17541,12016,29176,-7749,16290,-27789,-20165,17504,26910,32425,-16534,14971,-16358,31970,14724,11414,9442,29136,-21069,-27960,-4699,-29690,22582,-31997,29498,5562,29888,-14859,30294,-9281,-1747,-2106,-17899,-18550,-21566,22165,15516,30224,30794,12488,14014,-24715,11466,-7016,-31863,20323,-9086,-24,-10876,26208,27450,7770,-10058,-16629,23376,1063,-8281,-12999,-19461,2217,-20978,17707,-3795,-10402,-6407,2008,-19656,15593,12669,-22,20889,-32290,-2086,25861,-14526,-652,25522,-14135,32439,-5952,2671,4305,-21928,20971,12330,1312,21150,24640,29541,-2970,9740,3914,22141,-18130,10656,-15479,-30237,24221,-17255,6422,17866,19202,-28578,27436,-19811,5873,-6971,-7246,-18993,24188,-7128,7665,29798,29646,29565,6507,4215,8565,-18688,4699,29389,829,26513,19940,-17645,15384,-20199,-32213,-16067,-24080,13537,4725,-6395,30781,-2257,29272,-32507,4787,28850,-6550,5819,18859,-29448]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/mcm3_y.json b/wai/ops-conformance/sets/jpegai/weights/mcm3_y.json new file mode 100644 index 000000000..9c0112cc3 --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/mcm3_y.json @@ -0,0 +1 @@ +{"conv.0.weight":{"kind":"conv","dims":[5,480,1,1],"mult":136,"shift":30,"w":[-21494,19903,-8951,-13073,-14846,-29157,6454,-17500,21805,15793,31847,17397,-24542,16231,-926,-26346,156,15321,-29525,29476,20781,16440,-24012,5742,-17886,29531,-434,-28731,-14619,11864,4018,2331,-24464,-18025,-20861,-14263,31318,17559,21607,-28281,-11280,6420,-102,-3568,10317,12059,-19602,3648,-22565,25168,-23194,-3136,2169,-27382,31658,2146,32765,-8881,-19132,19824,7031,-12987,-21871,25545,-3412,-15857,-13002,4458,24304,9275,-8503,-14355,26405,2069,-21115,11682,-10590,29254,112,13580,20228,28952,4910,7653,-12325,22476,-891,-2982,1687,-23183,-20780,-12259,-19982,16455,30537,-1455,15452,-24634,12563,15935,-23279,26332,7737,19336,35,1085,-17421,13383,-21424,2281,18535,6999,-865,28309,26178,19290,21005,-22004,-5305,13744,19723,-4920,-11015,-8100,-31598,-28951,-30583,25361,-25272,22460,29511,27360,26155,3347,21537,-29813,-490,-28898,-7882,-17853,11581,-12251,-10415,-12906,23173,-9813,25752,-1070,26058,-28298,-10880,-11328,25185,21100,-4823,24695,-21904,-9578,-1785,20282,-24851,29350,-2027,-30710,-6328,17055,25875,-17740,-32126,15053,7651,18045,19474,9995,-9719,7247,-8862,14686,14249,-25845,9441,24929,6313,16636,-25283,-8870,-4919,-26731,8044,-9421,16144,25816,6935,1880,-21450,-27170,13859,-9164,27812,-6852,-10080,-29678,27537,7881,10295,12907,4862,-26752,-30574,7302,-17630,-9144,22202,-13055,18340,-13053,-22982,16004,9676,-190,-10196,5725,15979,-20103,-18988,-30469,20558,24476,-4155,6871,-22537,-32533,22881,8787,13837,23203,-10020,-14459,-3808,-30828,22441,-17173,-28259,-19190,24947,-11341,-14668,9446,-8820,-14063,-31634,30874,30375,-23460,16369,12416,-1604,-10273,-30679,-12814,-31703,-7181,19711,-19297,19424,12170,23954,-18593,-8634,20283,-8936,18932,89,16405,12682,-24327,-31279,20621,23305,21852,-29840,10898,-16311,5860,18241,7672,-26946,-29619,1551,14294,-21646,1064,26820,728,8994,-28774,-20840,-18842,-30005,-9197,3704,27313,-10803,27812,-3128,6109,-25059,2511,-4420,20993,-11466,-18671,-4508,-6909,-15030,-13919,17897,4117,-827,7627,20690,733,3761,10455,5427,-16444,-9741,32183,-493,-18078,-28546,8291,19648,30835,24630,-6684,21929,-7028,-26618,13169,29145,19052,13494,-6337,3769,-14423,19194,9745,-770,8595,28385,-23036,10682,-26196,22973,10056,4388,-18701,19687,-2323,2625,-6689,-15107,861,-10725,-14385,-445,15190,-7274,31199,-28781,2748,-15639,-10537,-23277,4122,-3779,-26733,-14791,-2313,-11448,5144,-19830,-7136,27498,-18715,17532,3860,15741,-32283,-25256,-20923,-15206,-1099,19744,26035,-20014,-20196,-15680,-7246,-22157,-8436,-12146,-27527,23339,-13141,-8316,29076,-17175,6752,7955,-9836,17944,11740,13691,26256,-3201,-14441,2211,-2193,4776,-32749,22571,5658,4974,26737,25129,20960,16002,-23268,1292,-31319,9647,-31040,-18446,-30010,7825,-16445,-3561,17735,-31190,33,7501,12584,-19881,21574,30539,-20073,2187,-11571,27825,18493,-6012,-6366,32299,-29790,-24406,-22982,-32109,-17555,-2385,3433,1784,15563,904,18829,-32000,22264,27018,15053,-6201,18588,-3356,14521,6795,28333,-2936,15949,-11148,-6307,1706,2901,-31423,27443,-20083,-17709,29080,32570,-18311,24355,29213,-30614,23704,9928,-14107,-29931,-22586,27993,9679,-10726,-18402,-16028,11706,213,-7434,10046,6464,-6160,14966,-29685,4149,10703,-25028,-20801,-10697,-16660,24936,6734,-562,2941,27779,-27789,-16610,11211,-5610,-26130,-7225,27180,13355,32278,27443,4192,-10095,-27570,22450,29070,-31018,24556,19292,-21050,-26272,19713,25436,10542,8190,899,14410,-22541,-31559,11811,-18704,25428,7053,13766,9070,-17169,-23128,-25813,26834,-11197,1609,-13451,28708,-10672,4408,16279,-31444,-3585,-8089,-8736,273,-10102,-32448,27522,-4715,6112,-10707,-7406,22964,24708,-28396,-11818,6963,-27713,-6393,-29888,-12930,-16403,-9148,31105,-15007,3881,-20235,6234,-18268,-6431,-24417,8855,15085,-25803,1663,3188,19535,15591,-7705,-22808,19623,11685,8130,10974,-7812,-27075,-28004,-21474,4308,9438,13398,-13809,-10687,31728,19301,16891,12465,-32198,-4839,18871,-14749,-3666,6988,-10525,-21731,-15895,-5957,-18362,-3847,-24846,24073,12257,18049,12355,29499,10194,-2524,-5595,30782,14715,6399,6789,-21638,2552,15297,-2841,-2951,32447,28202,-31554,-454,-30566,27384,-17010,-1921,-2447,-25435,2229,21974,-27570,4043,-16769,-28721,30104,-7360,14410,20481,30073,26885,18538,10520,-3791,11104,-6014,-31092,-24944,22252,-26418,26211,22462,-28612,530,3143,-22225,-10764,19335,-7545,15092,22069,-8067,3312,1898,-2271,-25168,-14790,-14589,-3383,-2082,9621,22368,-28217,-31598,-7415,2653,-23273,-15896,-2974,-29633,28681,29109,-22613,824,-24281,-3011,17769,11949,23737,481,-9011,-2838,31412,-5061,-8453,-6559,-23101,2922,-24876,26455,-20287,-32212,-14799,12558,19293,32597,1086,-26442,31403,5796,30004,-12189,8445,29267,-29674,-20134,19761,-15176,18362,17012,3381,-23305,25894,-2226,-11327,-8590,18621,-18269,26809,-7623,-18086,1485,10826,2196,9294,31622,-30839,19538,12541,-29180,-2223,25613,-31581,31773,15709,11660,-16091,6374,27517,-13188,-30685,-21838,-66,-31489,-3247,-23345,1666,11321,13076,13435,9295,24596,22944,5298,15065,-2377,29829,-17384,20171,18827,-6361,-7721,-28596,-27996,14192,-21087,-14505,8904,13306,-11251,-18954,20511,-28286,10012,10203,21029,-30225,29784,13914,9257,-1655,-17770,7603,-31997,-26030,-3206,-139,1550,16668,-30658,-11118,6954,6455,-396,-14257,-17522,13968,-13318,-27932,-432,19114,2710,22902,-13596,16439,30630,24643,-10636,19726,-19810,32162,-29320,-26958,-4047,-19926,9812,8348,-3284,29976,-5504,27200,-6180,32090,11556,-22100,5069,12938,7059,27013,23116,-28666,2089,-27512,28554,-24238,6617,-2855,-27316,3819,31393,-29610,-27213,-20574,-22189,-20900,-25887,5608,10210,31777,-6973,1063,9732,-26167,-26000,-6690,7841,-23283,-9868,18297,17323,-17798,-3023,-26434,-14952,3711,26348,26909,27646,-9025,-18822,6727,-7235,-29527,5940,12112,-646,22891,24435,12687,-31082,-23026,-22665,6781,-3668,6953,-26702,19729,26430,6072,-24839,6121,-6893,529,-10061,17153,7790,14931,27652,-22585,-12141,22741,-29274,32671,17127,8125,-4035,3137,21673,-4268,-7223,26910,7663,-17477,22897,7961,-15240,11266,25767,3076,-2337,-15270,30108,31583,15974,-26582,-27231,24458,-3624,4311,-5534,16079,-18630,26917,1176,19927,9547,-11596,-3905,-28103,-922,-13093,-21588,-1153,-29809,-13903,-19225,14072,-30800,-21638,32712,-16753,2214,27502,23416,-23222,23672,-8256,-30755,4944,-16255,-20962,5943,27714,56,19463,2332,3256,-6039,29859,30567,-27416,-5997,20932,-29160,-19269,18731,17957,-18025,-27346,-25793,23724,-2728,-4249,-12283,19363,-24934,-9349,29912,-6926,30975,-11613,21200,-296,4690,24399,-17339,-26979,19120,-17414,5509,16683,14969,13271,9401,-26805,-27123,-30783,-12902,21489,5872,5736,18668,-9298,564,-14914,-8424,23601,4644,-16397,-25986,-14644,-28738,-20818,20814,-9208,29931,-10236,-19820,-19724,-8347,-21313,-24301,27248,6067,-17109,30571,2102,12817,-5235,-26505,-21168,-15719,25085,31616,-4705,-28607,29835,-29576,29229,-16869,-8823,28627,31071,13808,9458,1677,12784,-28660,3206,18645,-13950,1275,16200,-3632,11587,-16352,-18230,18192,4075,-26030,-1152,-27210,13549,-8185,-24669,-29972,31199,13074,-31442,-7807,418,19018,-5400,-21261,13946,12271,4624,-16272,-32068,2389,-6324,-11988,-6985,30319,31062,-4327,17363,27299,-21803,-802,12659,4367,15432,23964,12305,-13652,-10911,-3608,21113,1325,17759,-10751,7849,-1615,31228,-12728,10749,-1586,191,2484,-11927,31934,-4634,-15236,-404,-6799,-2841,12956,-29493,30323,-1089,-8487,6736,15774,11122,23688,9456,19415,22720,-8679,-22711,3118,-6325,10540,15835,-4404,-16632,-26314,30011,-30338,22261,-21273,-5609,10476,-19124,31661,-16611,-17757,3563,22288,-152,-27893,-16876,21728,29785,27161,-25036,25677,-28799,17008,26918,-15050,17160,-6783,12121,5470,31295,23223,17655,-24886,25428,19868,4570,17629,21270,5714,8209,-29988,22326,-85,14681,-6012,-28900,14100,-18322,9450,-15705,-1398,14082,7311,11011,26624,1423,8406,31303,-1986,478,28861,-29435,-13412,-3191,30784,-26005,14326,-19129,5653,7504,12224,30441,25710,-6996,-24767,29878,-10184,12383,-25871,-8634,-29394,-32248,25908,-32100,-29017,-30209,-1104,-16625,4768,6158,29470,-16920,25738,-17151,21285,17118,22676,11166,-31192,-5208,-16768,-23664,-30789,-13293,-14326,-29700,4097,-28345,-10937,-7203,19324,3614,-30652,-4557,-20729,23017,29240,25432,21661,26536,22102,8817,-21382,-32354,-9549,-3145,-2161,-16339,-29739,7425,-13842,3423,-12898,886,-15483,11362,25027,-7009,-13666,13138,3058,22561,23262,-18336,-923,22768,-11394,20638,-254,-4338,13232,-5306,-6537,22537,24296,-164,28658,7628,2097,2411,-24880,-12255,21222,31607,18684,-13748,23398,2120,-9405,-18962,31990,-27248,26024,13606,7128,11658,12983,-21392,-7722,-9462,-1602,26005,-8576,-22268,-19795,-9239,-15867,-5128,7060,-23435,32303,31684,-13583,-21045,-31437,10023,-4628,-24168,-3900,-29666,4247,-23200,-441,17773,-11659,-20382,-10882,22154,-19315,9166,-31375,22512,8746,27659,24344,7032,15795,9637,16348,-27235,-12441,-14422,10403,-19264,13103,-743,-16842,-7888,14535,-15931,17667,2624,-2193,-14975,-30198,-14244,-17228,6767,17645,-11517,-496,-32332,32649,15349,-29909,-12417,28163,-11623,20525,-9352,-1314,13630,13408,-12311,26760,-6103,-6938,6337,-4428,12083,7799,-19816,29214,-22434,-20085,25045,-26987,-1143,27561,-32295,-25440,23546,-28947,8874,-26551,-26480,-3813,-5130,-13712,22206,6819,19599,11157,-5265,2412,-7145,-8065,23950,31118,27212,-750,-17826,9301,31406,-32537,-16785,16102,16385,19514,-21987,-32511,25835,12406,-26342,-315,7707,32742,-14198,16494,4807,17821,-9349,-2041,28166,-18766,-717,6056,-403,-27194,-2132,1049,-9771,-7735,2921,-10436,-17799,4647,-27566,25585,3554,1335,18465,29413,32322,-23090,31782,-15269,-1807,-12147,-30322,26291,-30197,31251,-277,18351,16971,-21602,25036,26069,-23024,-29928,18904,-9281,32142,-27114,-20852,-10590,30241,-32635,32340,10752,-8993,25563,-31239,9318,-7298,-25924,1683,-21903,-9868,16666,9052,11223,-31913,20497,-26315,30635,-31581,24554,-15200,-19251,-27366,-14041,32740,-388,9331,28521,5526,14885,-20352,-30116,-25024,-2749,-28986,343,16355,31948,26945,7970,-5875,9113,-23661,25420,-25861,15527,-10530,22450,17557,16435,3740,28693,15408,-32302,-13951,-6950,15345,-8289,-20902,4656,-23188,-12896,-2905,-32071,-21031,-4349,6332,28364,-5242,6770,-29651,-11634,-2590,4821,-5917,-25592,-30378,-29727,24660,-25582,-23375,14753,21517,-1087,20365,27505,-5290,23247,30018,-10495,-2035,-31191,23315,-18126,9050,-26027,3623,20393,-243,-17027,122,-15728,-24478,1487,7244,-9375,-5680,1056,10437,26915,32070,-26286,-27758,-9386,-11,29465,13750,13414,-28822,20884,28617,-9698,-8579,-28146,10690,25973,30338,-21822,-10602,-796,-25867,29070,363,8067,-4184,14643,-18191,2818,-23230,30802,-4527,30276,31234,32101,1344,-22654,-8687,27023,25842,-23390,-26634,19956,-12146,-432,-26436,30036,25955,11342,-22616,-25819,-5765,-1897,22533,28250,8934,-26952,-18310,909,25808,28509,10801,-13250,-21585,-21557,12193,-32620,-24794,-25890,21614,-7483,-9454,5308,-8808,-13379,10525,21474,17476,-9911,-7355,-20050,23845,29824,19576,-12027,15425,25369,25262,-20058,-28238,19650,4033,28881,10539,20119,-17622,16956,-21605,15656,27173,-1907,4453,3698,-1009,22816,-13689,-5616,28308,-31980,-19002,-21050,-16216,9574,-7136,13376,-21594,-16244,-28589,15196,-31639,-13145,-16797,-19085,25764,1809,-13099,13167,-12403,-16480,7577,26247,24530,21064,-24983,29476,-32056,-24084,6970,-27514,-25023,8794,-3011,-16284,14397,14172,-8243,16836,-17827,-10103,-6747,12030,21294,13870,-15075,4429,30876,-28792,1509,5123,18832,20982,-31056,-10698,5852,-6459,-7785,356,31798,14241,-6527,-25341,-18137,30935,1284,17629,11792,-9619,-26168,-773,-14838,17439,-8537,29201,-26133,-3837,-7940,16004,8280,-3120,14705,-7205,11961,2128,3106,23487,13013,-7814,1527,12459,10139,3457,12261,28332,24005,18092,-27554,-11316,-18492,29626,-16411,-31558,-12417,17092,-20396,-19068,-30679,7369,-3523,9221,-3661,-2553,23415,18772,27353,-25744,8786,2779,-32242,11115,-13188,19032,-17458,11228,20380,-25329,-10674,9588,-1523,-27903,30681,8295,7436,9400,-14972,-20519,-11045,-30241,-5901,14981,-2125,9632,-27992,8115,902,-25847,-3843,-13201,-31433,10194,-27099,299,26837,-233,11029,24175,14418,32188,16593,676,22949,17760,425,-131,14548,-23415,-18491,-24611,-8660,-12701,-8931,26577,17726,11852,-18205,417,-26963,16449,-13966,-15030,10274,-10648,22014,24745,-22550,26141,-14475,-28018,4246,7399,30443,-31534,-8872,-31542,-24063,-10659,-23406,4310,21617,8510,-15791,23311,17671,-1773,-17420,5905,-21335,-29655,12895,28686,15277,-8269,-6490,24182,-19835,-20344,-24943,-10980,23257,-22697,26429,-21066,29184,-3137,11800,-5211,14769,-8325,10944,32256,-18301,-31926,-12058,1106,6939,-4817,26957,20907,-6955,23469,8664,8253,-25418,29318,-10492,-28728,-12535,-31082,-32688,14137,22612,-24392,-29086,-10794,19621,-5276,-21790,-29836,-4418,12968,8280,12666,13766,-30977,25605,-22175,-7008,-10429,-13614,-22755,6461,-13785,-31591,-6700,15717,3287,-11100,-19099,13624,4803,-4188,29792,1082,21310,-3770,7214,-15736,18829,-1723,1417,-26163,-26706,-5882,-16781,-32034,-30409,13201,32120,-5904,19449,15736,-15845,-4412,22901,-7371,20957,-18346,-3387,-9088,-21121,-15547,30061,-21034,8561,-18167,1652,-30767,15584,24252,21837,14432,-6047,-8937,-31467,-15053,14697,-27919,28813,-19055,2318,5551,26249,2602,-2013,26328,-27826,20088,-15371,11,11041,-31997,16170,-1373,30414,9713,-8041,-14332,9103,7583,-7550,7679,-23535,-1758,-15695,5920,-9890,28367,28460,-26622,2193,20602,-15374,-20476,19931,4941,-29380,-17872,-28201,18338,-29209,-20193,-23692,29677,-11600,-26465,-21761,-26467,23127,26464,19190,26520,-1167,4948,18629,-20635,-21642,18702,-19520,-11473,-28035,14894,-32120,-1549,-3838,-15943,8298,11107,-5090,12595,-30216,-5582,-6524,-18621,-28748,-4783,1615,-24782,10071,4179,24551,-21512,32252,-30560,28446,-26045,-16896,7641,-28044,-16946,-31808,-3874,27143,-599,19509,-27085,16395,-21936,23723,-24771,22600,-1864,31175,-5141,21624,-22008,31600,3318,27480,22830,-13160,8362,-11251,1021,475,-24921,-18889,-3767,20399,-12283,5718,-32315,13805,-28061,7906,30904,-5532,-10201,17310,-9724,12212,-18523,2398,4679,-25445,18309,8673,-3359,-17761,12717,-19665,15384,19002,-28376,654,20586,-22357,11770,27937,-13071,30410,5555,-19148,-20155,-4248,-6530,5950,19047,-30340,-7897,30795,-23840,-21555,-18449,18049,-21465,23658,675,-14792,-18178,25609,-29989,-7541,5050,27344,3691,-6549,-30369,19493,-3809,14260,-12101,24526,7597,5289,-10809,-11630,-8224,32695,23467,-9655,-3525,8877,-9821,7646,-7386,7020,-5885,31694,-21718,196,-4064,2272,2895,-11956,5564,-7398,-27720,-10597,-6318,24713,-31771,-7549,4801,-7415,-14151,17806,31394,486,-21084,20527,1737,-25228,-12584,-8750,1666,183,16376,15613,18561,10054,3196,-10095,-4663,17740,20475,10853,17804,-3340,28045,-13133,717,-16280,-2642,14482,-4719,-27818,-31402,12652,-10917,15814,28840,29928,2442,16704,-24826,29296,-24644,-32257,2344,26343,30127,-16381,5150,-13005,12992,-5477,1011,-29828,7725,-19078,18142,-9708,-6152,-9991,-26054,18350,8812,30978,-1138,-15103,8226,7890,18073,-15528,7331,-32726,32145,23860,19887,-7775,-10631,16585,28830,-5380,-3746,-7658,-1972,-16095,5845,-20130,31920,16533]},"conv.1.weight":{"kind":"conv","dims":[5,1,3,3],"mult":455,"shift":27,"w":[-25925,-13835,-17744,32522,-15680,1631,20851,-31510,-4211,-24464,12324,15083,-10809,7262,20411,15436,-9571,-1245,22205,19835,-7908,28990,-24965,-13275,21703,26988,28895,-15882,-11020,27183,-28393,-27396,18592,-23421,19927,18163,-32265,20096,17695,28726,-3111,-29185,-22667,19165,25993]},"conv.1.bias":{"kind":"q16","dims":[5],"v":[12987,23120,-21112,29642,-15336]},"fusion_pred_net.conv1.weight":{"kind":"conv","dims":[2,165,1,1],"mult":48,"shift":27,"w":[25510,-5536,-9222,28576,31597,-28295,-27614,944,-21898,8828,-16967,-2529,-24397,19740,4881,-424,-17411,-317,30379,7509,30403,-3586,-15392,-31663,-13558,-20396,13118,877,24217,-7248,-11445,-10662,31662,-27915,-9284,-7196,-17166,-25507,-32345,32641,6125,13825,28795,-9762,19529,745,7376,-15452,-14077,14290,-27093,2013,-17647,9051,700,-32189,25192,21788,-2610,10877,-3123,15774,-10130,-4089,-12779,-5995,31789,-6266,28827,-25942,28133,-30425,-3173,-30069,-17562,23160,-13527,18072,-1089,26676,-27175,-11633,-26345,10649,-16510,-6188,7865,-14568,-14746,22569,10573,5149,28024,6759,10375,31350,-10479,-7439,7779,-3345,-10,3569,4524,25232,-1030,31288,-23069,26182,-27988,-2144,-11458,21039,-22096,-26413,9544,-21316,-3991,-11245,32229,-19232,12309,-12659,693,-21382,935,30714,10194,-7213,-5840,15574,-29583,-8027,17489,-13174,9812,17961,-904,8174,-13873,7662,-1683,19364,4355,3397,17310,-14169,29018,-2078,10484,-20521,-21500,31485,-27043,18931,31380,-5793,7921,-23727,17131,25744,-8932,-8510,-12559,-8174,-8510,-14575,6403,29319,-27054,-3290,29413,-129,26892,-13922,11325,27369,28046,-6122,30566,4349,-20262,5665,23851,-17531,11863,29010,-23491,11131,-5690,11313,-3938,-22990,-22023,6551,10963,-8477,26857,-12043,-24244,-9360,-28208,16933,-18185,16389,-12633,-23400,21503,-23777,-6997,-885,10929,13861,15392,925,17892,-1320,3263,-27221,-8849,21698,17504,-7460,11672,15953,-9430,-48,2954,30087,-16604,12774,23609,27716,32122,-16876,-19046,24695,7423,-12610,12244,2340,12541,-18573,21684,-24660,19836,-30873,-31158,-27496,10313,-12125,-18373,-31840,-7506,-23137,7111,-5317,-10389,21730,7453,-12498,-12730,26700,-3113,-19392,-14538,2552,-26815,-24804,30019,-11426,-8065,-32181,-5585,9973,7349,-30676,13147,-978,-17758,-2233,-17667,14765,-12042,28557,-27772,-8598,99,-31158,-28332,27776,17723,897,29733,-20187,14907,-29519,23777,27732,-4024,8191,27733,-28271,9455,-29878,19907,32614,20577,14682,25548,936,-24796,-14153,-26069,17166,895,5265,-12426,12296,5479,-9819,-3898,7039,20497,5236,7606,12153,3002,8494,-9159,-27651]},"fusion_pred_net.conv2.weight":{"kind":"conv","dims":[2,2,1,1],"mult":8192,"shift":28,"w":[-28351,13721,8067,-31718]},"fusion_pred_net.conv3.weight":{"kind":"conv","dims":[160,2,1,1],"mult":16384,"shift":29,"w":[-29259,19418,26151,-20875,-798,5372,-12848,24498,27046,11842,15474,6833,-27909,26644,-14941,-19586,11302,-27506,13614,-30307,6941,6534,11890,5654,-23940,12886,30265,28242,22026,-2778,13956,17635,26763,-8163,-26630,-18826,-17032,13744,20918,3034,30183,-15810,16976,21049,-6109,10775,-30564,-7134,-22056,-30899,-4500,-11379,-9091,2885,-24835,12051,-12551,-19560,-9137,5945,18847,-8706,-28277,3579,12975,10940,-958,-25655,-739,-7613,-7339,22038,15698,27628,-19713,-3943,14433,24448,-21789,30496,14696,-16242,14455,24147,-5090,29963,14512,-3326,-26702,1678,3692,14663,-13777,26612,5351,-30820,-3658,27315,-26781,10094,27819,-24674,-8847,6662,-18706,7259,21587,-21069,20065,-16921,7919,-28773,17224,10937,19240,9575,25544,1937,-18403,-14270,-27923,-8676,-7786,16371,20163,-13443,7027,32174,-19242,10689,-9955,6119,-31925,-23107,-19119,-14440,28862,-13323,24225,-22816,14887,-6906,-6887,-19568,10997,-31058,-13406,-13625,30143,23800,-7647,-8843,-5455,-27133,28040,19992,-7464,21350,-3788,8510,-4153,-17528,6215,-28188,26783,-286,19769,-2264,6636,19087,-728,-21698,-26073,30051,32540,-16652,26602,-18329,15252,8936,3977,174,-4764,-13317,16231,-20180,-13326,1156,-485,17615,-9376,18431,-483,6485,-7395,9705,25564,-10522,7024,288,20945,-4697,17336,-15655,14301,25422,-3072,-27256,27090,-19360,-12118,-6355,29232,-26227,-11174,-2619,-31138,-32436,26568,21562,-4891,-28337,-24823,14859,-107,25844,10716,29482,32056,-20767,-23915,31414,26789,-13829,16568,19361,31327,-4474,30776,9078,-22943,11315,8337,14345,27032,-21479,-2484,7547,20710,10621,1986,7486,-11550,8988,18432,-31445,13875,-23544,-26349,9023,11764,-19660,-19258,-18719,20367,1086,32697,-13790,-11963,-28998,2624,-24278,-16505,31447,-8017,-7140,-20112,752,12993,-468,11868,-27140,-21392,15214,24196,-17851,23407,28960,-7009,16260,2319,24732,6615,-8358,22656,20686,28458,31499,-28727,-378,25221,9400,3133,-25987,17219,29168,-4377,-28367,-11754,-209,27769,26254,-10651,11900,19776,32384,-26810,-12088,-1628,22989]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/synth_uv.json b/wai/ops-conformance/sets/jpegai/weights/synth_uv.json new file mode 100644 index 000000000..50556f3ca --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/synth_uv.json @@ -0,0 +1 @@ +{"first_stage.conv1.weight":{"kind":"conv","dims":[2,256,3,3],"mult":28,"shift":30,"w":[-16217,31292,-12431,-5691,-8152,-3087,-3598,27761,6457,-30800,18628,-25813,-16446,24735,3500,-22900,24017,-11626,-20696,-13358,-16400,32471,-7834,25554,-12323,-7306,23427,8039,21443,15539,17140,-30533,-9140,-16494,-8228,-337,-1785,-28527,-2897,-12206,-31220,-25064,19007,-24789,-32631,27211,-30425,26170,23898,-28906,5892,4856,-4318,-21748,-31593,-18996,-13915,-15809,31659,-19462,10851,16614,11662,31489,-26250,-12137,-22676,-5209,3807,6414,-16266,-28333,28448,7016,-19483,30685,14691,-4017,-28939,23264,30326,-32446,13017,-10396,-13278,28672,-16890,-15506,-18820,-3518,27244,17632,-13787,23165,17215,-17527,-23854,12612,7093,-16389,-12856,28194,1339,14404,30866,13601,13600,15498,5247,-26386,-1226,-7600,16131,3177,17346,-25788,-12702,-20253,-23556,-22951,23673,-32446,29937,-21228,-12506,-26424,-26434,-20830,18250,-32669,15234,13378,9690,-8271,-16774,19676,24293,3097,-832,12627,21275,-23246,10703,25069,10920,18901,-29895,-30327,18863,22026,-7905,1510,-21861,-26566,28495,-26788,16025,-9411,23518,-31370,14757,-31216,23651,7167,-4789,21366,-26995,-27554,11442,30042,-14031,29418,-3202,-16965,-30884,15621,-16691,14157,4768,-24523,17577,865,-651,19483,-8013,-3776,-15682,-847,31315,-3729,-1119,17132,-19491,-15451,22507,32717,18177,-17903,-26896,1052,-12326,7181,16097,12922,-20318,-1062,9412,-7431,-14350,-7828,1564,-10034,8000,-16211,28292,7551,17594,27224,8371,-26721,30911,-12075,-29698,-16854,6429,-9453,2570,-10841,12165,25548,-19096,-29661,17524,24150,-17463,14588,11769,-19010,-28029,15924,-23450,11420,232,-17449,21861,31691,17992,-6910,28931,-25027,2419,-7151,16086,10890,26543,-31477,-19529,-7788,11293,-32339,-10332,-23397,-32150,-22948,-27432,26780,-22619,18736,22051,20758,8471,20683,-15049,-24542,4158,-6080,13925,-15094,27829,-19090,992,-9453,-1605,-17855,28078,18032,-6847,-1494,-12914,-11570,-26722,-7293,18036,-32455,3466,-7157,-8362,17380,-7544,-18469,-23320,-20313,25933,22582,2889,11222,-23944,24027,8257,17082,14008,28062,14171,-10596,-4034,-14121,8369,15097,-18090,31744,28328,-6708,-16812,-19914,-11623,-18115,-11582,-9884,671,-26957,14101,10430,-502,-28876,-3869,-22396,-11253,-11150,-16091,-15833,6798,21702,-11140,-12686,5488,3085,-18661,-562,27144,7580,9970,16700,15183,-16017,20379,-4985,28621,6993,22268,18672,-31765,20419,7034,-21477,19857,14892,11477,17272,22492,-2625,23365,-28795,5843,23575,13247,12868,32332,-23625,-26027,25684,21703,23958,31479,-23589,-19402,6573,31319,-27148,12970,-2191,15361,-20342,27149,-22823,11241,-4756,12075,-23368,-3317,-783,-23212,-4653,-16521,-28846,21026,-3806,-32760,17047,30832,-25982,30234,-12331,-941,7299,-5234,-18274,-25237,-17974,-13807,-6514,-25553,21119,19569,20276,-18854,23872,-26141,20132,-28908,-9953,29635,11581,-5387,424,-26475,-30172,25462,-2127,8847,-24291,19482,4626,2560,-15081,27535,14937,4669,-28944,7878,11998,13829,18152,3333,-24786,-5978,5696,-17965,-10861,-21177,16420,-25979,32128,-21661,-14912,-1119,-16038,-13793,-22465,26366,-19062,23551,-11008,18073,-2036,-6106,-18922,204,-9404,17016,10137,12411,-21892,-24359,-24957,-335,-1112,-27743,16873,-6169,-19128,1110,32062,13136,11776,-20610,20760,15457,-20847,-10966,15763,13668,-23973,12379,5289,-21540,7745,-18831,5987,22570,9484,21538,-19215,3032,-17992,20910,-8055,31803,18218,16837,-10875,-22716,8415,-22319,-18280,-21327,-24080,9753,-24725,13933,7096,-13863,19246,31365,-1131,-22583,-24412,17119,-18962,-29894,114,18672,-12171,-16433,-9069,19234,14954,10274,18897,25699,4868,24654,14607,19911,25814,-2756,21131,-3420,14106,-21801,-18048,-20314,20715,4719,10403,-24171,-12208,17216,-25498,9125,-3217,-5823,5188,-28004,-26347,2956,25536,-15364,-287,-25919,-13351,-18669,-20079,-15214,1104,14507,-2012,28325,-7308,13630,3286,30220,5018,22637,-17380,22012,17520,23415,-13566,-22504,31409,8232,13593,30812,-12246,-19252,-25303,-9790,-29877,-31669,10818,-4810,20250,17758,21816,20528,-26335,-15834,-23377,16868,2564,25441,13420,32038,4384,19885,-8946,-24221,5347,27139,32496,-29022,-941,21680,-4522,-30091,2827,-10092,7915,-2430,29301,4855,-22260,10714,-13002,18444,27774,-4662,16448,2446,-14752,-29425,555,-4991,3940,19775,13870,-9072,21255,-9455,2760,6943,-17423,12052,17083,23569,-29940,9801,27551,-607,-16163,-3312,11022,-30929,-1367,248,14793,-15804,24899,-19874,-1606,-889,-16899,5813,-2296,-14238,-16048,-15923,-6838,-10489,-14846,-24874,32737,-15108,22034,6148,-26404,-9714,9154,-7155,31516,31498,-30934,-32259,-9312,12382,902,14273,-17011,30885,-24405,22059,31513,-15886,-29788,4133,-1478,-7097,-27414,27698,16607,23874,14922,-10478,27845,23109,-31410,16978,-19262,15826,-29017,-10151,-8522,20466,-15146,22117,-12511,-11377,-9965,17710,-2750,-18302,-13258,25232,8637,23430,12517,-12469,-13507,18679,-16960,-11932,20882,-4646,31805,9658,-24050,-12357,-11719,12003,11571,1195,15005,-3696,-3476,14698,3889,-21097,-4330,32367,206,30781,21974,23642,4445,-23072,-5191,-18894,18820,-3659,-18422,2532,28789,23056,-19265,4563,-15712,14289,24965,4026,2636,14347,-11752,-26930,-21893,-15633,21066,-4180,30908,-6877,12903,-23853,-28739,-32190,-27213,995,13780,28224,-20198,72,-2853,-31954,-23963,-22650,8345,16111,21577,31246,12066,6088,29164,11823,-7971,15711,-25671,1809,-20865,-30467,-28327,18207,-28758,-3083,8439,-25406,25291,-30883,25746,14182,24908,9086,23396,9530,-30659,-30989,29557,-9528,27264,11320,-5093,12114,-8322,-32676,4429,13945,-20288,30867,-10296,-21533,-15278,-23532,-18797,3763,9456,28626,28141,12140,-31042,29084,-6326,-17845,1639,-22386,-11481,-17693,-8112,1722,10554,-11906,-21400,-2267,26685,3423,-8375,8478,-9420,-21790,8727,-9149,-7161,-27569,9781,29817,-836,-28892,21845,4689,4931,-13264,27906,25666,-25022,-14207,-9989,21356,5395,-5837,25636,-7244,3287,28589,31491,-13442,1196,28400,6928,-17792,-19466,16399,12080,-4062,-14478,-14102,24708,26450,-29194,-12125,-27720,23934,-5186,3804,-26775,-12809,27298,-14069,6323,4019,11898,-1574,-886,-6651,22803,21145,-9566,10782,32603,13570,8848,-27679,-2456,9127,-16617,-32652,20835,5746,-22098,-8285,-27871,31961,-3364,-22632,-815,7232,-30561,-23094,32039,2706,31344,189,12297,5795,-9865,-12113,-8284,-5913,30119,-14877,-634,-8093,-21689,28161,26394,-29676,-20836,-2472,-6182,27103,19594,-12029,-29517,-9967,3803,31443,25960,6640,-22210,-13551,-23816,-11557,3058,-6878,21950,32716,-26152,-24796,-30200,28895,-30084,14399,-3967,-24828,-31996,-12683,16085,-25700,-3962,-8264,-18626,-19528,-25245,-4071,-10469,-25707,-3808,-21475,-9991,29914,-26434,-22618,-25567,8881,22911,-29351,12967,15604,-16334,-18730,-27502,-15466,19269,9174,-28272,-6292,16430,30914,19956,15887,14018,-14419,26855,13876,-5329,-5165,29358,14468,-26423,23653,29911,-24408,-18768,-3150,-8837,14716,11649,12704,20395,13333,-24046,29998,13683,-32022,22987,-21329,-20793,-21653,25309,23519,17045,9703,17795,-12227,17601,4732,6899,3815,21221,6042,18307,-19064,25957,26612,-7935,-2630,7371,4110,26570,30769,13690,9419,31487,24661,7451,7808,-4549,24899,-14405,-10740,23821,31368,259,-17047,16448,26065,21794,-10872,10993,14877,1225,7731,-26809,-6247,29641,-24631,30280,12986,8661,-1550,-11335,19300,16911,-17174,12163,156,10678,-30073,10066,-12394,30303,15888,-26996,-16923,32459,22485,10976,6257,13164,7582,27737,-23907,-10483,26404,-31624,-14397,27269,7501,-10635,-12909,16441,623,19561,-28711,1202,-13617,-10614,22434,-827,24533,-32183,-31956,12598,-4947,-32,12886,6035,-16180,-9797,6098,10318,22854,32611,-32652,-26686,-8397,-21071,-15084,-2245,-16213,12555,14926,-24479,-13501,8380,21453,-7055,-19226,29155,-19791,12819,-15280,-19199,4822,9757,-7355,-14756,-7887,3025,-17146,-25400,24956,4424,15207,-20235,-9384,-25915,-14991,11183,-20248,22237,-14086,20282,-25480,-16259,-32744,21331,-19704,-3798,-8944,15929,31114,27456,-29052,-5619,6957,11441,11147,28303,3420,30281,-25377,-6852,-538,18978,-18064,10282,29123,29926,20104,5697,-4193,-11588,-5515,22179,-22928,-6195,-19510,-18482,13656,-14977,14856,-17171,-23568,-30776,24892,5335,10956,-13521,4149,236,-6709,-10754,27914,-10,25010,23562,21133,-6437,-3834,14133,-31505,6364,-5663,-31393,4766,-19564,13629,-30743,-12844,-10987,32067,-14461,-9407,10430,15740,-3611,-18079,-10579,-27338,-12764,19799,2353,-15595,-5069,-14714,-14513,-30886,-18807,9626,6280,16308,1707,-1627,26649,25200,-27650,-30294,25456,-1142,-29555,-4191,14356,6975,-6092,-264,25976,-21942,-1949,24655,-7761,-28677,-23781,12289,-25342,-17746,-19093,-23564,30645,11041,13705,23782,7780,-22095,-13812,-32231,-11094,2657,5353,-1337,-30451,14423,17830,21096,-24317,-28054,-13772,2740,11516,-234,13429,-10785,19597,28842,25961,-5393,-7345,-24832,1024,10389,7897,-132,29603,-15766,8049,24459,-20244,-903,-29672,2908,-23851,27505,9111,27753,24346,18921,-9004,-2842,-15880,20967,31105,30301,16125,-19255,-28160,24572,11789,-16692,-20779,-30344,30932,16815,-25564,-14153,-27726,-7992,23971,30157,31586,-26746,-17968,25903,12966,-6654,28376,-18636,16638,-28193,23333,14520,-18154,19003,-1499,29138,-14568,-19263,-12140,29090,-29564,-10761,-7252,-1258,-22120,-23262,122,-16486,-13400,-28529,-23353,-32075,699,28969,13038,-30182,-10428,8037,12918,-22431,-5396,9350,-32310,-25341,6097,30968,-2661,30935,-25541,30919,11893,-12151,15725,-13003,30527,-23813,-7519,6042,-15725,16000,-29917,16248,-5844,-10683,23809,-30207,-26666,-31239,1551,17757,24792,31946,9659,-26882,22827,-2923,24086,11174,7068,29951,-26956,2405,-6065,-18409,-23212,22769,11485,-24532,16636,-23001,4616,-8128,-22353,25053,18834,10857,1917,-7805,29203,25942,-13257,-14571,30374,-23519,20779,17757,-14109,18836,2419,-5375,-15818,-28001,7617,-11699,-24374,-5193,24485,1586,-20812,-6066,15175,-24046,-12339,-1478,10725,-11772,-24502,-9019,-24532,12678,-19874,29676,22579,-13788,-16057,27344,4652,-4442,-8431,29,6670,25016,-5294,10546,17002,31454,-18261,6844,-7401,-11020,22342,6701,18670,-9475,-21945,-10095,-12280,-11034,22337,20324,-10910,-12258,4981,-383,-23105,-16965,-28165,-30983,27728,18948,-8180,5409,-18265,31772,-2259,-19359,13395,-11386,25782,-22792,-15227,29190,4586,28274,-856,-12454,-469,-31939,-27954,13856,1041,-23005,23928,22942,-16903,32347,-18535,-25106,-7273,-30223,28265,15179,-14783,-3667,18929,24317,3203,1722,6772,-3195,705,-30796,31495,-18705,22744,5764,31377,27714,-15904,-15193,2176,-23788,5492,-11397,-1054,-26352,-18634,28858,16977,-13003,-6643,-23752,32151,15258,29618,30552,27372,-3642,-30812,-4275,-8127,14656,644,16015,-18271,16148,29572,-26564,5704,-23280,13584,3128,27087,12674,30406,25031,-16477,-25164,-6023,31177,25801,3392,-13795,-19529,-306,-12758,25479,-9003,124,-4107,-29769,-14537,9448,29363,17436,-11531,-10316,-3686,-15045,16810,7753,-19018,-30180,27559,-28957,11231,8379,1004,-29806,32189,7965,-15862,26569,-2716,-4892,10304,-20105,12539,7385,-4563,-29576,22415,6450,-27359,25378,17600,11788,-6811,-9194,28465,19717,20129,19925,-16376,-977,-30640,23674,17962,-531,6794,6400,-24147,-23008,-5736,21915,10131,-23669,12147,-8523,21341,-8999,23388,1307,-18255,-4881,-18193,22815,-6992,-23785,-12461,-25517,-7740,8183,-24673,7330,27048,-12498,11309,-30421,-20122,10458,-3184,-32302,-29315,352,28360,-25919,-15526,-26172,27803,-15236,2577,4998,-14924,27586,-26233,29544,-22314,23899,-14543,4190,21431,-27286,11731,2869,-14135,15896,25030,-31169,-10838,23292,-26588,23900,17922,15699,21374,-16453,806,-16121,-15303,-4467,26555,-16232,19766,-11937,-11050,14489,-24890,-12373,4623,-19450,-28826,-25374,-4018,-3724,-23942,114,-31684,9452,-5105,-11495,21243,30978,10277,-27666,-29385,29424,9403,30193,-17115,29862,18055,-7449,8982,-24015,23826,-2248,-17703,22573,-19475,-24165,-11364,24288,-31287,8917,19365,-23218,-15543,-24740,-5536,27729,-7748,14245,22105,-22107,1845,10260,5092,22143,-18661,3470,23352,29927,20084,-19789,3129,32020,-2354,-12235,10701,-4922,-763,-2074,-14038,-23026,-15956,6176,-13530,-28794,-30973,-3689,15635,13904,7039,2649,32326,26627,-16952,-13423,26044,21556,-2694,24601,16687,10555,24639,18357,-5187,-14813,25929,3519,-19078,21391,-6697,19087,3067,-11568,3030,20676,9752,-20987,-31060,8822,-2529,907,-23616,-5341,-4508,9638,25459,28751,32205,-4297,30006,-8387,4289,7845,-6089,-32502,-19724,172,13626,-24457,29251,23840,-24649,-26789,-26194,29960,248,-28868,-21794,28601,-27942,29599,1660,-19169,5554,-5007,31675,22814,18759,3858,-14608,-31045,-15097,15633,7567,17355,-25286,-6731,18530,-5176,-10742,16972,-265,-5249,29903,-29169,-14459,-15963,-4459,20907,-31139,29015,30768,-24928,14450,-2021,21236,17535,14760,-27501,31682,-28439,-11323,19193,-2539,25308,1267,-5234,28280,-21816,15762,19865,-27581,-27191,-26889,16286,-3193,20218,-1073,-22656,-17523,-15469,17821,-910,-12028,6591,-2497,32490,1583,-30608,200,-8653,-4643,22515,8021,-3254,1144,17805,23343,29188,32760,13365,-23973,27653,24807,-5516,5676,25535,-15293,-20721,11642,19282,-9882,-17116,23454,887,28116,-30376,-2653,-18837,-17990,2814,-21001,-26558,21920,16637,-13045,-29392,-29297,-21066,27177,-15416,-31705,22333,28587,12960,-5761,-7009,-19700,-19844,-29047,-31254,12694,-27175,-28417,22753,-32013,-13394,29745,-3440,14443,-22787,-27579,9113,-2264,-6077,7514,-24124,27178,-9732,-22533,2253,7953,-22283,-4619,-16799,-17456,-1427,13426,27291,-23570,23092,15140,-29617,-6382,-22900,-12662,-8637,-9580,3716,16342,-13621,15123,-28454,-17479,27251,9582,30512,-10979,-20876,17777,25703,-6217,31945,1359,25067,10697,1173,17533,2907,-20421,-31803,-26539,24616,-15581,-13997,3800,-26381,-21892,-20572,-23065,19548,3405,19788,-9318,-31335,-24125,-23260,-20094,-31781,18021,15836,-1577,-1933,-3021,4201,8979,20224,-29446,31942,8273,-14940,-8826,6977,15595,-22816,23158,11966,-31861,-19002,-15964,7413,27437,-10716,8629,4043,32363,-3064,-32175,-8377,-5743,-8179,-10975,2053,17819,-24041,24829,17488,-32616,-18867,32497,-18396,-28808,-30268,10772,-18726,781,2169,29237,-5989,17768,9077,23389,15684,12991,9185,1191,-18098,4275,-24521,-17593,-32243,-3609,30609,-29671,-12405,32049,-31378,-17252,25799,30308,21625,-11103,12084,-22796,854,-20219,-299,-7862,-18582,3241,13780,31671,32260,22951,-1982,19216,-20651,26240,8892,-25884,12797,-11677,-25031,401,15436,3102,22009,-22964,11695,-8041,-27161,4701,32736,-17792,16660,17447,21108,9641,-18034,15032,-11222,-15873,29771,10112,23319,-25722,18865,32590,1422,21768,10289,-24684,31686,27403,-5779,-4999,-31797,-16225,12061,-30693,30689,26543,-22082,22375,20635,-15560,23074,-1518,32567,28154,-17910,-5181,13332,10939,23869,-17916,-21179,13948,-5555,694,-31890,2159,-8484,-29374,-15731,28234,-27323,-19054,-13727,30392,9437,31496,20610,-15864,-6090,-3142,27271,-22300,-4179,7829,-12473,-31586,1564,-20890,4032,27909,30479,-21953,-10437,-1326,24776,-13573,10307,-1016,-28376,225,1018,26570,1539,3389,-250,14392,-19740,2396,-25340,-1896,-1536,12678,-1172,-5352,-9731,12333,1528,-712,29159,19069,25254,-7549,-28019,-3052,17546,2984,5370,9573,31463,29835,-30345,-13582,-6987,10975,6624,-26441,27160,2038,9150,-18747,-22204,-32314,-5328,-4045,-15987,24070,5300,-6865,-12354,31986,17184,-16733,16388,19007,-1573,23800,-3623,2611,15216,31385,-22421,22650,8081,8184,-23093,-7938,6998,-16106,-3685,-30762,-24536,-2409,-7234,12597,-16241,32733,6851,-14047,32262,-28581,-25773,-24086,7012,-16833,9512,21183,-22056,6004,4044,-14915,-18312,-26864,5696,17980,32512,5546,13786,32229,16231,5800,-9305,-27770,-15972,-16201,-4888,23671,9770,-26298,20135,-22107,12150,-18816,-30051,9370,-17320,18334,-5872,4078,-4023,-30122,-3307,-20939,5260,5376,-22397,-11725,-12456,-25590,-6339,2857,17185,28891,6643,27723,-26933,10280,3059,21686,-12797,-1596,-10474,13058,31829,-254,9426,31871,-10291,-92,-30636,-22003,29387,28630,-16651,-20656,30745,23430,27534,-3127,-11320,30158,-12609,12742,-29482,26497,2312,-25595,-14929,27801,-8260,-26554,12643,23343,-10332,28380,21374,16291,-32199,-14079,24941,969,-16934,5409,-19363,-22468,-19978,-10451,-29843,6749,-988,14551,13601,-18435,-1278,-6122,-25445,30472,32125,8651,11725,7171,-28622,32729,28757,-3055,17881,-8080,-13357,-15155,10023,20239,-15723,10397,7281,28473,-15706,23724,4731,-18857,26233,-10049,-9041,-6425,-25603,5950,-7317,23572,26092,-9485,-4211,26338,-18977,-5630,-3648,-29561,-21650,11146,-16170,-25639,24476,-23631,-15828,-13728,7055,31829,-22155,10190,-19649,32345,-8409,8452,5045,25947,-19406,-2921,1483,-30372,-27008,9972,-29509,-23538,16999,28269,25587,11170,17292,-10513,-31192,-24321,-1554,-14247,-3804,-3171,11574,741,17757,12075,12655,28876,23744,-11406,-31738,18295,5353,21521,2920,-17177,-3143,-17522,28850,26057,3327,16646,-4904,-5242,28766,-20093,13368,32715,-7761,25774,8762,-24805,-7413,-18772,-14016,5015,-12604,-11932,24632,-3798,20598,18619,5604,-17880,8636,-12599,-18410,2782,-24508,-29999,26251,-23752,5644,27718,16849,-30706,24680,-27370,-3867,-28725,-19449,-22906,-3168,-20236,-24974,20781,22417,253,32685,-20113,21328,-1113,-14188,-31691,-651,1133,-20667,-9741,-17749,15659,-12747,-23708,9231,-715,-22495,-18302,11794,-12987,-18044,-10182,-3547,-14392,-30995,27341,-15709,-12567,-3073,-9598,-25553,-5556,-23141,5033,22107,8302,5454,28473,-10818,30766,19778,3865,16192,-14753,18618,-29494,-20525,10278,-14713,5264,-31203,16580,14109,32073,-26506,-8752,17926,4846,-18179,-16144,-25725,472,4699,7013,18458,14379,-5963,-30368,-1494,13207,-8408,22218,17792,5838,21326,-1027,8989,21794,10754,13642,18797,24252,-12013,9186,-18181,3376,20028,10696,8763,32347,-31178,-12150,2713,16359,4882,24574,-27643,24214,-13940,-4278,-1555,-25060,-14562,25621,-749,27819,8185,27857,27294,-14908,-15131,-30729,-30106,2115,-5124,-10960,3491,375,18790,-8677,-29030,-27401,-8956,-13102,29814,15271,24852,-29354,12030,-13598,29200,2304,-23742,-12624,-3828,3759,-25481,21833,19709,-16769,-3093,-24951,11705,789,15283,20739,-16526,-29487,-15833,-16457,21489,29117,19883,26006,-17820,-12824,6437,23096,-3781,-21598,-1701,10854,-30675,12179,4729,-12392,4421,-10276,-8294,21217,26987,-7312,-29372,-32680,-22925,3806,16786,-25221,-22380,725,-20671,13827,-17915,13338,-5689,27310,-3594,4994,16255,29491,21076,29524,-19728,7048,-3140,-19628,-32661,20146,25779,10567,8866,-8237,-1753,-18733,16267,2068,-4437,-18795,10288,12790,-25670,-30355,21604,-1151,8233,14089,-21429,-23204,3018,-15436,-28296,22839,-30217,-2485,19509,27397,-27968,-24707,22429,-22477,-19185,-11412,-2683,28629,23665,-28533,11609,-27654,20300,6441,10808,-15035,-22418,-11670,12282,20922,25834,-16790,30108,-2288,20526,1802,-23995,-10178,-30310,6727,-12744,16539,17323,-9722,23956,-8707,3678,20014,17989,27605,1835,-9427,10683,-30982,11494,29614,-8489,-8321,-6309,25333,-9037,-516,30697,29246,-14968,803,16840,-13197,-29384,25831,1710,15238,-21325,7513,28036,-10781,-6886,-22516,13880,-21155,-11709,-31401,-22025,25499,18981,11278,-10325,-4727,32688,-19755,-24297,10974,-2408,-29683,26102,12513,-24391,31402,-3763,-21404,-21724,-24338,-6186,-20097,-8347,11439,32050,-9426,5473,-22616,-1011,7293,13462,-29656,10481,29018,-23983,-14931,30547,281,7077,-9186,-10120,-26868,28213,31654,8396,-24360,-29973,-14135,29255,24976,9370,30113,-25448,32738,18266,3278,13632,-12045,20340,11930,-20446,23618,-828,-19044,2489,21284,-17267,7214,-7262,-9779,5666,-27973,-20570,436,18278,31823,-22991,23262,-21504,-13723,-11342,-21309,-22257,12311,25450,2115,15231,7027,-32717,-14462,-26353,-12213,-2387,22724,16383,-20018,11187,19927,-10050,-11666,6016,-9984,-23248,15864,27258,-14720,16584,-10926,18787,32280,-23565,-8373,22940,13886,-11163,32258,-24366,-28026,-9795,-24994,-8912,24054,-391,6944,22069,-11041,-23038,23905,11318,16880,18294,-25011,-1925,-1829,-21871,1111,12811,12700,-9866,31588,28136,-218,-6342,6697,11105,-17114,-12608,-27040,-13478,30347,-6785,-14846,17747,2852,-18000,-10917,-29824,31157,-18023,-32383,-28845,-9622,7747,-29548,-28759,3227,20891,-24273,-7792,-27618,-11816,1042,-14597,-28233,-26494,-11899,22467,22079,-15191,-3577,32256,-9230,-15085,-9295,-16734,792,25135,20013,-22907,13705,-18253,-14283,10542,7893,10988,-9228,30730,-21660,4585,-29819,-760,-31883,-30605,-5637,-26456,-11355,32437,-11612,-28115,24569,18093,-5671,-12391,30273,18164,-25584,4732,16706,15286,7603,-8479,-10765,-8831,7614,-12166,21434,23325,21535,-2142,28493,-19385,-18168,-30740,-26669,149,-11483,113,-3916,-1698,1299,-20326,22694,-30492,-28427,4682,-16286,-10287,17406,-13340,14381,-20479,13641,7630,30385,-8028,28167,26355,-15696,15815,17799,-990,-11799,3899,11950,17762,19765,-10067,-8473,-8999,9268,30751,6460,-2982,27036,-9026,19460,-17965,6894,6306,12778,17004,-17287,-7476,9865,-5614,6846,48,9956,-4080,-15880,-20232,13392,30652,31343,535,-19895,12423,-28378,10338,7443,10496,32691,-9242,-21005,-17525,15842,-31715,24822,-24336,-5368,-16104,16198,29643,-8903,-10758,-3729,-21376,11473,-30647,-32500,31114,-4080,-28419,-10585,-20346,-18383,21515,28177,-13278,1440,9183,-15952,-8305,20662,-18848,6925,-5744,5566,-11171,-26422,18546,-29955,30516,31158,32309,-11849,-29855,32704,-32710,15053,-264,12277,-5771,-16663,-3688,-32346,21531,-3017,9,-14505,-19478,-6533,24650,-61,9917,1669,2700,-21787,-17307,3913,521,13031,-2097,28363,19200,-28510,-25055,-16145,32179,12855,23465,30160,-23979,3606,5432,31664,-8172,-9826,11460,1546,-19788,-32389,26471,-31638,20375,-13924,14105,14648,5745,9727,12816,15712,10706,3960,-1821,18811,9854,14555,4686,13657,27116,-22318,21825,25549,6252,-27007,31538,-31744,-11233,668,29634,12805,-2834,-10016,16137,14950,32756,23456,5571,27127,-11557,32452,2769,4646,-31849,32404,-28853,4982,-26630,6642,28711,-22740,-27612,-8141,-30445,17457,3996,418,31271,29757,-28159,3867,16502,-31710,11941,5853,7960,28127,-6322,24468,-27790,-1524,17580,-24075,5326,2066,18331,16380,21761,-5205,-23134,-22022,30840,18426,23417,19089,-5475,30124,29565,28361,-22300,-29683,-20831,-8418,-31553,23580,21250,-3989,-87,5951,31219,18745,-18574,7490,212,1518,9823,6354,-13498,2378,-21346,-5403,-8207,-22073,-29493,-24419,-11985,-24870,14725,9935,-20445,-20984,31936,25136,26806,-10791,20748,6269,11917,13417,13972,21694,9081,8125,-16803,-7850,10327,16550,-28944,13364,20279,28964,-14854,23817,-23033,-12841,-23625,32224,-7675,-20974,29512,19909,-22584,23477,907,-15901,-28110,13860,-23142,11984,-20503,495,-1415,-6441,-28420,-15401,-20043,-27143,-29480,-30522,-30914,-20003,-20241,-2613,4440,-13046,-23997,-9779,-17816,23780,18614,3648,7639,31141,19417,-32281,-779,-31510,-14389,28833,15820,-28686,10767,-13409,8119,-27185,-26843,25519,2470,-30566,-13901,32523,3690,26756,30572,-32109,28635,24743,8940,27211,9351,21920,-28844,-7145,-15822,-17248,31608,-24004,19739,23501,30736,-3861,2556,20740,32274,-10857,-12692,27973,5821,-14953,-28200,-9669,7831,-3833,23208,8166,22913,-8874,-14057,17714,470,-15060,30069,7239,-9221,-27331,-855,18927,-22072,-23313,-21974,-31036,19184,-32615,13072,18363,866,6224,5264,-13983,-10893,18789,12741,-5696,4500,20266,-20949,3866,-18923,-29501,1685,-24099,19877,25090,6480,14501,7890,6497,-27389,-23633,-25759,22546,3694,-10289,6145,-5783,32117,16781,-19484,-29370,-27355,-8956,-7473,-4056,-13707,-11699,-10827,15965,-10578,6617,20637,-29880,-10234,27385,-2182,-29934,-20930,-30045,4443,20289,-7931,20730,-19664,-11089,597,-5270,-3342,-29756,-3812,587,9270,5580,3669,19952,-25711,26884,-4837,-9143,26457,-26553,9342,-3263,7023,9793,-26343,-2224,-16747,-10423,14671,-3520,-5147,-3160,14337,-21991,-15976,18514,29758,-15141,26424,-6437,-13388,30334,25726,-18943,-11778,18909,-8549,25231,-9181,18035,9793,30528,22102,-32292,11745,-20384,8175,-1885,22487,1654,-30551,1039,32232,-25322,12886,3636,-22890,-18915,27566,-19293,21631,11055,22893,9178,30523,-919,19817,-11368,32257,21345,-5425,-19708,31380,-16089,3657,-5454,23808,-27258,-301,3229,28303,15202,-2042,24149,-13133,14337,-20055,18841,19688,3452,-6649,199,-3811,30233,-17535,-6900,-15049,-29801,-32068,-23738,28495,-14036,-12547,22678,-8226,-30786,6816,-25141,-1721,-4184,-32764,7757,-27185,-2531,18346,-3043,-15996,31276,-18904,-30982,-3810,-9597,-32323,15518,-10114,12006,-32543,2391,14756,-14198,-19396,-17343,4185,-21617,23143,18520,-25849,-24164,-14914,28450,18984,27499,-12332,-164,-31052,16190,-23036,24158,-9971,7033,29511,-4916,5641,23792,-11757,-32601,9773,-18724,-17227,-22376,-12590,32168,-20778,-15565,-557,-9766,-3663,-30442,22924,24455,19208,6602,17565,-17906,22937,22886,-26997,-6034,-9087,-28870,10660,23651,5436,29519,-16249,24459,-18753,-3939,1103,-8405,-20464,-17792,30534,-5481,-6170,-21804,4715,11937,-26930,-6093,19702,3441,18455,-6321,1047,-6778,24383,18968,-19879,8819,-31809,29495,18253,282,4110,18670,-11705,-15376,-10744,-10141,-21328,-18453,5075,1462,-3312,23257,4934,9209,15890,21995,-10206,13347,32,21257,16446,-9547,14188,717,6159,16189,-26332,-21247,3096,5641,17918,-27208,-11954,27986,5423,30412,15512,-27424,28009,-4004,-26805,22851,-13378,19574,-30219,28646,7982,23875,9983,15449,6881,-20699,18955,22751,-3952,205,16752,30248,-3500,25089,29630,29367,15599,21722,-26127,25170,-30443,-9029,22787,17416,5995,27232,10327,-9221,15095,-25917,24624,-18950,27154,28990,-21823,-30460,-15812,-25621,28103,30247,31956,-2584,19718,6717,-6283,20154,-27508,24010,27846,18959,-2426,-9242,1632,24161,18128,-27348,29749,-27562,-31660,20352,-3168,-14684,-32498,-3641,2847,-4038,26443,25953,31679,-9549,31606,10077,-12545,-16207,1108,2097,-30176,-2166,-17710,1286,31252,-8054,25826,31604,9342,-31420,13058,-292,25682,-10779,-1687,-27380,-13429,26060,-18139,26512,-20575,6977,-29069,-16832,23294,2230,-416,-27118,-28420,12929,8540,23579,12398,-19696,-29691,-7478,-10308,3762,12783,-3102,-20775,-11203,2036,-22299,-2191,-22071,15745,-6612,6856,8882,-1555,4163,-10992,-23573,26804,-17555,-6296,9844,21298,29320,28360,23075,-24076,17321,14095,22549,28077,9529,26887,9023,3759,10595,30336,-18822,6419,9767,12154,-20236,19733,4718,21178,-25004,-5567,-22639,-19927,7953,-289,29437,27346,-12204,25512,15968,-28941,25625,4812,25902,10023,-13881,17672,5014,-12838,9401,-11106,1969,-15686,7261,-27581,6544,-11722,15521,25693,-16797,-24729,-16896,-9080,5130,-21991,-4294,13440,-27837,-4453,-13107,-10175,-25419,20679,-6940,-15798,31012,-23895,3004,18302,-24657,-23233,-3859,2188,-5746,-6861,-5238,18329,-15355,30610,-11178,-19301,-12222,19160,16846,22322,10159,-28827,7853,20104,24928,11774,31366,-12942,-4819,1988,14159,-27607,-3128,-2247,28374,22502,-5367,10009,7363,-24728,-28841,-3939,-4863,15092,12551,-20748,-14863,-15937,1132,-10522,31823,-3044,14775,1223,21167,27904,1653,-7759,-15390,-10261,31961,20760,22550,-12309,-28161,-4715,-23051,27933,24620,26276,-21985,-23339,31574,-32649,-3094,-17134,5495,-19968,17970,13690,-17879,-7386,19492,18463,-1,9293,766,-29025,25078,-13169,-18970,9782,-14775,-23660,-6261,-10699,-7527,4650,23264,7319,29437,4724,11353,-7063,13027,-2111,-5325,-12462,8151,18392,31057,-20469,2324,-2559,4554,3636,19407,10413,-13556,24523,451,-24179,-19415,-5726,-18429,27009,1518,-10971,-18893,-4400,-2600,31611,23827,23803,-15234,-21582,21575,-11115,-28938,-24057,21185,-19670,-27618,-27844,32515,-21928,-2483,32112,18625,19701,-19266,-14447,28902,-27175,-23295,-2209,-14247,8454,13195,5162,-19000,2790,32669,-5876,13981,-14030,-21552,16700,-22983,-9162,-8746,26078,6315,-13053,-30635,27960,24459,12764,-1131,-27097,12911,-14336,23880,-31472,-11400,-6620,-11205,-11708,-6109,16445,-10492,-13057,3059,-17059,25858,22676,-949,3657,-1443,-543,19092,19306,-15478,-30221,-22095,-28302,8416,29190,-23062,-24744,13057,-16597,-17683,16171,-23439,-22045,32340,20506,-7619,-5421,-18362,-26516,-32622,15575,24215,-20907,-1270,-20143,16349,31396,27072,-22018,-29941,4980,31886,-1309,-11449,-25556,18908,17553,-12580,-16626,-4215,14395,-23171,-21972,3673,29182,-31430,22599,-29390,14679,-21147,18538,-6680,20724,23727,12887,-25503,-21080,23405,-32612,-18034,4291,30549,-9143,32502,-15990,-6156,-31718,6114,14920,28261,-12068,22883,21411,-24988,-16256,24244,-1150,23568,11550,-16365,706,-15390,10588,1829,-27963,10243,-3871,21528,23035,-10423,18945,24913,18384,15864,14673,7935,-17943,18726,24258,-3885,16460,19007,15945,22159,31080,-521,-22237,-22889,18461,1492,28913,-7998,3592,-2295,31249,-10698,-8694,-9578,862,-21346,16378,4400,17439,-28876,-16906,-4462,-30495,-3186,15913,-13558,-10346,24604,6371,30997,-24995,-31194,3947,-21517,-11088,10686,-30755,22926,-27734,32742,-24202,-31245,20165,17483,16844,-16601,-20214,23255,3619,9118,-29090,-16969,-27609,-3378,15560,-9498,22263,-4549,-2369,26902,13831,27973,-13592,-7113,14689,-24793,25122,-15891,-9306,23859,30030,-3053,-86,19356,-12293,-20698,28973,20844,17916,4178,-26000,12741,-13938,31177,-17874,-13248,12557,-6434,30554,7607,30808,21011,-25134,-3926,-27838,20537,25956,464,2431,-23104,20079,-6243,-31010,19395,-26712,-31848,-11647,31629,-32609,-10006,-9168,21290,23629,-19492,24285,7646,-7224,7517,21394,19811,-26149,4619,439,7482,-13262,29210,-28828,20112,20949,10003,23078,-32335,-20228,199,-6465,-20067,-13105,-5410,-1299,30078,-7115,-9897,3983,-19356,-28088,-6421,-29646,19234,796,8598,-1003,-30229,-18604,-22407,-4006,2967,13297,23795,-16933,-22879,-25950,28876,-12975,20412,11762,-11364,743,-32577,-21835]},"first_stage.conv1.bias":{"kind":"q16","dims":[2],"v":[5856,19073]},"conv2_t.weight":{"kind":"conv","dims":[98,4,3,3],"mult":74,"shift":30,"w":[-25173,28682,27960,8433,-21030,5328,17435,8839,27968,10475,-5413,-19057,-31430,-29513,-22007,-25451,13113,-14017,14682,24755,25834,16662,19743,-15129,32202,13878,-25668,5501,11860,-13482,-16862,-28636,32605,19784,-9300,-6775,10614,7380,25322,-19372,-2736,31131,21852,9700,-8545,6194,27968,12972,-14914,7275,-29678,8180,-10925,-27963,15553,16025,-8932,18750,-21444,13208,-17963,-13305,482,15512,19626,-11576,22511,21027,-29435,1577,-14675,13434,-8240,31786,26898,135,3527,-4537,6477,-23021,-24814,-680,30401,-5162,-26006,23945,-5494,24362,21578,-27637,-15873,-911,-29840,-22849,-32594,-9765,19906,-19294,-22957,-24867,-26970,7305,24984,-7107,19740,-24529,-29541,30445,14020,-3271,-12495,13126,6405,12625,25903,-25072,3296,-1695,19328,14402,-9049,5029,11014,25929,7529,-2126,32264,22346,26055,22166,8885,13435,25886,-122,-27522,5851,29218,-4105,-13206,-17513,-2950,-11217,23278,-1769,-17553,-16269,26740,-22907,-4672,-24488,26467,-5885,-27432,-4211,-15708,-553,-15524,6636,-27959,26853,10648,11364,17548,-26897,11227,-7209,32275,27,29005,14686,27929,30254,-18247,28544,-29959,14546,20412,2969,23894,30537,-25298,-16390,27928,27887,-22562,15973,14280,-12577,29051,-20374,4985,5333,29735,3521,-12133,-2263,6929,-11730,11045,-26168,-22965,-32475,-18289,10430,-10062,-1416,30953,15601,-21637,2258,15837,10437,-18751,29128,14356,-21539,22425,-26893,31989,-21146,-4174,2372,-24994,19280,-2056,-28708,28211,-4576,-8306,16153,-10851,704,-18883,-24840,-8709,-28595,31353,24431,21620,-20219,19352,22649,13800,-32562,-323,-24427,-26461,12141,18986,30688,32085,22856,31192,-2550,-3755,-6259,23461,22208,-29758,-12502,4299,-28283,18184,16973,-7599,-2687,6550,-19163,-17915,-23013,29214,306,6148,13643,27099,-6577,-32389,-16560,-25437,-1816,21257,-22196,20783,-18966,25603,-19197,-28670,-4034,-25799,14740,23555,16300,1756,30922,28170,-21904,-7892,-23301,13667,-24857,-3509,-28618,2390,-19436,32701,950,25231,18440,-6287,21089,23286,26840,-4526,-16482,28231,11564,-3474,14042,-8635,-30928,-29438,26176,23986,-31753,9777,-23167,1663,19634,-1987,-27227,29965,23945,-18176,-11315,-10915,-17708,12873,18881,-32409,-6764,23642,20957,-17993,-26015,-5285,4632,-18214,1571,3930,-6389,16725,-1438,-3148,24164,31165,-15593,19296,-21756,-29704,-2551,28190,-1166,-30576,-20862,18505,-12183,-3073,19026,-26132,-4757,-26515,3409,-28041,26415,-26808,13928,-6282,-613,-27858,6823,-26558,26584,-30029,11215,30637,-8874,3448,-30765,-5446,9209,-26711,-27280,13556,-30181,-11296,-20343,-6562,-22820,29867,-25383,9908,10310,-25205,-3886,6519,3030,-3540,26939,-4679,-6804,25237,9232,-13400,5197,-16241,7577,-10584,28311,13814,24893,-189,-851,23392,30441,14223,14088,-29572,-27381,-11768,-16098,-14394,-7299,-25370,4077,-9297,-9811,-25822,-22845,1219,16537,9038,-9494,13244,-14936,2052,-26742,6098,-31106,13135,29813,-11404,-7479,22277,-15576,-8207,28399,-8034,-5936,3325,-25842,20700,-15662,-5674,26494,-4292,-5856,-32522,-17612,-28805,-3134,-12826,14939,8519,-30647,7914,3788,-31611,-10994,30552,1566,-30912,18867,19036,-26922,-28266,11893,1187,-28588,-22275,-22877,-28008,29755,31143,-30319,-16812,22138,26351,-19221,23094,-4211,13405,-24442,-15881,32004,-14000,22467,-16762,16544,21383,-26739,13291,-27136,1626,-337,4539,22778,-4281,-15826,-2053,15734,8068,4671,30486,30631,-6796,-2208,12843,-28062,15177,4899,-29021,-11211,-10552,18532,5014,22003,-9050,-1441,-26349,7678,-19642,27270,1494,-21066,-9168,-19342,-6134,19667,20578,-28766,17961,-17602,-16695,24958,12890,1370,-13109,17068,8801,30515,23231,-29420,-29358,-29687,-1113,21321,-9823,-29214,27120,1347,30840,300,-30298,15493,-30826,-6081,19735,28288,-5007,-18291,76,-18244,23220,-10379,-5620,30268,3735,31727,31198,-30972,-17044,25300,1890,-2269,20158,16252,28051,19725,-16269,-4980,-17258,6381,17028,-12,7297,-4094,-2152,27871,15589,10921,-28620,-32043,-6800,-21824,-948,-30966,-29149,31075,31480,4567,-9694,-30113,-27273,17570,-17932,-25782,-10471,-31399,31791,-23053,31511,14086,-32094,-20147,716,29521,18837,24864,15826,12760,14830,17496,-15878,26633,9437,-10752,3124,-30911,10266,-6922,30210,17714,-22545,-2836,-2233,15818,29914,30678,-10324,-21008,-1657,1208,-11653,-4976,13147,-19778,-6438,-18560,-21303,12678,28762,-6526,-31958,-19000,-5698,-27730,-19850,31833,-4659,-20977,-1462,23043,-6377,-4003,-13290,-2162,-27600,-18932,-14873,-16311,-1653,9356,-9464,7894,-25639,25790,-21072,7018,19478,-31067,17192,-14884,9438,1185,-13767,11728,-1765,19214,23231,31692,32678,26865,-6460,-11496,-15141,22728,-31232,3798,-18189,23317,17563,29724,9995,25740,-26871,-8242,-4538,20235,14189,1089,-8279,-32661,-3984,10044,-11790,27083,13015,-25562,30756,2516,-5844,27567,-21735,-28091,16981,-5965,-23242,617,-6819,-23673,-23526,-11884,-19236,9910,16893,16001,-28877,-29422,30969,-18673,352,-7876,-3325,22573,-32075,-9137,-29803,-14669,30708,-29209,23333,-14895,7400,-30874,-25405,6262,-20826,-21169,-10100,14129,30334,7392,-17893,31399,-9311,-10923,-15890,29541,21220,8484,15995,5088,2138,-26200,-14251,-14131,31522,-7854,-6998,-25298,-16754,22568,-10116,25927,-8136,8342,29192,-4388,9007,-14914,2372,-15284,-23772,-6149,12372,-23436,-3139,2236,-11571,-25984,9116,-17497,-6318,-30632,-26501,-32574,3727,25540,13407,-25917,-29622,-10898,-28097,-11234,-26707,1356,-12711,-4960,7758,-32256,-10604,-24197,2278,-12182,-3588,8150,26302,20736,-29591,6395,6689,3754,4765,20284,30289,-5340,-29500,13457,26054,26104,-32233,31297,-6671,-30669,5673,-30273,-5796,25469,-30173,7573,31818,-28491,-13332,-23201,7786,-1238,-2787,-25902,-1305,-15747,31066,19233,-21348,-22356,-15470,-7243,-19017,-2086,19689,-5920,20273,31097,-16215,7803,29368,-27436,3651,-31777,29369,18141,18185,9849,-18448,-11859,-9529,-7176,31107,-16244,-12748,15172,-1811,3651,-18544,23657,-12571,-25487,5208,-20265,15622,13736,-21595,-13441,455,7915,12445,-4481,-4586,-1149,27274,2258,31542,-700,-11289,14359,31923,-21732,-6158,23057,5593,11184,12991,-6914,-8536,32063,-13678,-16300,-8327,27011,-5555,-23607,-8670,-25897,8765,-20604,8292,25056,-20625,-31296,-32355,-28157,2818,-1299,2613,-7583,16210,-28653,-31505,9620,8206,-21476,-1805,-31295,23534,-7298,-17286,-9293,23483,-826,23377,17706,24515,23241,-23015,4332,-24135,17906,-20916,3737,-18415,8775,-30315,-13296,-26525,-4122,476,6646,-3517,-24212,-1755,-564,-14131,-2061,-25961,22796,-3730,-923,21194,-5510,29962,20189,8106,31625,23432,-11016,-10010,-28759,-15031,13808,-11438,-12878,-20611,-12210,17377,11785,-10586,12013,25792,-6070,28303,-11816,-32639,31749,3210,-22356,-18923,2282,16816,30097,30655,-28,8673,-13217,-31641,116,-15050,-9923,-15979,31802,-2999,6532,-19164,26252,-12624,7573,-25289,-19080,20402,18118,22966,28316,8540,-21393,-11433,-5288,-7338,25036,-16920,-27077,19639,2680,17828,-22383,24214,29282,-27554,26255,-18566,25990,-17059,4455,22909,-20775,4230,30622,-26164,-8199,24822,920,7439,24198,21892,15557,-10227,7720,1616,-20452,-27105,7970,-21776,25704,-15657,-16006,-2994,-15981,-12823,-24142,-10432,-7895,589,-28899,-26150,11261,-6266,23623,-6734,17968,9004,-11441,-1168,1790,10718,-27373,-29279,-8198,14672,13890,17812,-29895,-2747,-9374,-26177,3840,31717,-25674,-18721,21665,19662,30080,-6540,1689,13415,31049,-1282,15977,22930,-30320,-16743,-11170,22691,16585,21455,12709,-8071,-17863,-26405,3243,17366,11320,-9522,-29657,18334,-20388,-18892,-19382,4859,19545,-7118,-13099,7901,-4530,-2254,25113,-7220,-20746,5925,12793,-30956,-31315,-18871,3083,8843,3003,18495,-31333,-9751,-30266,8095,-14227,22892,-32286,-28147,7617,28069,17402,25371,-26168,-32696,6380,-18018,-19137,8665,23749,26229,-4077,-9937,-15248,23928,-29051,-20726,24338,3827,-17044,-32151,11118,17375,8773,26053,15334,14796,-22751,-15290,24804,3808,14394,-3644,-32333,20014,-32392,-30072,-13169,10411,-8042,-30230,14509,-7136,-9464,-4039,-22540,24567,-2051,16709,-29942,-6015,3966,-8915,-16729,-3725,31243,24284,-14707,2248,-5220,-26090,-1838,15645,22300,8716,-9864,13959,12337,-22337,-7295,-4008,7786,-25890,148,17178,-3755,-21293,4409,-5598,29698,29441,-16630,-7931,11247,26837,18008,27744,-987,24267,-25333,2394,-29511,5868,5068,14970,7437,-1778,300,-27892,-10705,-24556,-22750,20096,1197,-2214,-26580,9193,-10023,16184,-11531,-7030,-31642,12405,-17993,-25058,-26959,18778,-11285,31114,1149,-171,3920,13371,931,-14270,5839,20918,-17344,-21132,22101,-5795,564,15185,-3573,-24829,-21737,11286,-5321,-27744,-15412,-91,-12173,21984,3879,-13781,24976,29000,9275,-8994,-8310,19801,-13641,-27399,-13849,311,-16142,-3839,30541,29255,-30308,14882,4028,-3533,-7825,18259,-23959,-22717,-5691,-18508,5099,2530,-8453,12739,14982,10361,-30822,-8005,32529,1059,19507,9865,-21386,25078,10037,15299,-29006,-31535,4827,-32563,-27726,30590,-9967,5719,4748,10216,31016,26863,-31800,-11354,24092,-28051,4843,-1248,-25924,29913,2658,22336,-13072,-11023,7277,-4941,16072,-13314,16401,5748,-8944,20065,4345,7984,-7043,27055,5475,20594,-28120,-1442,-30554,10384,-14891,-16362,-24799,-23072,32249,-15410,-10978,-19430,12647,-32591,-22117,-32422,26199,-7387,9316,25450,-11684,-15346,9594,-3282,26802,-20076,-18909,22819,-30370,416,7773,16674,6994,-5258,6882,-6896,10109,-32725,2343,30632,-27537,-22185,27753,-3531,-14524,-7407,23032,-12380,14701,-27989,6453,-7842,-26041,-657,-17762,23706,4255,29533,22753,-16272,5666,-6794,22165,-31837,28682,16106,29805,6235,12117,-12792,-29498,-20568,-2814,-6143,-13827,-9526,-23438,-13939,13410,9718,2123,766,3480,12743,-9962,-17347,-17348,26265,-3029,24849,-9594,-18023,16368,29554,-22441,-30810,15395,27013,27509,-4393,-12873,30050,-23324,-19748,269,7129,20759,-11574,9352,6808,-11908,22587,-12850,-26529,7673,28367,-12313,-20634,4514,30416,-10336,-600,-5634,-27424,-459,-14503,2373,-23457,-6379,-14949,-30629,-30927,-18643,-31614,-30723,30219,27843,-11828,27074,-29422,7263,-17608,16854,-4638,-25564,18095,5269,20615,28479,31161,12045,5326,24748,-23991,28407,31037,25281,9370,-15714,-2392,-20969,24459,1554,14585,-13943,29103,22420,934,-11879,-24250,26062,6395,-2439,-16705,-7199,9877,26431,-26584,8517,-3844,7950,-26043,-27966,-26802,-25075,-31039,20231,-14567,-9395,3391,13376,-21323,17446,14559,-26417,14701,29153,1259,-27964,-21740,-31619,6922,21264,14905,517,-14089,4097,12288,16108,18900,-10753,-8429,-8419,-1589,4288,8796,-26271,-20610,-15904,-17907,29284,22709,18632,-3864,26646,24948,-8796,8728,5402,-11559,-601,-175,22892,-3275,30377,18006,32627,31763,-20903,-31328,28083,-2721,28332,-13938,-5213,8119,-2031,-17278,26234,32177,18281,21414,25127,-2263,27798,-27336,14379,10195,-17658,14016,25577,-13186,-23117,-24156,3584,-1274,-17878,-29676,-17245,4869,-15493,5316,-1626,-11814,-12807,17418,-27943,-21284,-8850,16449,-19101,-12783,23485,32151,-13324,-20381,29640,32047,4861,15014,-11283,-25539,23585,21169,-11163,18648,25105,-3468,-2641,-14084,15707,21679,11524,-30414,-3709,-20900,403,25174,-8545,-16975,13749,-7038,5164,-29383,-15188,10084,21612,21314,-7193,-10675,-9840,-8722,-15432,-11114,15008,-27324,32745,-1079,-1697,2063,3686,-22824,-10325,-27224,17713,-8409,451,-29333,-14961,20508,29373,-2567,22227,-30211,27572,-6884,-15278,-13419,-16405,3412,-18201,21047,3086,-19122,-3663,-17580,-11953,11109,15703,11531,24583,7729,9760,-2147,21748,1519,23829,24760,25478,-10494,29836,5483,-1529,-26646,-30192,29122,-16026,-8647,-25910,-4765,-17225,4205,3983,7005,3904,-3066,-18159,6121,-13286,-10653,9658,-4230,22098,-23234,28141,-15331,4541,21831,32169,-615,-28260,-5431,-25760,-3818,15232,25826,23763,-1863,-15598,2292,-7741,-14570,-29106,-1119,16565,-5401,-538,-3421,10455,2992,-23069,-4153,-19714,-25153,22040,-22385,-26642,11923,-31756,773,23936,16793,2603,31746,17657,-32416,29880,-20255,-15666,6032,10363,20045,5697,25134,11190,-7114,-25245,1242,30846,-4549,-26366,27943,-4336,-8075,-15198,28854,14198,14211,-24377,-13495,-15257,28833,24672,541,-12144,10075,27006,26528,-1624,-27572,12570,21103,-18111,-30112,-19911,-24680,16490,32710,20648,-10193,-17132,13823,-18100,-24110,-18507,30993,-6177,21278,-14920,-18299,-8882,28368,28555,-1420,1871,-25600,-1117,11919,31943,-15959,2561,23112,19999,29676,-19452,28249,1912,-1433,13567,-11530,-30477,25114,5891,-23583,-6249,20837,5647,-24013,4608,32311,-6368,30246,20023,8920,16147,18333,-14708,-11065,21687,2619,26876,20256,-22425,4431,17878,15003,32190,-19243,7271,19669,-31044,23033,-19847,-15556,14536,-29295,29273,27818,-4383,27144,12781,10069,22643,10997,15301,-31611,26195,-9241,-5445,16172,-11042,13703,-1368,26424,-22338,22782,12014,19455,27303,30665,29013,12342,-13109,475,14219,-30413,14015,-17769,8355,-30961,-18486,-1821,-9378,11178,-8411,-25291,-30710,-4001,27164,-17348,22192,207,-29184,13084,15374,20937,-9668,-26576,-4827,12988,10092,-30335,14221,29729,11385,-14157,-21584,-6999,-20452,22430,-25344,13138,13283,-18196,-15453,-30972,-2707,-8200,1163,-9718,-12258,-14626,32517,30954,27878,-32337,-9788,14071,-29573,-32628,-12164,11031,14633,18324,9132,2620,9300,-22525,26914,23356,27824,30727,26058,-24522,-12222,-22019,-14520,16066,-2676,-32739,-30258,-26221,-4125,5521,-13417,-31243,1975,24955,-31093,24004,-19719,-20942,11878,29592,5285,19316,15567,-19194,-18223,20580,-6369,-23003,26242,-30828,19558,4390,-29753,12619,9239,15004,-25106,1816,2996,-15541,-18096,-23844,-7610,-14479,19498,-17450,-18116,-12499,-32323,-6607,-23693,12681,-6178,-27292,3342,-30469,5164,-15196,12072,-16649,30833,-7870,-24241,-32658,-5890,26041,28103,15720,8526,-23819,5794,29182,-15744,-31439,-8359,-8583,-13541,-20850,20146,-27423,24578,1894,-16768,-18091,-24745,-9503,-13149,5171,-18927,-23676,-25375,7357,2343,-20272,31339,-29401,2207,-10773,-15944,-27027,-18011,-22920,-19967,-2390,13970,11992,32436,1169,32234,-31185,5576,-1832,20266,-9737,28482,16303,-24374,23530,-5558,-32439,-5318,29676,-15326,11267,2717,8268,-7417,16558,-16272,-23662,-494,-10489,31977,23374,-20817,19500,12424,17464,8801,15230,13044,-25391,18490,-241,-12642,-7340,-17737,-18170,-31807,20395,23803,-4257,8484,-23834,15932,-13667,-19463,-8802,-14652,31470,-18342,8784,-9300,-25060,31645,857,-23064,24983,-11668,-28794,-3650,23973,18558,-17767,-8267,-21052,13848,12986,-27517,-14128,-16981,-29662,-32056,-15522,7304,14721,23683,-32141,-6159,16492,14976,4427,-10151,-577,8306,-26312,26006,19141,-686,24641,13842,20921,-17106,25443,-10474,-14835,-23014,1906,-30237,8820,21606,-4911,-6048,6496,3197,-29820,-31330,-15530,16690,-27838,-12726,-30031,9666,1811,10328,30981,-14996,-2693,-25557,-25577,-6084,-23728,-17529,-30679,-7668,-30653,-28585,-3925,25912,-9558,-926,9732,-3456,-14225,26765,-4608,7785,-15933,-3993,11107,20371,-6956,-3200,7178,26479,32181,-4420,-12171,23352,28742,7085,19965,14445,-13974,-138,-28666,6440,-1194,12808,-6484,-3719,28966,-19809,-29436,-8585,20243,-13092,31262,-32345,24245,-13371,-11031,-7626,-6064,32149,-18793,-18322,-14417,13827,20375,-6434,-31088,16830,8106,8981,-21316,-24592,-6368,20901,26295,-84,-7676,19391,24064,3299,5736,-10138,23113,25022,15492,-22676,26980,31830,1262,267,-23258,-2767,-10013,-3773,-5315,-14472,-21651,-2245,24202,25606,-6443,26209,-19792,20618,-11945,23629,7554,14479,-11615,23303,20310,-13743,-13794,1401,27194,-18677,-2481,-6189,12999,22137,-28937,-10143,21690,-7213,-32372,10476,3098,3494,-15002,11159,-29861,-18956,-13735,5749,-20473,20856,-11673,29342,-27625,-16703,10001,32243,-16061,20196,11712,29208,-10085,-8438,-25193,-32506,-7624,-2644,9672,-31614,18154,-17991,-30799,-10440,-3026,16032,22211,-32394,-20073,-6120,-25796,8230,-2121,-2418,-5619,-12977,8681,9939,-14452,-30759,-23828,11975,11793,-14399,-2467,-1218,-14159,-755,-7797,22143,-30423,-21334,13089,-3220,-19875,-3163,27580,-4108,-31258,-30812,3510,22146,27015,15284,10811,18650,13329,-28774,29946,1731,20747,-28056,-23177,23432,-25544,16864,17854,-8298,3607,-23800,11817,27773,7254,-24089,11525,-16650,2310,23810,-8404,-8612,-2937,3283,15320,-2289,27161,-7525,12816,-19046,-4175,-16904,13002,-13212,21998,-20350,-8957,25045,14272,29329,-25510,-12979,13036,12564,-24421,18307,-32003,-9073,28004,-16647,-10779,10934,13379,19757,-8700,-20325,11522,-25991,57,-32710,11666,7286,16003,24553,6493,30101,-29246,-5258,6902,21320,29300,-17609,-19959,25833,-30715,-21021,179,3284,-5189,-29889,-15811,3519,-13492,-18838,-18642,-11734,-29250,-4192,-4053,1197,-11186,2770,-6784,27316,-9559,2377,27883,21684,2568,28756,20208,13188,18469,-14781,-20883,-8542,-22001,-14132,24436,18466,25367,-9427,-19669,29289,-14413,-18178,5909,8580,26218,15516,-16006,-27653,-27138,14293,6447,-1786,22828,9516,1943,29726,-13358,-17138,-7301,-25751,15650,8996,578,7608,-28106,9129,-29137,-18573,-1072,10660,28483,-546,-21465,-1703,-26418,18845,-340,14308,30166,5564,-13247,9459,25886,-1975,-32071,-4058,-14872,-20946,-20773,8867,-23472,-21804,5662,-10545,-1921,8927,-13674,-30699,-851,-29063,-2393,-28441,26254,25967,-13698,-4277,-20903,19344,4068,1764,11370,9224,-3495,18006,29354,19052,18213,-1147,3675,19004,-27487,-27106,-31884,-26985,12911,-18411,6829,30474,-3510,13906,7329,-17636,-22110,19572,32655,5898,-6051,23755,24392,-25112,-28376,-12401,26663,8795,26377,-16072,-31712,25304,-7437,-20068,-11191,-28979,12238,28158,21809,-30233,18791,32466,9688,-19644,-24629,-27321,21833,-16623,-10461,20745,-794,-22979,-14775,1589,27656,9489,32729,12365,3009,-18783,-24750,21398,-7416,-11275,-30542,-30918,2585,-28096,-2079,-15914,-12447,-9915,5546,23005,-5141,17146,10956,-26578,20294,29629,12640,8969,10036,1763,12616,-15905,-29864,-31979,19041,14741,-28579,30008,-12317,-5316,-8269,26929,-25559,-28128,29599,6589,13666,-148,28318,15039,9723,2743,17139,-19191,-27413,-25215,-27707,-31884,-17973,8751,3462,3606,-14435,-4291,-27471,9005,11053,-21520,-5156,-21181,-16389,-10675,-3785,28413,-32557,24998,11635,-7704,32728,-11455,-15482,25135,25288,15295,-4437,-29642,-32562,-863,-13269,-13511,-5464,23824,-10503,-30177,-21643,-22186,-29271,-16796,-16391,-10661,8541,1085,29402,-20556,19973,24887,-9150,-21046,-6591,-12022,-15763,3152,30215,26906,22801,14897,-22679,7968,-3514,23676,6336,28633,-7377,18906,-16149,-28517,21355,-25065,-11827,10971,-32241,-21785,28490,-31094,-12046,-334,15161,-15792,-1920,13695,-4803,11828,-31320,-785,-22603,-21600,16623,29682,15969,-32222,11809,-17567,20631,-2869,8732,24965,6596,-14619,-31781,3340,-19236,9682,29862,21511,28960,22591,10585,-26302,-6490,31887,-8189,-30400,-29078,-7452,-22265,24959,-11932,-24674,21064,-7440,30343,4827,21729,3845,31743,15438,20931,-7755,5882,15322,-22750,25334,16292,4754,26131,-7168,-13660,-23791,-15138,32759,-13509,7828,27166,-28429,-32236,-453,-26053,17836,21716,6484,10370,-28122,-30473,-10475,-2843,-8951,14041,20053,31475,10476,11504,-17818,30653,3348,-9612,-7633,10877,-6119,14858,-23483,26976,-29581,-18447,14612,29142,-30382,14067,-23477,-29905,-32029,3311,-26944,-9351,8766,28837,15419,-20727,-24702,-5979,-10172,-18463,-27071,-29466,15610,18539,28128,-4225,-13977,29320,16737,-28345,-11672,30559,-27409,11297,-23893,-249,18672,-23261,2032,-29570,15689,-15790,-16071,5392,-24655,15205,11677,-4484,-32088,-9980,-23154,-13580,23070,15824,20030,-25486,21713,-16947,14218,18728,-27553,-31405,3372,23792,-9094,-8077,-1742,15506,11546,-9966,11623,14390,-26305,32288,21757,5970,-28190,18395,29526,18371,1850,-3231,22733,-25099,-15096,-11514,23875,7508,-15215,-21121,23003,10060,6368,-14034,-22278,-12145,-16901,-27545,11919,-21726,-28753,-26965,16659,-30187,1529,18806,-27102,-17441,-10412,-19056,-28460,-16079,-29893,-29642,-17268,11359,27358,-24045,3560,29134,2621,10962,19697,-16949,32488,-19449,-10645,30000,-7204,4956,-5260,29729,7487,-8334,1643,1876,-3390,-16224,27169,30368,25448,4007,-24097,28309,31753,12052,-14232,25032,-22601,-12946,-25743,-4759,31966,18098,17604,18704,-7251,-2455,13614,-7709,23218,-15976,-31383,23434,15538,-2885,-27109,-15064,-1437,18489,-17615,-18231,32322,16408,1036,-16491,3428,-12937,24879,22405,9549,-22407,-28140,12368,16403,-8466,21451,-9390,25605,-10366,-3791,-9624,-20191,381,15054,-23723,-9069,27451,-10242,13215,-8513,-30165,-5527,9344,-16219,-17077,6549,2722,30153,22481,8762,-30978,-32332,-8602,-5729,-18581,30104,6651,2612,30277,-4112,-9023,12841,-29355,-23310,7365,1600,16335,18551,-6992,-1022,-27045,17138,-26418,21325,-15950,14640,22406,26120,-16387,-28601,8057,4488,-30923,-20576,25703,-26626,13854,-11132,28601,-12366,2068,29915,7269,-32257,13478,26417,25226,16224,8608,-1347,-24065,-20390,23207,-12055,9666,-29585,-19015,28716,-23585,29507,-6636,6306,13598,32362,-7771,-5816,17775,-18350,-31664,25710,21625,2360,22879,-29853,-18037,-11319,24492,4559,-20184,-1538,2367,19350,14741,-4710,1021,24817,20051,-26223,13175,-27392,25054,19947,14445,-4227,-1010,-25118,-4443,24251,-16709,-16624,-1928,4315,-7375,-6036,-3075,-4391,2986,-10298,19701,25127,-27568,26027,10302,-3962,-16455,10803,-15152,7011,9279,-7128,17331,28406,-27933,-9585,17994,20356,-32631,-1726,-16243,30694,-12289,-7059,-23197,-5241,807,6559,-3834,-32568,-17129,-13392,10807,-26729,18633,-11068,11422,-13664,-14597,18168,4325,-8167,-1473,5154,-21473,6671,-3143,-7441,21390,-17583,-1286,-2751,27992,-12051,21008,18455,17223,8219,4716,11288,27032,23428,18593,-23066,15009,-8094,26471,-24376,-24499,6323,-3920,23989,14095,-31179,-32672,31724,15703,-8544,-31390,21714,-15562,-11686,-11635,19985,22242,-12536,-7375,-2508,2951,174,-8736,13354,-3651,4401,3862,-29627,-19046,-4106,16854,-23717,-31405,12970,23496,18245,-408,-2717,-19870,-32274,6310,3909,-23998,-801,-19944,-12021,27155,1425,-24199,-30639,14030,25896,-22300,-12316,21183,-30429,17756,28995,-5465,-12723,32130,-25962,-2253,-800,1680,-23559,-13896,-26231,22434,11789,24217,-31745,1075,-18563,12120,2303,31799,22166,19894,-3835,-7795,-32677,7835,3661,-17701,-9319,-2972,-30387,29372,2517,6186,19119,-9942,3032,-6173,-1505,-11147,-32671,-12040,-21563,-7305,-23760,-30592,20947,15985,-5160,-15127,-738,5520,-3036,-22417,20266,-9928,-24723,-20469,-22960,-10269,6212,6299,31443,-20212,11062,3885,31517,2343,20767,-14900,-22989,23528,11020,7563,700,2609,-1532,-5584,-13896,-22768,31135,3213,24358,-28182,-21887,17410,17819,5097,30089,18053,-19889,28385,10794,-31262,8227,-3651,4090,10549,-23570,15033,11598,-11820,18955,-8293,4482,-19281,23933,-7347,-31207,24302,-18187,-27796,-28103,3113,23099,3154,-15913,-7856,-13623,-18759,20235,27850,30881]},"conv2_t.bias":{"kind":"q16","dims":[4],"v":[45580,-64828,-47331,52907]},"CAB.residual_trunk.0.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":455,"shift":29,"w":[7626,2246,6782,-31654,-20842,14558,-5098,-25087,-15093,15092,-16674,3444,-8392,-25939,23124,9322,-16080,-21975,9067,-19160,-1345,18735,32092,4670,-30112,-17644,-29419,15122,17871,-14085,-30554,917,-18334,4056,-11720,-32261,-20084,-30633,23931,7956,-27286,-19309,-10296,3722,4173,12044,5892,29425,22347,24403,-3232,15400,-32010,-7059,-8898,16696,-2405,-29523,-244,-27247,-4727,12555,-23337,57,20612,-6828,16760,-24575,2583,30757,4399,3597]},"CAB.residual_trunk.0.conv1.bias":{"kind":"q16","dims":[2],"v":[-15869,63846]},"CAB.residual_trunk.0.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":3640,"shift":30,"w":[6225,28084,-29368,19425,28318,-18182,-3005,30222,16202,-24163,10748,32463,15097,-12065,-30687,31576,-7209,8296,-29051,-32713,-19185,9793,-13106,18237,-13859,-19533,-31445,-16494,3984,-11426,10875,8291,12339,15424,-28208,19518,-29147,-16547,28252,-13025,31,-30982,8272,-5734,25667,19095,-18566,11171,-12951,-10632,10619,-22292,-17526,30910,24146,30527,-29191,1669,1364,-30153,16296,2124,-28360,12259,-6351,-23487,-23040,9595,-4122,7076,3783,-5872]},"CAB.residual_trunk.0.conv2.bias":{"kind":"q16","dims":[4],"v":[65344,19398,48608,-24870]},"CAB.residual_trunk.1.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":227,"shift":28,"w":[-24487,1305,16009,20568,-25216,5177,-23926,12891,-2779,-8237,1482,-3969,30320,-10004,-24879,-3041,-7732,13907,-20123,23270,-21152,2447,32684,14454,691,14372,-370,-16038,-25864,-29396,-10297,24711,-28874,-7490,-32439,2250,2444,-1119,7445,13385,-14812,4399,1533,-177,-6098,14359,18261,24141,-18619,3658,-2224,-23411,-9352,30269,-13278,19171,-5217,-23143,18742,19333,25976,30718,20860,-30245,2673,8960,31422,8647,-9147,-14153,29205,14883]},"CAB.residual_trunk.1.conv1.bias":{"kind":"q16","dims":[2],"v":[22748,-49614]},"CAB.residual_trunk.1.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":1820,"shift":29,"w":[-19207,17851,-31362,-31634,773,-9282,-15856,3490,30601,30476,27764,6411,-15746,2501,-31029,16070,-18433,3179,6944,20686,-15821,-18027,-26237,-25693,25796,-29003,-28478,16023,3797,-9652,20974,-4532,3370,-31407,31375,-10589,-24587,30570,-7208,-132,5881,13625,-28166,3553,27966,-1128,-27855,19936,5248,-25979,-9393,21194,24728,-12025,-2911,7281,20002,-1757,-30265,-14278,24345,-21872,15665,11668,11768,16026,6765,23010,-7023,3954,-505,7447]},"CAB.residual_trunk.1.conv2.bias":{"kind":"q16","dims":[4],"v":[-39584,-65281,-39935,-5839]},"CAB.subscale.weight":{"kind":"conv","dims":[4,4,3,3],"mult":1820,"shift":30,"w":[-5848,9080,-32760,22629,-23919,32710,-12645,8690,31451,-20703,-6386,9566,-1627,7228,-20060,13878,1682,-7730,-29902,16716,-28591,32150,12206,-10897,-26693,-21010,25055,-28904,30769,24051,14870,27845,-12042,31236,5833,-32295,-2859,28714,28647,13015,24451,-29152,-4487,-20085,11524,26023,17439,3678,-19770,29664,-27387,20769,9208,25186,21402,8869,-29807,-9997,-32699,28926,27845,21667,-129,10801,8380,-26352,-16635,-9563,-7059,-20244,12758,19720,16589,-3353,11084,9684,15280,-14973,-16307,4201,17997,13688,-16304,-26807,7743,1929,-20891,-21978,5036,22481,5885,-153,-25358,-21425,14445,-17379,-21233,-837,3186,-23705,6355,-9037,-12175,13671,5826,27798,-14083,28490,-2977,23158,32451,13971,29562,22846,-16718,9636,-30502,27888,-4116,-22649,-11518,-14864,10265,-13129,20896,19651,6358,23217,-14887,-13292,6279,-15193,22657,-7978,2986,29694,24126,-8244,-1952,28567,-21497,22646,31749,-1051]},"CAB.subscale.bias":{"kind":"q16","dims":[4],"v":[-16676,-20206,-34238,34159]},"CAB.residual_mask2.0.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":226,"shift":27,"w":[-26871,7037,-26730,2664,18928,-4633,6071,4163,10859,2537,-13385,-23502,-4633,-18238,-11866,-4513,-1883,-1728,25556,-283,7453,-18383,16500,29116,-19909,-12388,26819,1176,-2413,-14039,-26455,-22470,-13081,29930,20327,-25336,-5487,7047,-23002,3778,-11846,-14126,-22777,-14486,28277,-8642,9619,-19251,11370,-31610,8187,25953,-12127,10300,23088,21259,28650,21068,-6576,14815,20705,-31268,-10579,-13858,-24669,24152,-16746,-28221,-22911,11069,-13822,2656]},"CAB.residual_mask2.0.conv1.bias":{"kind":"q16","dims":[2],"v":[-22950,-62640]},"CAB.residual_mask2.0.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":3641,"shift":31,"w":[-2605,27035,-10593,12827,-13928,21335,-17782,-9722,22967,15304,-494,15192,-10798,19005,8403,-27521,-25400,-9061,22709,-8562,17296,-23557,-20224,20039,-2234,-13536,-9514,-24911,-25194,551,-6077,-23399,14098,29980,12998,28069,12798,7318,2674,-9591,-3633,-10847,-3448,-24841,5905,-4748,-32289,7252,-20840,27320,23626,13213,21831,14654,5700,-15450,6588,27616,-32329,3562,22535,5,10765,32282,9715,-22613,7767,7207,24156,1834,-7329,-8274]},"CAB.residual_mask2.0.conv2.bias":{"kind":"q16","dims":[4],"v":[57343,32588,-29055,61904]},"CAB.residual_mask3.0.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":910,"shift":30,"w":[26023,32294,-11123,20710,25251,-10396,-16673,-13620,10745,18880,20342,-13989,22504,15719,6134,10223,-25410,9953,14317,-2989,-8567,-763,-14014,-11937,-12513,13652,-29140,-19134,-27491,972,2694,26367,10459,-16437,-13113,18040,12066,14446,-7857,32697,31244,-15389,28021,8551,7649,17757,-4821,-8598,-32153,26205,-8978,7775,-22049,-9425,19075,7487,-4781,24568,28009,20598,-16993,12513,12065,16096,2068,-8792,-21893,20105,17706,-31255,470,16433]},"CAB.residual_mask3.0.conv1.bias":{"kind":"q16","dims":[2],"v":[-30233,-64683]},"CAB.residual_mask3.0.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":910,"shift":29,"w":[-29315,13359,-151,-3071,-27838,-2704,30881,-8049,-22470,29147,31907,7045,17951,-30812,5659,22146,16812,555,8235,-6643,32540,17506,-26678,8424,26371,-1797,24019,20282,10579,18875,3770,2764,-28730,14871,-14111,-20993,-15367,17526,25429,-24852,-29226,19323,11661,-374,-12024,-2578,-21997,-14271,-3881,-702,28691,5516,32193,-20483,-25121,23187,-16572,15400,26333,28039,9395,10456,-25378,16073,-11790,-22658,-30273,8177,-28153,-24716,1390,2252]},"CAB.residual_mask3.0.conv2.bias":{"kind":"q16","dims":[4],"v":[-5185,22157,-11773,31992]},"CAB.upscale.weight":{"kind":"conv","dims":[4,4,3,3],"mult":454,"shift":28,"w":[-24487,23004,-28416,28180,-21451,-15214,-3052,-12467,19330,-7572,-6329,19340,3745,-6739,9833,28453,16701,31111,32340,-22467,25279,2757,30098,-28900,23937,9618,23243,18690,7088,19578,2002,-1961,23992,621,6202,4608,-4830,-11142,28270,-23196,20986,-16189,-8825,-5442,13909,-30734,-24020,32,-10084,1572,-24734,21137,22512,-3264,30550,-2988,-7937,-14915,17750,21746,-51,29157,10087,-15533,7838,-182,-29740,-978,-1274,27810,17214,-16853,27442,16421,25871,4298,29409,-32355,-31115,-8649,-13011,12263,-24589,17086,27500,-27295,2451,-2714,-2263,18507,-14686,-4198,31923,-31234,-1297,-25070,25715,15208,-15044,-2321,3588,9852,15674,30146,29326,29763,-16791,12308,-8141,907,-1858,18276,9020,12300,19681,14681,-23932,-30952,4067,2806,-19579,-10748,-15776,-1421,-27065,2372,-23595,-30034,-2078,-25883,30242,-9068,31076,24965,32521,-4896,-30418,-32052,-17395,-860,-19893,-23254,-26794,13447]},"CAB.upscale.bias":{"kind":"q16","dims":[4],"v":[-52319,9920,-11243,-8577]},"iact2.conv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":14564,"shift":31,"w":[2218,1360,-18713,-18251,30587,29521,-2001,-28876,6245,-18876,19898,-21106,-13139,-29575,-12258,-20766,1618,-3581,24246,19790,18027,-28725,-23963,20033,7317,-24596,2185,-11398,-15555,134,12086,13524,11981,-24067,24200,18513]},"iact2.conv2.weight":{"kind":"conv","dims":[4,4,1,1],"mult":8192,"shift":30,"w":[-5946,-27186,16080,7903,11100,-26256,-6188,-19647,-8377,-27545,18815,-246,-6873,19912,-3102,13632]},"conv3_t.weight":{"kind":"conv","dims":[16,4,1,1],"mult":1024,"shift":26,"w":[-10561,-29252,-5186,30795,15918,-12596,7166,9276,-11804,-4000,-25926,-1873,-10219,-28940,3990,11184,20761,-23538,17977,9629,9501,29300,23795,29559,1527,-10624,11044,-26049,25437,-22386,31690,-3363,-23165,28223,2409,16303,29463,-14283,-30044,-22352,-28650,19627,10944,-20972,-8579,15401,-23427,22874,-17459,8146,14201,-10503,-17521,-21945,-26996,13109,-29246,1494,1638,-9511,27695,-31997,-17664,-31603]},"conv3_t.bias":{"kind":"q16","dims":[16],"v":[-29730,35772,-14442,34693,-21884,-16591,15327,53136,26967,-63014,-5660,-45752,50895,-41535,25402,47428]},"TAM.TABs.0.prep_data.norm1.weight":{"kind":"q16","dims":[4],"v":[16747,106586,301,29333]},"TAM.TABs.0.prep_data.norm1.bias":{"kind":"q16","dims":[4],"v":[19632,27525,-31795,-1421]},"TAM.TABs.0.prep_data.conv1.weight":{"kind":"conv","dims":[12,4,1,1],"mult":2048,"shift":28,"w":[-20415,-9140,-5702,32065,-19024,-3141,-28003,-9127,23948,-21362,-7090,19711,21743,-6293,23296,15631,9679,-20267,-8859,24647,30362,30363,-23725,25793,20144,6984,18853,23587,19825,14977,7218,-21390,-18778,-12471,-19991,-7996,-32026,27376,-32394,30358,14060,-18816,19079,8302,-11122,-18642,29389,-24742]},"TAM.TABs.0.prep_data.conv2.weight":{"kind":"conv","dims":[12,1,3,3],"mult":910,"shift":28,"w":[-20271,19536,-24791,-16634,-27039,26289,8567,-29218,-3904,23732,-6078,-24228,9078,-31234,11229,16959,18974,10316,30128,31575,-1674,9499,-15293,-25395,-26468,30965,-17439,-19427,-21805,31779,-17100,-27194,-15467,-22417,-29488,755,16350,11238,8924,17327,-5919,-1207,-15971,29021,4139,-15082,-18827,2440,9904,14177,11697,2805,-16725,28933,-19179,-7966,-31860,10434,-3105,3382,23564,23536,23909,-15527,20571,16934,9501,-8215,14047,-32476,-10800,-26217,627,-12401,-12873,31630,-31408,9408,-9188,-4497,-263,-3007,5870,-9069,-22449,27031,20622,349,-30972,-32205,-30091,19187,7727,-25464,5641,-15173,-13966,21766,-11972,24532,-19881,-15465,24170,10988,31608,-27611,-11775,14051]},"TAM.TABs.0.attn.temperature":{"kind":"q16","dims":[4],"v":[149546,263872,151506,177708]},"TAM.TABs.0.attn.project_out.weight":{"kind":"conv","dims":[4,4,1,1],"mult":2048,"shift":28,"w":[9612,3293,-1603,3994,-19778,20436,25663,-25017,-3436,-4202,-25326,4758,27167,8330,-22155,18382]},"TAM.TABs.0.ffn.norm1.weight":{"kind":"q16","dims":[4],"v":[10139,18546,24484,39950]},"TAM.TABs.0.ffn.norm1.bias":{"kind":"q16","dims":[4],"v":[13427,-15862,28327,-7976]},"TAM.TABs.0.ffn.project_in.weight":{"kind":"conv","dims":[4,4,1,1],"mult":4096,"shift":29,"w":[-15252,-3188,-20541,-22260,-29740,15238,3666,-9785,27954,762,18339,8824,11062,1740,24502,1301]},"TAM.TABs.0.ffn.dwconv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":7282,"shift":30,"w":[-2142,-18715,28978,-10802,17779,-25535,-10598,-31403,-9076,-15539,-11854,-2133,-5343,-1914,29222,-10922,12086,9411,4298,-2279,-12637,-1474,-14511,-17158,-19439,-12686,24635,-11064,13575,9387,-1631,28875,-8869,16051,9830,4620]},"TAM.TABs.0.ffn.project_out.weight":{"kind":"conv","dims":[4,2,1,1],"mult":8192,"shift":28,"w":[-3702,5433,30084,-8470,-16255,-26941,-13486,-27254]},"TAM.TABs.1.prep_data.norm1.weight":{"kind":"q16","dims":[4],"v":[28409,107496,40150,21266]},"TAM.TABs.1.prep_data.norm1.bias":{"kind":"q16","dims":[4],"v":[-18520,-30808,-29173,-7717]},"TAM.TABs.1.prep_data.conv1.weight":{"kind":"conv","dims":[12,4,1,1],"mult":4096,"shift":28,"w":[-12595,-27753,-16718,-28137,-5903,13098,31116,25192,8332,19251,14919,9780,12402,21402,5187,-10036,24249,-32040,7522,-12387,10305,15525,-31606,-9622,-19189,11003,27014,-32085,-2159,9976,-26980,7121,-4594,-32309,-21660,5787,-29378,-22786,31247,19008,4906,-27350,30642,23696,-19873,1378,14530,-3641]},"TAM.TABs.1.prep_data.conv2.weight":{"kind":"conv","dims":[12,1,3,3],"mult":3640,"shift":29,"w":[-20916,-29517,-19430,8667,12394,-19553,-25559,21861,19390,-3057,18846,21078,-9398,-25113,-23764,-18859,17386,31143,5783,-4488,5419,-36,-22601,6171,-5645,-31774,15062,-15064,15582,-30394,-3476,29832,27160,29753,-186,22113,10151,-25200,24880,10846,-29421,-13347,-1878,-6934,22907,27281,-13955,22849,-28289,27272,-15011,-5826,-18723,4680,-31838,15651,-27360,32183,30070,-20241,-407,-31900,16296,23117,6767,-11273,22208,-17393,26097,-20592,20260,-10625,1410,11514,-25110,-14043,-11746,-20656,-26839,26361,-2201,-366,-29700,28144,18296,-21087,20316,29961,2025,27019,9470,20843,7580,-11132,-24936,-30793,4394,23930,-3522,29659,-7507,-29815,7418,-26464,21590,25438,-32455,-22476]},"TAM.TABs.1.attn.temperature":{"kind":"q16","dims":[4],"v":[495343,195023,213842,410918]},"TAM.TABs.1.attn.project_out.weight":{"kind":"conv","dims":[4,4,1,1],"mult":2048,"shift":27,"w":[8380,22254,-19981,19792,18524,-28617,15531,28445,-21457,10410,-20327,11976,-1762,-10086,27898,29622]},"TAM.TABs.1.ffn.norm1.weight":{"kind":"q16","dims":[4],"v":[61234,119778,51863,71392]},"TAM.TABs.1.ffn.norm1.bias":{"kind":"q16","dims":[4],"v":[26970,-31597,30559,-10020]},"TAM.TABs.1.ffn.project_in.weight":{"kind":"conv","dims":[4,4,1,1],"mult":8192,"shift":29,"w":[-29141,-10089,-4126,14887,1249,13545,-1620,-24447,-12708,7175,17383,-7004,-23085,-28143,-21132,-448]},"TAM.TABs.1.ffn.dwconv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":7282,"shift":30,"w":[-31328,1547,-779,-20404,20189,-6504,16569,-31444,-11162,10497,13511,7516,6902,14498,-25771,32081,12830,-21323,24901,-6036,10728,-24396,-8220,-23174,-13440,23495,-15462,-30837,-22367,20726,-9585,19374,32293,7544,27393,8409]},"TAM.TABs.1.ffn.project_out.weight":{"kind":"conv","dims":[4,2,1,1],"mult":32769,"shift":31,"w":[7428,32552,564,-12378,26661,24988,19812,-4644]},"iact3.conv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":1820,"shift":28,"w":[-15120,19470,-196,-21315,-11036,-4691,14020,-12401,-18757,13597,12730,13628,-20633,13060,23605,25364,-25773,4222,-12949,-15667,1255,-19208,262,-3035,-16277,-31198,-5582,11898,14208,18362,-26709,20145,-13954,-30763,-29057,29705]},"iact3.conv2.weight":{"kind":"conv","dims":[4,4,1,1],"mult":4096,"shift":29,"w":[21927,-2906,17384,22139,-4483,17552,7081,11256,-3001,6016,-14870,16430,-17106,-14307,-31893,9180]},"conv4_t.weight":{"kind":"conv","dims":[4,8,3,3],"mult":112,"shift":26,"w":[27402,19543,-9921,-20339,5902,-325,-3488,21261,19692,17052,-14092,-26349,-5462,-20337,7280,-1138,15262,7536,21492,-31350,16314,-10323,-18724,-31215,-30404,18281,8692,-25286,-10860,2102,29727,31354,-3912,-27607,26390,7590,-3856,2565,-25259,-26622,9311,-15671,25858,14473,-12008,15641,4865,-21134,-19516,29446,29930,-23329,2729,26258,-200,29678,-27893,23955,-29521,-24534,-14949,4839,-24387,-20211,16715,-3452,-3478,-31634,-580,15474,-3804,11378,24856,-15080,13127,-11363,-2358,-22602,-18482,2483,4152,-14639,32169,-11585,-4735,-25625,26932,-12922,21464,-16080,26584,-30972,-12883,2585,-12937,-20940,-15246,-5811,-20622,28182,-13001,25503,-16524,26426,-8876,-14033,11872,-29064,-27554,22760,11801,-25774,-20551,1295,-24189,3717,-9836,-31692,22684,-28568,-20090,-7262,28450,-5670,11631,-15659,-10012,7644,21519,28161,15226,362,-24047,30360,13888,11147,25486,19006,6170,28254,-9592,12383,-10270,27687,-16070,21022,-22660,8912,-14956,-28563,16824,4689,11541,32306,9362,-6024,-4901,12467,-28647,-21845,-5545,-31861,15031,-28662,14654,-4165,-24958,-16659,32331,-27713,2514,-4985,-14307,-5354,26137,-22758,18861,6771,785,-12254,30016,23634,18836,-20152,25436,-22408,-2412,30352,-27694,31975,-22886,18031,19960,9755,-27412,14456,14299,10624,-16217,26161,24999,4545,26803,97,31855,23648,19627,-3754,6588,22185,-12727,31197,1376,3514,-3857,-25257,-9734,30549,28658,-9264,17529,-9623,20998,-2749,-2030,-23731,-12405,5386,3469,3898,-27802,24226,-20838,-16964,32064,-5383,29025,1062,-5151,16476,-13842,17667,9825,11936,-10257,-14397,-12545,15002,17657,-19356,3536,-10755,-32068,-18000,-24927,1873,9570,32695,12498,-11245,-797,13985,13069,-5151,24837,23316,1241,-22819,28102,-28583,-13832,18446,13639,-20573,29161,16073,-3063,23188,-20770,-5533,-6883,-11255,-18081,810,16217,23026,-18924,-18978]},"conv4_t.bias":{"kind":"q16","dims":[8],"v":[-39941,-5135,3626,-41738,-25555,-49312,23784,-15589]}} diff --git a/wai/ops-conformance/sets/jpegai/weights/synth_y.json b/wai/ops-conformance/sets/jpegai/weights/synth_y.json new file mode 100644 index 000000000..ecd030d1e --- /dev/null +++ b/wai/ops-conformance/sets/jpegai/weights/synth_y.json @@ -0,0 +1 @@ +{"first_stage.0.0.conv1.weight":{"kind":"conv","dims":[2,160,3,3],"mult":2,"shift":26,"w":[-17599,-32572,17620,-13940,-31881,-2961,-7907,7549,15800,-6252,-29717,16036,9894,29914,21868,-24548,6450,2669,48,20782,-24972,10506,26410,26795,-29817,23712,-19276,-30614,19826,20700,-3647,16475,-15397,-8782,19834,30832,-29745,-1477,-9689,1275,-23644,6575,-24777,-27425,23941,16219,-7710,-25113,1192,-28007,-13839,-15038,-11308,-20139,4646,-10663,-22695,29261,31733,5053,-12221,22685,5487,-7057,-9663,15489,-23395,-24052,14789,-21945,22484,14866,26789,24031,-4913,2338,-15562,-26285,-17923,4094,22305,7246,19394,-6966,25488,-9034,-2841,27741,-24484,17544,12047,-8623,-6073,18463,4719,27513,24405,21301,10178,-8690,-21803,-8734,-7452,-32537,-3310,-18337,472,-18945,-11412,8773,16629,-14146,-4480,-3352,8340,22920,-20966,10880,13664,8297,28893,19762,-6868,31552,-23788,-2585,8633,-11315,21704,15795,20974,3714,30271,-20094,20191,-5086,-5932,-19789,-476,1391,24287,-5766,-28243,54,21214,-21682,-8687,8372,21706,14664,-19961,15391,-24170,-11236,-26365,6623,-15037,31117,2625,-28103,-3469,-10857,-4947,-8524,30396,30688,32422,-20537,15288,8512,18581,-23294,-14076,-15567,15409,-16244,243,25036,17630,7418,23711,13078,-13320,-15129,-14386,-26487,31422,25973,29609,20556,25081,-5771,12337,-6803,-26565,-29849,18531,-3917,-2484,-2748,12450,-28322,16834,25120,-14032,30923,25908,-7811,9804,-26650,-28707,20438,3971,-20267,-30727,-27273,-1953,7443,-8194,-2586,14417,20720,-22076,-17685,-29865,-8211,16719,3373,22505,-15404,-356,18961,3095,-31252,-26731,22651,-519,-3544,30376,26991,2182,18304,-1544,-21419,-14606,19829,1348,28231,-13882,-26520,-23390,24571,25073,-29138,3729,31297,-15464,18294,-15671,27350,7750,30027,-24579,-25984,-2710,15692,5412,310,-23560,-16089,-11302,-27519,9984,15820,13792,-18094,-16128,-18639,-11515,-5043,28865,8633,-5165,3158,32605,-24981,-24450,-3614,15599,12544,-9752,27884,-18722,-18293,-20802,3542,7489,-32543,16972,9744,-891,-11390,-11970,27773,-5940,2023,484,18775,3736,11063,24366,-27122,-20558,-22819,19709,-22224,-17170,-29749,-30086,-12903,-32735,-13309,-27167,-22091,-28217,25557,5075,30664,5417,-26681,-4161,-4124,2154,-11206,11388,-14704,25177,24105,3662,-24791,9820,11722,24704,21564,-29965,8006,8089,14065,-5399,4524,2684,-10013,30221,31439,13271,-21531,3930,-13222,-5449,15512,8171,32750,-29904,30322,-14228,-27861,13768,3644,9655,-25497,-31276,24759,-11095,-20082,16867,17361,-3994,-2176,32558,27121,-30741,-14985,117,367,12944,-29683,-17539,19397,-5848,6563,18780,-11735,20542,5546,19038,-25914,25399,8833,26352,-32321,-2340,-19348,20642,25196,-20649,-2094,-27352,-6441,-4141,10784,11189,10369,3856,-9843,-29733,29175,10095,24152,-32763,27865,-16415,-29021,9823,19507,-9688,-29974,19432,24861,7276,-5301,28133,-202,-14455,-196,-5492,-1590,-18892,-31300,-6976,-21607,-14260,-4943,-18372,8534,362,-6636,-11015,7547,28186,9615,9386,5581,23716,-9793,8944,10111,17527,-19466,-31713,14920,12464,-20933,-26722,16462,-12760,-1106,-7636,25064,-2547,-27783,-29644,28844,8194,-17228,-132,4014,-6369,-14641,27537,14753,-21560,2483,12292,16818,-3304,-19538,-31853,-25373,29301,18660,-24563,30164,10145,-12166,-7914,-23300,4344,-16896,14155,30892,-13956,-8229,-10396,32561,-17119,-2686,24646,28335,3075,-9509,17300,-11800,-7174,-4530,-512,31236,-20345,688,-3951,17059,189,7537,-10319,30601,-5506,-3969,9416,16088,29341,12237,-27568,16858,-3557,-19078,26971,1495,17206,-21668,-6160,19173,10401,3570,-17102,-29560,15129,25447,-2827,-7559,2329,-12476,-15544,31598,9005,10088,-10554,-28368,5891,11751,19755,6460,21701,-18765,-30866,10214,-17916,-14915,-7783,8592,-13576,8842,-24905,-32266,4115,30356,9703,30188,18380,-25242,16708,14169,-11539,-23542,-26793,29997,18903,-7389,-3151,-5219,-18733,-25292,13152,-3061,-11157,-14371,12814,529,-31226,-24028,6383,20698,19011,27396,644,-3865,10308,-13915,9005,-26273,21152,-19112,1404,6629,884,7762,-158,-4487,31293,-7300,-7727,17149,-2228,-1958,-30690,-24734,-25945,-27281,-32453,-4764,-22244,28150,9911,12094,-330,-29562,10237,-2451,10830,-19193,-28864,25791,4478,31849,-22078,14917,-19972,6856,-25036,14065,-17186,-27372,2688,893,9713,-26589,19259,8608,31847,2577,13764,-30820,4251,17519,24464,16164,30167,26969,-27745,29991,-3520,-7038,17084,-15963,-19610,24132,-28731,-3929,19770,-24877,-17668,-22178,-24265,-14890,-31325,27641,-3697,14119,6748,28925,18381,2548,30428,13103,16539,-17505,-1121,-9430,24280,19583,-16669,13211,32394,24880,-22639,1332,-26509,-24152,20278,21074,8488,6503,-25411,3872,10837,-19467,-22118,-31370,-30436,10781,-29241,2134,28987,21547,20007,26810,-16541,-2408,30374,-13533,-14243,-14634,-3673,-13193,-19593,13020,-15297,-30829,-27064,5876,-18026,2901,22495,21487,-31693,-26782,-16436,7856,9030,-28392,24382,-14382,17802,-1105,-15033,4288,-32341,13759,-2234,21486,21119,-27440,15599,-17705,28904,13407,31585,28566,-25221,-27947,8162,10386,-12791,5049,-27213,-6195,-24640,26564,20602,-8726,-20262,-28694,-4790,27805,8341,-12159,20400,7743,-18392,8955,-13621,9395,27437,32074,-11752,28297,-9696,20897,-4026,8182,-14893,-9232,-12020,18170,-11571,-5193,-3869,-28325,-5325,-4896,-32213,19725,24271,26360,-18479,-23287,-26607,4054,-26715,-11480,29570,11548,654,27443,8640,27637,19692,17555,-2463,-10291,-14902,-30602,-12469,-31802,-23735,-17635,-4634,3790,-15067,-10893,18512,-6650,-26726,-18569,19436,-18306,-30175,18323,-26318,23926,30015,-7633,-27023,-30091,-1613,-30159,954,18741,3181,7321,32505,6257,-9435,-4554,-18385,16121,-31679,-30100,29957,11811,-16705,15695,-30139,-10540,-2168,-17175,-21407,920,25777,-13396,15648,-15234,-28299,-17186,7266,16455,16111,-32332,-5918,17940,3974,-11825,20026,-26995,26428,18662,30664,4678,-15703,13109,8178,-21978,-17487,31949,-27934,26232,-27386,289,-30151,-27376,2986,27829,-25051,22229,29998,28794,-7783,-27765,9667,21826,17607,7579,2254,31895,-20395,-11334,6968,23595,10017,-31567,-18816,18753,10736,2289,21928,-31229,32133,-7607,9985,7216,-7100,-5922,8469,-19342,31418,5240,-22005,-5345,-26796,6113,13593,9587,24731,-28092,-21734,10186,26230,1634,-14710,-23451,14793,-2327,-30375,-20865,-16776,-7256,14503,-28922,-15123,21409,14203,27235,-20187,20664,28140,-8604,-30507,20549,12912,-16038,-6982,-7993,32523,-18895,-24222,-18869,17425,319,-6986,-1559,-29867,-19206,-17960,-12330,-702,-21229,-11955,-17117,-24188,-11516,-6325,27740,-30483,2839,-5223,-11329,5318,6298,-31915,-4750,-23278,-1432,8674,18474,-5699,-889,30121,21757,24645,6764,-29002,6046,5822,-9967,21035,-9825,-6207,-7309,-822,-14274,-26179,-6034,-16086,20910,-20751,22235,12877,-18486,-30700,-32362,18552,29925,27537,-26287,32368,20322,14406,-18684,5951,23233,-8147,24244,-7985,-22616,-32737,-25805,18251,-25285,-10031,1493,-11672,-11806,-20174,10737,28463,-17448,15396,14452,10518,5579,4462,-26223,3973,-4432,13038,29589,6002,-24265,-26515,2686,-26640,7797,30762,-26474,-5544,11325,10086,30920,24992,-13198,12559,-31517,18940,-18249,-22139,9910,-32148,-21907,-10455,2379,3854,9169,1812,-10226,-13550,4241,-7941,-5977,15856,15330,10851,25523,-24691,7063,24075,2028,-5864,-4751,-27980,-7034,9283,15854,22981,13420,-6267,-17304,-22729,31120,17751,13227,-465,-5355,7460,-8013,705,32444,-26741,-1782,-15963,-10667,-27867,-2757,-30278,-17994,-2992,22280,-19136,2416,29378,11571,1713,-22833,25488,-4665,27736,27102,11244,-5683,17682,-27926,6088,9496,-6757,-15042,-2840,28128,25587,16974,-20440,12342,27901,-29970,-32525,-27629,31978,11063,-28242,15191,-24937,-32476,23889,7072,7511,10814,-20796,-12302,-16323,12931,3542,2433,-18802,17642,-20055,16507,-22484,-25785,15503,32272,-18995,31580,-5443,-27865,24818,11138,12536,30241,-32616,-2011,12015,-13040,8,22743,-29103,16563,-28159,-32701,10817,14543,-29330,6025,-21706,-16732,-6132,7992,3734,-25151,-29432,24351,2705,-31513,30526,1814,22824,-7824,3827,-32080,1469,5111,20183,-10031,16102,-5738,8147,16526,1395,29352,9292,-22899,-12637,-19088,24406,14446,-24683,19247,30598,25221,-31838,-11612,11592,-15093,-29524,14374,-22915,18409,5692,-31610,19686,-6169,16290,27617,19561,-16578,-10306,9006,30336,-14433,-3898,9983,2294,-27339,-13165,-6999,24187,17395,-13698,3402,-2488,-4094,17970,-29999,-7495,-15529,23576,-13997,23931,3055,-13742,27281,-20679,-32639,12311,31801,-26865,-32246,-17019,27538,21353,8294,4199,-30794,-19212,1780,-7467,32535,-13319,26582,29726,25970,14329,-11850,2120,-9416,19618,-13290,28794,29464,12803,490,683,-29434,31791,8582,-8191,-23609,-2029,5923,-2224,31448,-27975,27246,6784,9938,-21971,25893,20649,12355,8676,-4620,-21762,-25157,-15580,6024,6330,-26946,-21670,30541,-5147,29916,13142,-16518,8021,-7366,-8514,-21680,1247,24682,-8566,14521,-3543,-17896,-24675,1196,-25173,-26430,8822,20566,-7864,-6639,-27234,478,-18505,-583,6339,-26773,2003,19820,-28179,-23931,-27394,25875,11951,-24221,-10694,-21100,-26907,29966,-8829,23866,-15665,7743,16797,9803,-13504,21774,-6118,30476,-32456,-2257,23826,-19075,-32260,19421,-3759,-20283,-11384,-28572,-5774,-11685,27473,-25404,-9587,-25541,-15213,-6736,-22424,9969,29312,-17718,-22699,19322,21650,4134,11686,-18809,26867,25256,-8676,-24448,-384,31657,18091,12230,-9906,-983,-21130,-31860,-2091,16849,28556,3480,5710,-18156,18622,29047,20925,-418,-25461,15900,8467,29677,19107,29516,-3537,22044,27866,22918,-12355,-16690,5230,-4823,17823,30881,19884,19093,-20642,23603,25962,-2445,-6843,-25022,-18834,-19314,3166,-23592,21399,14958,-19887,28011,-11394,-7694,-10271,3300,-8945,-24645,-17054,6288,-10524,-24867,-29750,29868,31235,12449,13916,-16107,-24785,-18659,-22943,13506,-28203,-15396,-7707,10838,-2977,-18145,23255,17846,-27263,25305,31397,10931,1838,23892,30339,-12052,-3082,9566,-21884,-22921,-17878,-593,28324,30016,-9934,4875,13723,-7402,-31905,-13851,-27005,-16947,-31611,-2897,-11087,19958,-11369,-28200,17641,879,-20171,23987,27244,-9443,-16794,11668,23078,30248,-17361,4866,19643,-17968,25209,-9156,25930,-1299,6977,13739,-15389,-19972,-19649,-19778,-17378,-3975,-10327,11453,2183,20053,15771,-12635,-23684,32293,-8312,-17553,-21219,-11585,28456,-11293,5998,10634,-30390,6284,-9093,-14918,30322,-3958,13867,973,20096,-10206,31817,25362,7336,4864,-3468,-6553,-17107,-21560,-25496,21152,-3923,8066,11326,12479,26331,-12704,-19904,30248,-4804,31882,-7397,-32482,17369,3673,24722,27015,6976,-1483,-24526,-6778,-13542,-9805,-20055,18129,-19531,-18552,12846,15618,-27614,-23729,30327,-28916,-19197,7618,-9472,-19227,-295,-23139,3764,2487,22813,-29901,23970,19327,-29910,-1489,3142,-22219,-24648,-13156,32430,-24899,-11939,-17224,19882,-8021,-21172,9201,32183,-19196,-27059,-17789,5102,-6362,-24776,-10683,-30102,-12989,1414,23510,19699,19500,-3008,23182,28204,19458,23822,26444,7607,5787,-30033,6867,-31215,-14735,20044,-17506,19637,4454,-28669,20314,-29750,-1981,20121,-16246,32533,-32688,5011,-31366,16632,18530,-17573,-16255,18004,2696,11764,2470,13017,2864,-11004,-26695,-26056,-29883,-2866,26252,-5633,-17860,-15305,-10800,-18786,-29374,11976,-9263,-4231,10012,-29448,-26659,-10092,8476,-25965,-15737,-26872,-24495,996,5591,-10761,25101,-23786,-29584,-15881,15551,32394,-28610,26115,8880,-25449,9175,-27835,967,6750,-20860,-10869,-5295,17257,5443,1172,28228,4400,-19768,-5978,-443,6024,11013,5311,31161,1561,19898,8971,23032,-17981,-30191,-5756,-31469,19841,28376,32266,21341,11100,-31182,-20680,13988,-26247,5731,-16020,20991,22769,22432,14062,-31604,23441,-10645,-8286,-17111,1427,22833,-1118,31365,-23401,2228,1218,7304,24659,-2220,6595,8953,14962,9335,-897,-29060,-12191,11019,14522,31191,-25200,27369,-24358,5698,-6743,13219,27227,-17236,-8009,-2643,9777,-29059,17537,10236,30819,-16364,-27238,11813,5012,-9726,27969,-32267,15207,-30206,4097,-13112,24736,2261,-5461,-13124,-22476,-12324,-20293,9827,-10071,-17814,29266,11316,15895,-10507,1174,-23038,-22468,-25551,-27058,-16748,-25449,31735,-20139,-10897,25512,31453,29038,-22335,-26987,25351,17351,22946,-20445,-26336,-9564,20477,20861,-18809,-10660,122,15742,16857,6444,-25609,-6696,-23272,12032,1894,-22455,-2016,7340,11977,-28399,8865,-12948,-16421,-17031,3179,21091,-21766,-16318,14226,-13065,9417,6711,-8184,-18580,32030,18687,13112,867,-3376,-1629,19355,18582,-5562,22106,-26485,20195,-26137,23909,-2230,-10032,27692,5731,-21451,-1953,26733,359,2742,-22990,-31895,22783,-21416,-26083,-20681,-32381,-20115,-20103,-9723,22956,-9153,193,15463,28874,-3283,-32485,107,-4979,-6044,10576,27082,859,-31673,-20711,8298,5116,337,-32606,-38,-3936,-17179,9946,15853,21899,-2846,3091,-22172,-30931,-17220,-25717,3893,18476,15458,11960,11485,21044,-27629,5682,29536,4283,-30329,15876,15315,-20643,-17280,27167,-10435,-20343,28586,-16629,-25136,-17357,-10786,-15819,-3757,18378,-18475,-9617,-7591,24541,-17313,-4328,13506,-12638,-2726,-21750,5050,-23217,-846,16121,15423,6947,-28101,-5986,4759,20856,-22967,-8686,9054,-878,21609,-30036,24593,-182,30826,-20398,-2691,-8831,11356,16258,17741,-31654,-25020,31575,21009,-20425,-4032,20412,-9442,-30915,-3845,-24382,30507,6714,11389,-16287,-7199,-30668,-31889,21586,-31918,-7545,-17269,-31164,14454,-11121,-23965,-22946,-4492,31106,-18984,23249,22425,-5267,4556,-17117,29834,-16951,14813,26456,27866,32216,14493,18780,25727,8255,500,-27793,14701,18241,-3222,-14361,26503,15831,-32193,-25054,1701,29744,-15557,-14806,30249,13314,5606,-14439,-16937,29938,1644,-8911,24829,30782,616,6151,11237,32142,24868,-3522,23453,-30991,16178,-24263,-23248,21654,-28097,14948,1147,27135,-1030,2588,16429,-19264,20618,15618,19951,29884,-30559,-25316,-28215,10484,18455,17040,26394,4841,-8315,-30021,15955,20119,-14764,23533,13444,29276,-27843,-26946,2663,-16418,15492,-14807,27270,-24807,-20518,-25189,-1971,20570,9475,-716,-6218,-28962,7574,-5364,28295,27404,-29037,-18954,2023,-22673,30664,6740,7697,-26109,-18850,-2826,10701,-18770,3208,-931,-21620,6732,2440,-6208,-22239,12539,21554,-19628,-31737,22557,6965,-12885,23023,5233,-21480,-1176,-5341,-9032,20683,-11482,30275,-9468,9837,-30618,-15359,-23914,19790,-16892,20523,-20845,30768,17827,25561,3664,26819,12333,16736,4897,5283,-1204,-17681,-19778,18667,26749,-31940,-29703,16652,-10993,-3742,24763,-21213,-16078,13754,-21057,-7358,30723,-30823,454,28601,-29523,29358,9928,11547,-18607,27996,-4194,-31504,-2135,6901,-15520,18650,16997,-12318,-17375,-15478,21822,-9643,32514,3202,3454,26346,6318,-21252,4288,12126,-29934,6445,32644,-18363,7764,5727,-10611,28627,25905,10063,27825,-1609,-20121,-9763,-28852,-30537,19270,8064,-13171,20793,29929,30117,7063,7236,-11854,-7776,-27135,30632,19771,13143,28644,1268,-32064,4876,-27887,23511,13754,20267,22048,-2953,10189,22362,12246,18099,-23996,20634,-31838,13029,17018,-8243,12530,-1140,21066,14241,6337,-13718,16219,23924,-27704,21601,24277,-13252,-11346,7279,-31678,-16748,-17132,-14546,-31075,-20306,-4168,-732,-26980,-25299,24189,-27413,16589,-13079,-359,19823,-24323,-29676,-4949,-4682,-16935,-3475,-15510,28377,-6279,13176,-9216,-9622,-9576,-16489,-13326,2736,14499,-7339,29872,-23973,-18565,-21605,32680,9630,-13568,7529,-441,21172,28042,-16645,-7871,19347,-15057,29887,32309,-31309,32425,31685,293,5977,-12812,-24720,-7011,22442,18827,-31234,-16878,24311,-23700,13014,-427,20301,-12280,-21031,-14136,15622,-26531,-8122,3774,15209,-28370,-31132,-5410,-18918,-24794,-28049,18480,20110,-23964,-26049,-21460,11568,27388,15695,-869,17966,1992,13682,-6552,31871,30312,25833,-29282,30186,7165,9439,-10313,-15758,31244,-10553,2053,28146,-2291,5097,2639,5546,85,-24641,-6165,-19917,1873,-31697,-19800,-29427,-21126,6815,-30902,21859,-15863,-10700,-17491,-5678,17876,-16829,4100,-23938,-1012,-31005,25014,32389,13700,-3226,-27999,18480,-3692,-24813,-28562,-3350,-29920,-16229,25905,-29730,-13066,10602,20213,-11414,1512,-12310,-32149,-12738,-11355,-9617,30570,-16871,-28200,-31996,14381,11152,18677,26517,-13147,-29560,11618,-3162,-20014,-19777,-15519,28618,2955,9432,-15950,32242,5257,11872,-16831,-11911,25073,10982,9105,13486,7518,-32276,-10651,-8488,-30657,12022,-18043,21054,-29626,-31186,12485,12792,23691,-8712,-18089,23810,-3107,19465,-8932,-29511,-24214,-28048,-26831,-3731,26289,2625,15757,29328,-24463,-32027,16882,-27948,29743,-7639,-22199,-9371,-23486,-5581,18273,9612,-2629,26711,29512,-18709,5226,5465,-3753,27360,30421,14955,-31825,8947,-8066,-21612,14265,-16167,-2542,-9868,-18208,11888,-15789,-8852,-2022,-28193,27778,15930,-29441,24197,24138,25766,-22127,22483,-15082,15389,17735,5549,24939,6782,-26958,15648,32051,-30909,17091,22494,9090,17590,32370,-11603,16876,21716,-501,17879,-19700,13720,7063,-19645,2795,30770,-334,-31665,-19091,-921,1967,-16261,12486,-21223,18271,25192,-6240,-24203,12646,19793,-17325,12403,27340,-30989,-21568,11677,22197,-20101,4964,-769,11317,16227,20559,-29082,-29693,19691,-14620,5019,14479,-1993,-24132,24382,23880,2883,10983,4854,-32763,20171,-3811,14575,-3687,-15982,9901,23484,17041,23274,-1177,-1492,-29254,8269,24353,15932,-8088,15243,30872,-17240,650,17555,5919,-968,8368,3652,18913,9260,24255,32313,15548,8413,22739,12284,20811,20244,9424,-27894,-7564,15162,20408,-24066,-1826,4267,13329,-18903,-17054,5752,-6802,-6153,-8416,-8799,22769,13427,-13915,20351,-8449,7015,-23929,-17311,-2978,-9709,13810,-15441,-19077,-9204,-26045,-18213,-31089,5503,-15700,-1637,-24251,-8313,16136,-22159,4142,19909,-11202,29589,20082,-9091,28242,-22199,23723,-29489,20429,-7099,-2418,-9950,3066,-22263,-17494,15621,-16983,14474,-23998,-22384,-29047,-11995,7448,-26118,2542,4564,-12224,12248,29182,9100,19590,-8788,-23403,16587,-2408,-30617,-21059,-625,29694,-11195,-3614,9466,-18489,26555,26157,-8558,27833,-14680,-5044,-1465,-8282,-23250,17633,23816,-32280,-1651,13132,21828,22850,11370,-7749,-14926,22288,-3332,-23222,9474,-31111,30375,-5990,2115,25234,-12855,-17533,13352,4795,-25476,-2979,-20241,-8318,30707,11906,-19856,8926,-25479,2435,-5442,-4308,8031,1326,22519,-25792,-2229,26671,-9583,-2969,25170,15271,-20591,20309,-26149,-13732,-32423,296,-12113,25758,9849,7128,-27360,-7674,15240,-26136,-30086,-29758,-2822,-28740,-30426,7000,5987,26651,22612,22252,23458,25581,-13073,-10607,-14682,12227,13079,28335,-30827,-5068,5129,14079,4634,32494,18225,-21804,-3968,2203,-560,15077,21637,11584,-18289,2895,9493,-28976,23298,-7594,29065]},"first_stage.0.0.conv1.bias":{"kind":"q16","dims":[2],"v":[27761,40604]},"first_stage.0.0.conv2.weight":{"kind":"conv","dims":[160,2,3,3],"mult":1820,"shift":30,"w":[2332,-53,1761,5352,-9671,15845,3132,19143,29946,-24066,1938,8704,-5066,13162,-12691,-4884,31328,-16517,-5000,15009,-25991,-30732,-8788,-17524,24190,25191,-4448,7951,-23137,-27695,-8008,4786,25237,-28706,28436,12897,16347,1251,32005,-27920,179,-4025,8646,2394,28504,5090,-20325,30119,-12279,13371,18337,-6666,17735,-30916,-9027,-5135,32055,20338,-5457,-15137,9546,-1032,29100,22627,-12230,-8359,-19941,27712,-29405,29536,-7122,17876,-6034,24667,31675,4684,2759,-1882,20067,-303,-13954,2189,-29282,-15797,6793,-12813,-25970,-17404,1250,2347,27855,-24118,-18654,24674,17194,-9236,3981,-30728,-8908,-1383,-32361,-2554,20520,-27521,15904,24582,6581,-14036,-26131,19967,653,-1546,-8708,-32178,1039,9426,21741,16453,-2278,-20453,24332,25585,1663,-16884,4125,-23371,-29335,-26069,11722,-29998,29099,-17436,-16265,-31031,-28899,11651,-17876,24849,-20589,-15719,-26568,-25926,26523,24316,-6514,-26652,27553,6544,-31515,27777,-27592,19498,-23885,-32572,-27388,-22130,22235,-6743,13732,28685,-728,17268,5472,-15926,-7270,-23689,28083,-8277,24125,-30723,16264,-9360,-17959,30826,8615,25182,-4177,32162,-17698,28780,28966,24638,20315,-10019,-14515,20787,-3966,-27386,6378,-2926,-12151,-17067,-22150,-741,10814,-5654,-23266,7394,-5021,-20326,-20543,8600,28155,20910,-6230,29146,-2775,-18063,-5412,30935,-183,9002,28202,-21232,-26079,-15093,2227,-11082,9787,28117,1173,17532,7143,5055,-20680,-24563,-1454,14952,28722,-24843,5550,4903,19932,5303,-3005,20115,9052,8868,-12343,-30006,20509,-29817,-28978,-410,-26402,-28317,12469,3030,-12425,-17313,17456,19490,1613,-5110,-6759,-1761,25715,31554,3133,26744,18424,23006,1424,23933,-15163,29499,-30334,-24767,-8746,22823,28846,-8534,30199,-32068,-18894,20035,-28387,11755,32393,-22108,-11839,-12859,-18075,13880,14930,7538,17806,-21385,-9853,9470,-6618,-18664,32363,30602,16839,-27026,-23505,-19613,9445,9343,-25367,-28237,-9196,-27787,-15706,28071,3270,-12194,8741,22181,-10516,-16257,-30266,-16400,-31436,-5103,-25967,30249,-25821,11086,-31030,5737,342,9022,31071,-21771,21695,3002,-3316,4133,-1428,-393,-20458,-6527,20527,3071,5846,2411,30840,4098,-31577,-2603,-18882,-9185,13140,24360,18345,-1348,-25183,-28741,10878,-1972,-11523,-22445,11836,27391,-16804,-18185,-7409,-20563,-18233,18115,30843,-6973,-4836,21456,-30508,4181,10702,-31727,-8365,31718,-24815,723,-25299,16155,22379,20987,-12630,8240,-15312,-20290,-26631,21540,-18274,-14384,-28578,14804,30174,-1373,-3666,21617,23690,-16444,30115,12422,-23007,-17054,4037,17817,22109,-31053,9862,-28644,12238,7551,-30844,29298,5902,-30325,1981,31089,-28495,1957,-27431,-16209,24575,-14560,-3521,15235,-27066,-18811,9738,30125,20621,-30496,-3382,-16739,-4799,-21499,31201,-6350,-150,-25903,29464,-11628,3587,13384,8911,13336,-7025,15062,2283,1107,2194,-29977,-27489,-27648,-2519,-25152,-32208,20060,15806,-27565,30009,922,-2472,-16987,-13889,3541,-6254,19643,28055,12600,10865,31705,-25537,5288,26491,-514,-692,8405,-26328,-26936,-7399,31495,-9290,16012,26929,-20209,26901,-3198,-7784,25907,-28871,-28298,-19908,13605,21379,-25876,31194,-517,7344,25002,8187,21637,14703,-9369,18860,19986,24540,14289,-32327,30869,818,3412,3460,20346,-18877,7427,2498,-26342,6115,-28314,-6690,-9741,1497,7846,-6635,-22021,-31107,13900,28784,19011,-11843,21094,-8463,-2972,-7407,-20212,27962,29984,-15045,-9469,-5241,-21118,32038,12474,-28362,-24190,-14557,21378,5063,-26668,-8257,21910,-26951,31804,-31962,18848,22610,-3524,-21742,20080,7510,-14536,-21214,-615,-12577,-1803,-5603,6240,-12962,28766,-20940,-32369,7181,-26504,-21047,31496,10522,30123,-30499,-19312,15933,10825,19659,-17517,-7798,-20849,32255,-23298,1691,15566,-2547,11526,-6020,869,13986,26114,-28966,-29921,-18970,-7937,5438,-26283,-2016,29979,31268,-10492,30502,31160,-23188,16951,10043,4773,13094,16891,-30815,26690,-20121,-30845,-1449,-12772,-24349,-25897,-15685,-10259,21761,11281,-17761,-14265,22394,23323,22848,23784,21461,-26937,32378,-6190,15275,-27638,-726,-15076,7666,30989,-14987,3979,29561,-26837,-2267,31002,-10441,-31976,-19627,-6585,6101,-25088,-22162,-28629,-4307,-17270,-47,-11507,29931,4106,4806,28808,-18941,32458,-32308,25379,22722,-11784,-29157,-25050,-31718,25037,22363,-18261,-16761,13880,30115,-9656,1348,26738,5260,5767,24444,-28927,-12723,32673,29976,23688,27715,-24222,-7561,8955,22565,-21851,2578,-5390,11161,-32716,-7807,-12144,-20893,-10734,15891,5112,-9054,6840,20219,-27667,24243,6405,31090,-27335,-28616,-31785,-527,1279,-4524,4198,30549,-16553,-4223,24924,6083,19160,6357,8554,6346,29618,31749,29703,-17826,2744,-30258,-822,13580,-14148,28741,-17890,31089,18375,5205,-26015,-24670,-15757,-18858,22639,-25722,15690,20591,16114,108,13024,-22478,24046,874,16723,21363,-17930,-12853,-1874,-16013,1436,12480,-21940,-32033,-17410,9207,12159,18187,-29127,-32371,31831,22295,7998,-5652,5590,32025,20644,-20475,28392,11496,-19273,5312,-10078,23280,25092,-21466,7581,-9836,32489,30238,23489,22700,7657,27767,-8661,548,-10041,26043,-19845,-29323,30329,19192,18077,3292,13853,26997,17205,20839,-21889,-27123,29855,-28390,19375,-9467,6489,-20328,-27139,7343,16627,-19652,14072,-13763,-23710,-22526,10332,1607,13139,17366,30396,-1212,-7885,-32286,30277,-11652,-11113,15564,-27731,23832,-13065,27962,23104,31529,28860,20947,-19096,11632,-28371,9094,3780,26964,10430,31537,16965,-15339,-15420,9087,18223,1264,31678,21061,-21286,-10325,2151,-6003,-14146,-22506,-24764,13683,30692,22824,-5841,14091,5132,-25438,-26876,-17504,-22971,-8808,5603,-22625,-24129,25999,26537,25005,22683,-23743,16239,4332,32335,798,21817,14815,19302,9708,-6106,-1450,-31921,9126,24170,27986,-579,-29,32124,25059,-29489,20501,26316,-24781,7857,-8833,16532,-27119,2189,19915,2803,-26223,3929,29359,9455,-22390,10669,-4011,-8858,-12532,-23148,13173,-4597,-27327,4800,-23153,-9983,27326,28825,18690,-14274,6418,-9775,7187,-10572,27523,-10009,-25018,-32168,-14994,-30072,-10473,-27928,-27890,32372,12494,-1892,-27057,13013,-19803,-588,-25355,-25629,-38,6096,-15195,8211,21244,-19824,-24960,-28323,11605,-30886,-580,2877,15912,5826,26633,-23726,-718,-3085,16083,-9905,8048,-20284,2340,-12914,-32497,18218,8602,-8162,10119,-24642,2140,25965,22502,26276,-26283,10277,11945,-20766,4167,18694,7944,-32615,-11538,-7999,1485,-9663,-12224,21557,1613,7412,18381,-2265,-23185,-4190,12122,3341,18126,26414,30840,-18274,8065,-23664,31899,-14888,-1236,13974,29792,-9257,-5620,-12148,27250,-9944,-22036,-28337,27085,-626,916,13598,4834,18305,-13782,-14853,-21618,-741,-5410,8708,-28703,23921,-24338,26169,-9578,6086,6545,4030,18632,2004,23442,-21654,12628,-5403,-28099,24261,-3285,-24523,-18077,10336,19418,25142,6274,21082,-16382,13506,-17287,1889,-20702,-8850,10541,1357,21129,16879,16,11714,-9345,19632,11530,32458,26451,-13376,-21762,3955,-17616,10736,10020,-2205,-13054,-21693,26456,-19075,-16680,-27613,-14584,8454,-496,5423,30458,-20661,442,-17412,-25382,20945,1565,26389,25125,26651,-6349,13999,24076,-32669,-10013,-4622,-5810,-29948,31895,9040,5021,-11427,6916,-12244,25165,4228,5578,-28367,-26431,16328,-21957,-24859,-15350,9804,-17046,2,11406,-8911,-130,-18538,-12504,6824,-23046,-25212,-2403,-806,15830,31190,-13993,21410,-7282,20106,-13576,25549,15554,16897,16829,-10135,30255,-19851,-16317,-22725,5986,27724,4717,-30584,16163,-30814,17807,13651,-1951,15001,-5810,14105,2771,4993,-9601,-9135,29310,-4196,4594,-1400,-31748,-22913,-22238,8161,30807,-12912,-20930,23083,-1545,-9054,4956,10951,14278,-29635,-327,-21382,-29103,-8147,13852,-12807,-26636,-928,-19940,-20965,-26550,-19572,10950,-25110,-18741,1124,17,-16252,-8522,14566,-15578,7641,-26730,-19267,-21015,-66,28571,-17506,21654,25314,440,28214,-20880,-19778,19010,-31258,-15461,-3872,28156,7416,-29260,10316,-18837,8825,-26877,23262,16040,-12617,-30178,-10059,-27819,17072,13864,-8109,-20137,12794,-19828,-1435,-6309,-14183,7153,-28681,27013,27838,31706,32407,-16388,-11639,-15208,-23434,-32374,18012,-7190,-4526,-28205,23624,445,-15398,-20867,242,-28096,-19482,29847,-15900,-22671,-18946,6020,-1166,-28723,30858,32281,22544,-20972,3148,2406,-1680,-28043,-14548,-17878,8212,31663,14914,29479,-19490,-28645,-20294,9143,-28852,15675,-26448,-23724,-22275,26482,-2957,-8586,-8143,32726,15691,-9048,-3973,-6473,22747,-3614,-32286,16735,-20808,16361,-28808,-14199,-5299,3010,-4276,6034,-24971,-30414,-4433,23240,5483,-3824,-15896,127,-26905,-9076,-13406,30330,359,-12198,8135,27235,13024,-27024,15642,28469,-7685,-16299,10419,16388,-15885,17867,-29617,4945,25967,5497,-26419,31359,-13160,25797,-19978,6515,26912,5159,-6414,18230,-5039,-71,8793,-3873,-22258,-9138,-18660,-24235,3608,-2519,30176,-9169,-29048,4625,6578,-24535,-22875,-4188,-23849,6147,27494,26142,30304,26899,9995,23842,-27999,8252,25707,8862,-9396,-30184,20819,-4031,-25444,-24880,12988,-19862,-6127,23137,-11316,-12796,-5801,22920,29482,21142,19983,-20765,-18374,-31310,-10485,32699,25934,-10813,31061,-13761,-30389,32142,15172,887,-2603,24873,16257,31921,-25090,-10109,26669,-9452,-28288,-6764,15249,-18501,14216,-15542,-5043,-32745,-28395,-4979,2103,-18664,-584,-18352,-12175,20177,10075,-27337,10298,-17736,-21517,20028,-27311,32512,-32447,19489,16869,-27705,4376,-14497,1338,16844,-18152,-1435,1685,-10328,18747,-28792,16179,-13138,16262,-21696,18544,-10413,-554,7631,20297,-18618,-2820,14404,11459,-31157,14749,17179,-27685,-13745,-19771,-1491,-14468,-14887,-255,31783,-7317,16740,-12971,-23369,-13614,19834,22885,9319,10270,28882,-6458,-23630,18193,18974,-25609,21363,25571,-31968,13765,-15522,3358,-31448,-3230,19213,19862,-27033,-15540,-12404,24253,4614,-26262,-5277,-20115,-30558,19628,-27990,-26246,-23224,-10134,-15656,-4734,-21373,8575,-22854,29035,31275,9993,17722,25467,26675,-1834,26191,4793,22672,-20077,6253,14505,30914,18195,-262,-20082,3856,-1102,-14582,-32133,4813,19105,-19089,-25964,30218,2696,-4519,12652,-25883,26877,-11608,17656,-27614,23884,24385,-17849,18183,745,-12542,-4059,20814,-7801,31958,6958,-31686,-22861,12436,12855,30052,12243,3491,19609,-19847,-25440,-12832,-4329,32718,1844,-406,30363,6005,15906,24314,16898,-4437,-19219,-17237,-13118,8231,-28634,27358,24038,-11730,-30329,-10936,-11852,19648,15137,6682,4946,-13413,-32599,233,19577,-25247,-5931,-20200,29953,27422,18937,10117,4679,5026,-10229,12168,-13010,-11848,-8728,-11868,-27806,14536,32387,17414,-8479,-16495,-29112,-28681,18073,1534,19625,-23203,6418,13354,-23053,24314,-20066,4482,-26745,-17088,-8019,-31796,-8143,-31744,8857,8828,-13695,27824,-23826,-27914,32423,12976,-6182,28577,-11395,-9615,2815,-14298,-19991,24420,-31148,-31672,-9979,-10538,-12447,12703,11884,4839,23299,16911,9052,-29074,31525,-11421,-11346,13088,-6892,24436,21768,16629,-5365,10189,-32256,-19306,-1701,3539,29758,32173,10495,-19837,-29082,19460,-32235,25880,-20846,-24376,17701,-1641,-25353,13453,3462,-3979,28311,-2253,-16354,-7430,7675,-17887,-16635,-13337,5190,-23090,8122,15765,7545,24768,-8692,-4413,-9155,10784,-32296,18369,-4931,61,-23545,-15634,-22478,-24695,-15478,-25030,10186,-27280,-14556,-18114,-10029,10892,28396,-29541,19797,6504,-10405,-32194,-14662,4288,6934,-14028,-1457,4176,-27111,-15316,13440,7171,-693,14962,12467,22176,13590,19643,7972,-31076,18407,8549,-2661,21669,-10568,23805,-8378,7933,8317,-12737,-28167,26849,-29595,-18070,19831,-21781,19971,-119,6604,32677,4672,-20131,-10718,-16277,5510,26047,11290,24,-14946,-30631,21124,14462,25521,-23547,-31849,-28742,16613,-20039,8720,28419,766,14493,-21231,-20245,1163,16869,-12296,-6437,-30674,27723,12748,-14904,29851,-6909,-20453,-3017,8248,9802,10,-23790,1131,-12773,28889,989,612,30063,-25977,18235,-31629,-22251,7834,537,-15748,-31457,2601,-7925,31201,20096,-14291,-15502,-23076,-25518,27158,-23782,18781,-17985,7291,-6653,-16489,27122,3602,-5928,-5996,13822,19126,32280,11913,-7645,7248,-2991,9420,24684,22519,23119,29601,16976,-21114,2831,815,-13087,10635,-198,-19186,29536,-29277,20507,-4915,30149,20458,-9352,32564,-4518,-5819,-2274,6877,-29581,-14342,14909,27856,-10961,31540,17907,16209,-6680,6250,-21068,-26898,20998,-27355,-1165,-18304,-3140,-8219,11560,3904,-26680,14891,9142,-29981,20847,-18200,-16135,30228,-2213,-27133,1413,13490,-18641,32057,-32622,21811,-8112,-253,1227,-22893,-20139,-27319,-17080,16867,6865,-23708,15319,-5916,-3984,-20750,12437,-19803,-32582,26533,1845,21605,23756,-24501,-1107,30829,-3206,-21835,-29084,4938,-7550,17154,-4651,3070,10840,-4115,16283,26263,-12391,21901,4737,9795,23102,16675,-709,-1465,4221,11539,-5484,18942,-23813,25121,3736,13375,-31419,17860,6328,8788,21831,-2845,3847,17425,24524,24966,10571,-23540,-8707,-25507,8815,-11404,-20175,11147,-2825,-24387,-17268,15475,-16712,-15220,23044,28199,345,-30884,-31587,-26077,12242,26739,-25050,-1346,-11910,7062,-11654,25139,-15989,6687,28203,-24184,-32584,-5815,-18448,19103,18490,13875,13459,-19107,6871,-21069,-5750,15863,-17434,-31961,15438,32057,-11253,-3131,29169,-17615,-9875,3075,9253,-22390,1826,29098,27135,13744,21873,-29728,-7430,20627,-30180,22030,13348,32712,-25902,-6915,28426,4124,-4170,-30783,-9555,-31636,10412,24661,7162,7518,15187,-1173,-4021,-3752,10119,64,-7435,-24587,32175,-23950,30514,13117,-1557,22118,-18020,723,-20269,19501,10293,18807,-7506,13014,6664,-23469,-6916,21473,-7412,-1806,14062,-7719,499,7291,5692,-1355,21383,-16649,30569,8596,-29127,10895,-29393,-28475,21457,22731,11782,-1250,-7589,-14298,10786,-27482,-17983,8515,32438,22997,-2391,25685,-18638,-12796,3931,25334,23269,14781,-1679,16286,4785,32160,-27252,-13677,-5384,5969,-842,6994,21468,27690,-24209,23481,8237,-2641,31357,4926,25817,7465,9459,27905,4184,-1445,-8312,27256,12806,7769,12648,-14459,-27754,5996,-13263,-5238,7424,27423,6695,-22193,-5014,-27663,8397,24999,-26350,25121,16657,2442,4091,-10265,-3000,32212,-11715,-15529,-28641,17733,-12216,-6741,16688,-1779,22579,13251,22546,11494,-4302,23871,-28327,-8250,31396,-17454,-8313,19076,-28967,689,27284,10417,18883,-19858,-20265,16339,-22083,-31408,20448,-5458,-8120,-13480,-6237,-5317,26550,-17128,28902,-15294,23453,-22596,27061,31168,-4367,3797,18907,-30606,-7230,-22845,-7191,6960,-30129,-1312,-28415,-862,10812,734,31713,25074,-26219,10551,2210,22898,-9451,-29922,2021,4474,-2579,-17623,-23449,-21611,25286,-26055,31675,-20633,-11769,22977,-241,-6185,-29898,18605,11376,23181,5127,-27658,22006,20205,24199,-779,-23232,9287,-5006,-14948,-28619,2876,9996,27106,-14655,26015,-27784,3387,4398,-11623,-27606,-1254,7054,4336,15534,-16855,30604,8116,-4041,24575,22672,-14952,-16693,-24335,-22904,21587,18157,7177,-30454,23561,10067,-20443,16161,17031,-6879,6896,22478,-8918,-2458,-3348,19461,-23190,-4519,31281,13673,-17478,-32582,-31740,17406,-1611,5388,25190,-23562,-23431,17267,10733,-31941,-13202,4094,11653,-10160,-4351,4572,-15442,24329,29608,-6124,2451,28953,-11119,-32248,-25943,-10359,-27801,-12949,-16583,1690,31330,15394,-20868,-23173,28169,8991,-1333,14210,-8464,-6289,17132,16463,13108,-28189,-89,24829,-14968,-5479,30305,11814,-26172,18835,24750,-27506,13828,-11256,-28174,19981,14064,-26265,-262,-26235,9497,16139,-11811,-20086,9081,22614,-11171,27668,28871,-21266,-15059,-24706,-2355,311,1709,24062,23557,-19583,3541,-7598,25348,-791,-26292,-24923,-4572,32414,-22385,24798,30548,-25133,-3234,-26213,-23994,25092,15372,1748,-10233,-7211,22082,16123,-5528,22507,21698,-27835,24085,30469,-12901,-31479,-5290,-31088,29542,30597,9210,-4312,-31999,-17803,21976,31413,9650,-32717,-27468,27187,-15922,27113,-16491,16089,14229,3699,-12533,-11,-7827,-23900,-23675,4360,-25817,-14323,23167,16729,32238,-1847,-21112,-23706,-23852,-15993,-26066,-23883,-26985,17868,-22542,5001,-27835,-13698,-19646,16571,16890,-4687,-22428,-7101,-1391,-16717,28698,23989,-12515,3344,8346,12350,340,2918,-31727,31146,2449,21214,3850,31788,16026,12256,819,27537,25162,-10816,-23011,22792,-30069,-8909,-26989,-1684,-3767,-7712,9915,-8939,23617,22973,21364,-9023,-28508,2620,-12683,24977,-20538,2347,19687,-24474,11144,8339,-31943,22595,588,-15307,6196,-10001,-25940,-3004,7834,-18192,-25282,-23677,30326,13505,-4034,-22443,-18076,-30452,4636,-32257,10498,-8424,-8524,-3810,4568,17688,-13895,18138,10054,30802,-20795,-3472,27694,-13856,-26783,7760,-28019,-11039,2275,22646,-9205,-7289,-28449,-12499,20502,-12239,-22191,-8549,25213,-20364,-2407,-7576,-5005,-22142,10896,-13848,7974,30092,-810,11785,19160,13915,30045,-15350,-10865,-1486,-18640,31080,24833,10647,-31799,2098,6886,14632,-14752,-7203,-7983,11367,19847,-5247,10419,-13537,-30656,12229,19872,-14196,15808,24616,17961,-32452,-31440,-8968,-7481,30230,-11490,-29236,12889,26644,15305,-28516,-4780,-28486,2769,26795,21322,-26459,-3849,25299,-13218,11878,32524,19967,30898,25264,7237,17325,-28409,1790,14821,14565,-9319,26046,4488,26809,-4808,-22633,-30685,-30550,10845,-19360,-953,9816,9548,-31319,11728,21753,-13732,-5932,24939,3446,-2743,-13181,5079,-13863,-27728,85,30983,18307,-14274,31308,-20327,-19047,2324,-1065,5873,-10134,-17143,-1002,12490,-10657,-29914,20483,28353,-20687,12735,17938,-17760,-7266,-30077,6561,19485,23179,-16097,32475,-27733,18968,5409,15116,30194,11058,14822,-11021,-1153,-23097,27108,-22094,14153,-5600,23547,-14021,-27726,729,-23809,1155,-9305,2928,-26106,-29361,-18906,30340,-29759,-900,15223,-15418,-20518,994,-13268,-29387,11342,26830,24306,-17148,-30301,-3126,16392,18922,-24758,-13547,3268,-24215,17075,17076,8081,-6337,-1271,-15838,-1927,-1801,23368,6116,-3420,30260,-30651,25393,-1735,-20350,10273,23770,28302,27269,22873,-5305,-22101,-8388,-30498,-10112,-2930,26083,17784,13241,23336,11257,5710,2409,-30758,24870,4508,-17311,23936,-30354,-15418,-21149,19192,6927,-4718,21547,13094,6766,-560,-25710,-16081,-28641,-13948,13954,4241,28529,-16699,-27205,-22935,19725,108,26781,-20958,-22332,10203,-20332,-13219,22062,18850,-12940,18783,3084,-31699,-14618,-14323,-4537,12672,9949,25207,-127,-23771,-32235,-6591,4068,32684,21839,-180,21902,7169,-17119,20316,-24150,-5756,19450,-31806,-7191,-25280,-20466,-22575,-24167,26290,31103,16324,31833,-11404,5235,31786,28591,-22965,-76,-31565,-26150,9888,-13728,12695,-11532,-1626]},"first_stage.0.0.conv2.bias":{"kind":"q16","dims":[160],"v":[33579,-48077,33397,-7108,-16061,-58680,26206,-10603,-10693,35883,38583,48307,-1957,52872,-701,-38676,32603,54609,20139,12003,54941,-2271,64453,-60921,15430,-40700,54005,26086,-51196,-21974,63455,-64130,29756,15811,-25396,45423,-45771,-2848,14806,-36983,-43755,-7672,57838,26191,-8701,36008,-53331,-22459,62966,-7185,47059,-19878,58351,41563,-44990,-52134,57456,-5380,22464,-24447,44256,3844,32321,-60115,24860,-33954,30463,-61624,-56273,-27309,17585,9711,56788,-59701,-60067,35958,-53431,-55703,-49498,-63567,49768,47575,-31715,-49102,39757,-25415,31093,27878,65038,-7944,-43301,-65354,-2161,-50370,26031,2104,59548,-25342,40196,50034,-36975,37698,50433,27919,-14206,28567,47581,-54230,25641,54020,-1260,13329,2315,47296,3381,-45298,34110,-24091,-46655,22003,-10337,-2954,-22466,-40063,-8896,-62796,5916,14586,25654,-27039,54546,-801,-3792,-43646,36543,16014,-19364,17168,-33319,9168,-30856,-47429,-55795,24832,48209,570,1123,-19474,47707,24962,-4140,-36482,63350,-63099,-20975,30861,-35675,29633,59731,11278]},"first_stage.1.weight":{"kind":"conv","dims":[160,4,3,3],"mult":45,"shift":31,"w":[4283,-11953,-16483,27505,-16535,-1573,-20835,5480,-1857,-13674,-26522,32071,24037,7293,-7907,-19174,15676,18262,20427,1171,23537,26041,-10013,-1194,27177,-27075,-32740,3848,14302,-8243,27037,-8280,2432,-9003,-8215,20980,18823,30279,31350,-6461,-29426,-11499,3659,6104,24035,-10873,5294,-25770,-29869,19981,-9646,-28790,-3900,-24868,23738,19863,28997,7259,-16819,-12860,675,-17411,22794,-18846,-23698,28780,-24667,-16396,12639,-5923,15891,-3543,-29559,24471,-29148,13512,7942,-28256,-16089,-22258,30724,-24033,-1381,-12385,546,6164,6695,-5268,-32625,23898,3603,-30766,12724,-8901,-23410,13210,20309,11535,-21694,27910,-8149,-20794,4683,-19727,6378,-30218,4905,-30038,23969,-8143,21592,-25426,-27176,-238,29378,30468,-5527,3699,-27061,-318,10834,-29588,17679,-6097,-32338,-18415,23191,-1534,6655,-9230,10704,13905,-28866,23618,16942,-30542,-9542,31759,6093,28165,22016,-16081,-26053,18273,26066,32395,14538,-14062,24323,15734,9631,-25136,-30699,9923,-25485,-7795,13360,-29766,-18584,-16267,28080,17719,-10876,-22834,-22434,23724,-22539,23218,-27070,3874,22719,-32552,-11407,22847,13832,-8511,26724,-2619,30728,18392,-11906,-15644,-17470,-7412,-12097,17932,16622,7175,16113,19477,9946,-6425,17106,-27239,-11233,16392,29277,29663,3714,-16523,-16701,-1300,31620,5340,27585,-14596,-10783,-23057,7875,28572,17582,26624,-5567,-8611,11733,-21110,16990,31016,19319,-29933,-2365,-24340,-19455,8811,-10615,18255,8385,29589,21805,-20443,-19537,18608,30593,-31278,-31388,-3061,-16883,25513,9869,29351,-21260,4443,13736,-22125,2782,-2826,1822,-32719,10170,-5739,21085,21597,-16692,24402,-28895,28222,-9529,-13779,-26827,-12238,-26916,-25492,22996,-533,9923,-415,-6415,-31510,20481,-5229,-20442,12966,3947,10027,13423,-17883,11852,-16790,29657,-26405,7943,30356,27623,11405,-16810,-16842,-5411,-1447,-23296,2690,-14357,27488,27827,17062,-11890,-7268,-10785,-5728,11916,-6520,-24109,-16086,-28601,-26103,303,-29931,306,22614,8955,-12037,-32007,32667,17289,12746,20811,-6908,-9805,17430,4442,20817,-8441,-29293,-20037,-24735,-11576,2648,3916,-27357,-13097,-26334,9832,21708,-14903,15718,-30368,-1632,30931,-4072,-1377,-21534,-19702,-29632,-16033,27054,2237,18951,-28517,28215,9197,-30796,-7261,-5247,-15015,-29389,21827,-27460,-32022,26245,2752,20566,-3814,-7674,-18749,-27336,31610,-25488,-32566,-9896,2308,3299,32152,21402,24555,26548,-28665,4188,-26374,23167,-21749,-206,-2221,-1973,-26373,-20569,-14969,20509,296,5274,24523,7422,21195,2988,-19662,-26157,21775,-21564,-26191,20693,-12170,25014,-13331,-23020,-1857,19558,-3498,16025,-3383,-27903,32697,-26545,-11083,9960,27505,-1458,-11790,17805,28567,15921,-16410,4292,-31832,-17049,14094,-20067,-29628,-25237,12693,25327,31418,3915,9357,17438,11685,-26092,-8615,-21996,6813,-21157,-31232,2814,13593,12484,14474,-15912,-26293,11552,-16487,32550,-28370,8908,20263,-31676,-5803,-2013,8387,18358,-30821,26017,5875,14840,24388,-1949,-18943,22516,-25974,16265,18560,-30201,29124,-21864,-14610,1594,32500,21641,-11895,26151,14614,-2959,-19760,2373,-6528,-22123,26012,-9609,-2197,6489,16274,-25770,-22878,-9914,-27973,14288,18002,5676,21993,17455,-12273,8636,-3953,-17567,-3326,-21453,18578,4097,22408,-26580,21304,-18896,4707,1404,31926,23386,-23634,2582,11379,12314,-3032,-602,21443,-4811,21339,-6293,-26648,12564,-12855,6659,-19280,13696,20186,-13250,-23617,21887,-23254,12371,-26366,-8227,11958,28765,24247,-1106,-26943,-2684,-18842,22000,649,-7899,20559,2624,29152,-25029,17810,26460,29037,-8642,-17066,26685,-10045,-20712,-14412,20178,13015,29002,27307,8849,9236,-1759,-22961,27079,5303,5798,-1414,-6948,17356,13675,13063,30841,17932,8288,-30750,31741,29417,-14857,19991,17400,-23425,970,-18757,-26432,27810,25570,30308,-27417,19115,29988,-9346,-3335,-11495,-17918,16287,15376,-30171,-17120,-6514,5407,-24962,-7572,1514,-300,17034,-5396,18364,14833,14127,17436,-3623,1279,-19664,-18825,-26672,15311,-10234,-22132,14842,22793,-19831,-32034,7164,-22529,32301,-8397,-995,12665,32238,-14711,32220,15875,29670,-23695,-8237,20297,604,23713,25023,14837,-20206,-3869,2599,4280,11281,-12591,-424,1888,-18478,25508,24623,9785,-22614,12740,26358,-11072,-7435,12733,-14050,14713,7578,-17004,10859,-1132,24606,-27737,-11513,-17725,25008,231,-23123,-5554,11259,-885,-27958,11255,4728,20299,-28658,17693,-31846,-7252,-1283,13891,13228,-32047,-18913,2239,-28214,-23051,-32492,-529,-10547,-21792,10605,879,7041,-32692,-6561,-29086,16046,18041,20554,-29199,16439,18371,-10124,-22150,32589,18499,573,-18955,30174,15522,-19997,10519,2335,-5111,-1039,-25964,1479,-4295,19664,25112,-27840,-28728,-18491,-28260,-29539,-23605,29006,-6952,-21007,2351,-12165,16645,14731,-2214,-17631,18796,-25540,22888,-26453,5137,-19923,32266,-9525,24036,25213,16282,32452,-2330,-7976,-19327,5267,-11431,25200,2245,-28978,-438,29112,-4273,-6682,31255,31076,-25183,-16914,25932,-14837,6645,21578,8010,-15256,24458,-28086,24220,22294,2994,14737,-24394,-30393,23954,21653,-2971,7531,26885,-8019,-4924,-20862,3537,-25401,-29201,16370,18012,32523,-20868,-10018,-20904,-1305,-23004,-23418,1632,21800,-836,-9058,-11370,29881,-2728,-12425,31751,-13923,18126,23991,24520,27210,-31841,-25146,30612,-26065,-22064,-27408,-21853,-21497,20401,15877,-10227,-27887,25604,4154,9821,7098,-13529,31490,-17216,22530,-12643,25148,435,-5752,-25677,16291,-12266,29938,-14670,14878,-9227,-14993,-21301,26457,-32183,30434,13283,-11296,-2100,4049,-5449,-14596,-359,-14041,-14425,-26300,6541,-25390,17464,-31740,-31258,-26340,-31656,30425,-18312,-32024,22663,11296,15181,10231,-28613,-7540,-12228,6608,-15964,-7671,25754,-28673,27713,5961,-12096,15568,-2564,18912,-26213,-6227,21326,-9006,2944,-24840,203,11884,31977,22806,-26486,26287,-16721,30918,-4574,-27116,26111,5976,-3270,27701,-10131,28348,18249,27316,13538,7014,4871,-30697,2324,-14285,-29107,12370,-18717,26998,-10775,31658,10066,3058,-14562,17571,11657,7212,-17565,-19535,-10171,104,-19067,-29949,20171,23837,30194,-8707,-4970,-30632,20562,-10364,-15581,31717,25652,24915,-21612,7198,-31140,22187,-21494,-19832,-14375,19702,27161,-19740,3904,-19484,-19323,-2074,9752,-3593,23400,10736,13314,-9992,-12948,-31115,-24876,-32722,20400,5994,-2391,12631,-2289,-14446,-2482,1082,22552,2363,-21951,737,18751,14098,-23413,-19185,-32755,-28634,30253,13759,28259,-14446,15443,15021,16856,-3021,-8117,22191,663,-11410,-13316,11882,-18878,-29561,22144,1504,24961,-13554,5740,11407,9409,-23142,988,17022,-32409,8169,-5526,-9741,21177,-3957,11032,969,13911,-25739,-266,1850,29792,26702,-30522,20746,23575,-15496,10517,31736,16716,28025,-21610,6313,-26962,-31033,22852,2589,30880,-29739,31628,-5215,-9614,23881,22223,32499,6944,-12517,2364,8052,25221,26158,-2314,18687,-24934,-7709,25257,13913,16027,-29325,-32533,4868,-24894,-6359,27764,-16228,-4172,12911,5964,-3326,-11521,-11084,26428,4764,-28639,1369,-4287,24631,-32035,23564,-7882,10077,-24855,25672,12544,9212,-7654,299,31348,-21222,17178,-22879,4134,14979,32736,-211,14085,-31238,-6855,30859,-23993,26632,11944,22325,16424,-14655,31943,-27067,26247,22087,-13710,-4879,-6433,-25000,18929,-28373,4547,22820,5752,4072,-19535,29209,9323,31986,-23094,17945,24317,-31937,-13515,9683,32394,-21200,16496,-10004,12028,-9273,-28226,-7444,-24228,3330,4992,1138,14015,-20645,-31769,9488,25191,-5390,21287,-8422,-26799,-11986,-23282,-28256,-20799,-15051,21009,25054,16768,22485,-20545,21562,-6716,9522,26283,-3995,-18290,-9201,29440,4916,5495,16677,-21876,-17621,-3893,-2470,-25306,-4513,-5280,-20500,-29155,21713,29999,-717,28536,-28509,-11352,-30799,23712,-25432,8412,11655,-20866,12339,-13294,29238,12815,2614,1777,24963,-14772,20586,-9324,-14426,-20527,-6391,-9238,7301,-29440,11944,5589,2255,26721,-19127,11884,31113,23966,-10528,5521,-15387,6897,27768,17953,-22083,-32680,30330,23828,-1033,-14116,-21282,13156,-15787,17959,30035,-20157,-13532,-18150,-26580,23222,25819,-16822,14473,13801,-31510,-9259,1043,4800,27590,-7306,29970,-27764,-4054,-2799,-28968,-4541,-12057,8612,-11230,26449,22000,-16680,21783,28540,-16854,31858,-4753,13814,-2031,24552,-20047,5826,-26514,20981,24067,-20687,-23876,-32762,-17076,27468,9907,-28408,22001,-7568,16853,3948,8963,-4413,-21655,-1631,12241,-19101,21169,2443,-19575,-19905,-8610,29718,-23036,30281,2923,483,-17487,2597,46,11975,-12202,20822,4582,-20664,-28943,-32765,27235,28236,17853,-30385,-25397,96,-1291,-7157,16102,-18954,30126,-12250,29334,-11306,9299,-31802,25856,-12393,-5422,-26523,18635,5675,11435,26164,-25007,24226,-14493,-12843,1937,11990,-16436,-20472,-19004,-16476,4736,-28004,-14891,-6297,8039,21413,-19351,21872,4841,18321,10746,5170,-15030,27928,-31125,-25699,13193,-19504,-20759,22198,-21958,14578,-15578,-20718,-7348,27197,22839,6352,26363,-14783,-15620,-5658,3151,18775,5506,-32539,15498,3003,9330,-18556,-2250,4394,-25036,-15834,-24420,-3061,30719,-26334,-24920,-19071,19360,-26587,1540,7467,-30296,5510,-17994,10405,21348,26423,8468,5518,2011,-14141,-20358,22173,9068,-7881,26934,-30439,7192,-19544,29039,13168,9489,4010,26934,-14920,20923,-27481,22539,-28422,-22941,11421,-826,-13910,28107,-8220,21448,6547,22585,-21084,-18915,15140,2921,6376,-12458,-19029,15457,4617,18224,-12477,-24848,-19208,25723,-20228,15073,22072,-25226,-8324,14254,-21282,28488,-3584,-30492,-20220,-6352,-7216,16556,-17262,-7259,4475,25630,21720,31896,4833,-21043,-28403,23689,-9218,-8685,15275,-28406,20979,-4745,-27412,-32488,-30679,-27961,-26488,-9978,26175,-23520,21101,-18504,-30245,5576,-13644,-22833,23922,10764,17141,14791,-13256,7198,-8182,31070,-11942,-30773,-30009,-23017,7160,30906,24630,32075,-21348,-30043,28458,-1920,13526,-31938,22252,23097,-8579,18446,-25173,7537,12241,-25604,17837,-10121,492,5196,-23370,21908,23790,14961,8931,19238,8975,-22470,8209,-4843,10320,-5422,-22578,-30350,-22374,-14128,9797,-29587,-30810,13580,-23435,-9940,16999,-12009,12002,21215,28155,799,-31570,-21394,-713,11551,4617,-2125,-27410,30389,-29663,2912,-22795,-15442,-24416,3526,12128,3125,-28209,25479,23406,24206,23429,-24719,31612,-18273,-20649,-26011,-16335,-10969,23166,-3161,-797,22066,-3828,14300,3514,-14580,8819,9369,20349,11230,3166,-18286,-19651,9347,-3672,9311,31993,-1026,-14557,-4391,-24146,-28709,-19745,-22839,21776,-13756,-12950,27894,-7787,12101,10109,-22999,-25922,-20383,-3985,-22710,23426,5276,-13979,-22506,-9047,22537,-27598,25235,-2355,-23747,27670,4549,-22551,-17661,-9211,28537,-13917,30264,25955,-31648,-6182,9968,-24021,-7575,21376,19135,16427,16060,-19150,8017,-9394,24270,-16335,-16382,-11557,19909,20183,-30987,15059,-28957,-26726,-11797,-26214,26511,-12536,28594,25605,-6949,-23347,-22622,-16657,19659,-20800,-6617,24383,18103,6601,-18482,14773,20281,26232,18288,18659,2289,-14973,-11215,27097,27241,-25338,27015,-17712,22352,27540,15486,3953,17108,18478,-4580,2363,2547,19137,712,312,14955,-23902,11163,-11013,-8112,-19433,14248,19845,12546,16313,14453,-24345,17733,15898,-26972,257,-12105,-941,-17557,32029,-11915,-303,-17435,29730,-4020,-3875,-19328,-8623,-13317,-5680,-5377,7038,24437,-19106,17700,14457,-5882,8913,16294,-13416,-14859,3414,-4379,-6237,30442,-3802,-28308,-8986,29819,20813,4754,5843,20591,29872,-16736,-12554,-22180,6080,-6278,13107,-8408,917,22393,11972,30303,30149,9459,-32151,24984,-31593,6044,11916,-30147,-9258,991,17988,-11780,12417,-7372,-11941,-8228,3627,19556,-17472,24845,20467,-1805,-13925,-15115,-22650,-29032,-5933,8332,-10856,19911,17692,-3744,2463,-11146,26963,-18024,325,-1269,26647,22528,-613,29255,12790,1329,24897,16511,-21105,-4114,-12122,22816,-25164,29022,-12526,-9440,8136,-6717,-22178,-16908,296,22061,-14350,10598,12975,15221,-4260,-28123,25328,-24430,20718,1281,-16763,-28061,26422,-19386,-27713,-32022,30369,7807,1258,8795,-25823,24412,7245,23042,20583,1086,20348,-9386,-16302,-29564,-21803,-26057,32297,-32756,24012,18045,4815,-16695,-15512,14622,7966,6854,-8431,-21097,-29903,31377,31027,-30218,-3743,-11933,-20709,28234,31225,-18417,-1739,30238,-22489,-20394,-26190,-13764,-19529,-21995,3342,2676,15609,17963,26483,-12482,-25081,29761,15424,-10055,-6386,-16413,-25184,-2888,18043,25084,-26637,-3898,6852,12535,30460,-26352,13454,7779,29653,12765,-30141,-15881,-18762,22328,13426,-17124,27780,-760,31629,1923,28996,-13661,21535,-24989,8920,-29058,10860,48,10053,-3850,2771,29873,-26185,13535,12911,9070,7792,-10890,19905,-8433,21846,-8936,-18120,30599,-3624,10110,21981,-7899,-2076,-30099,5156,22080,-24064,9753,-28712,13615,-22283,-2438,-17132,29150,17953,1187,-14361,-21894,30506,-4474,-7809,18045,-6339,-22767,29998,28884,-20291,-4464,15271,-15837,9230,-7721,15870,-10005,17475,19656,20080,-10565,-18280,-28722,-27228,-17072,-4111,-26520,-31989,31353,1969,4190,-654,15504,-23717,-15268,11131,10927,-3370,4744,12791,-26773,-17029,31341,-24166,24201,23640,24463,-24138,7491,32393,18690,-21052,6922,-6913,22031,-19352,-12477,-15079,-26892,-18551,4961,28746,10376,2112,13631,32042,13695,6433,4654,-12540,28416,-21711,27926,15053,-20535,-29308,27686,20173,-25670,-17553,15008,16683,-4615,-29069,5190,-26577,15609,25525,-479,12192,-31947,-5002,16541,-10466,-19924,32292,404,-9915,-1276,12504,-1050,2749,29505,-1253,-16501,-25856,14272,12180,12525,-1265,-17926,31755,20194,14390,17297,3500,11197,30267,-9640,-18945,15060,-10983,-11092,31256,-26819,-12313,26983,-14395,-22164,28674,-32597,-17750,-11304,-31578,16079,6345,-17619,9762,-9533,-7978,1693,13217,-493,-1465,14450,27099,-28407,1964,-846,-23792,23943,-736,12969,9015,7584,-6260,22273,-1336,-10813,25707,10988,12911,8126,-13669,-5378,-17122,-30897,14182,12804,-13802,26821,-3228,923,-2837,-12918,8446,17718,19176,-938,1819,8111,-17472,9337,24858,-15017,-21902,25735,-14486,13089,9316,-18176,-2852,5371,20367,12240,19466,-1824,-10426,-25979,24397,-3093,15726,-9684,26676,-13025,4873,-21446,-5041,10571,-21127,12184,-21842,834,-26417,13336,-20037,18776,-7275,-30395,-3805,-6408,-30611,21245,20923,-4803,-16106,29992,-3777,-9688,-23850,-14225,-24164,3143,216,-16823,-2646,1272,16863,19336,27581,-2638,7959,10507,-32370,452,31384,-19348,-1511,6516,23589,23650,13033,-12728,13392,-15445,27654,22116,11560,9683,-29236,1779,1513,-10079,10046,22004,-23681,29300,30109,9724,-6118,31685,20570,-30686,11779,4342,30445,-20854,-24061,21281,2780,-7927,-21079,-3119,2732,-32534,-2968,23423,15188,-18362,14033,27782,-30775,-24334,3711,26252,10096,-19675,25071,-24247,-16343,-18606,-19293,16484,-26192,-15581,-26085,3860,-12449,25420,28139,-11404,32511,-29761,31377,28191,19840,-30114,21059,13956,-24762,16029,-29750,22483,2323,25090,5306,-20859,-31528,-31912,-5796,-18446,-21006,15687,20548,-17729,-1434,2545,8310,19104,-16888,-7904,-11326,27833,-29618,-30073,-18458,533,13991,10005,-18599,25230,-19303,26362,5180,-10138,-25495,25570,-1386,-13472,-15147,-2154,20422,22475,-14757,-13584,13897,10954,-9469,11506,4023,-23473,-27395,-18276,-16785,26154,-19268,-17529,22158,-23513,-9062,-21944,8850,-13296,31442,-13500,-1407,17804,-28522,30387,25328,20568,-18713,4719,-31491,-24888,17892,-31562,-14382,-8301,147,-5769,-22514,-8794,14517,23902,-19995,27394,21977,-28411,-887,-5232,-8587,10681,24078,-8582,-24182,-10150,13702,9175,-17970,-17763,22806,7370,-25329,-20321,-27311,-16064,18981,10684,-29446,-8324,28754,-7761,4595,-2307,5876,119,-28790,-23850,12518,-11749,-27096,-30214,-17235,-29430,-9828,-26037,27554,-9081,-21011,-22598,3607,-27705,-23625,-8196,-31004,12337,12638,-16442,19091,22804,10874,23706,-16326,18357,-23484,25446,-8336,29324,3393,-5088,-28816,22897,7419,-9948,-3912,-2553,-20492,27705,19883,-3405,9936,17466,-13651,-4504,-24457,14493,-29097,6819,599,21836,-3801,21936,22182,-27521,-29062,-2187,12601,16407,4039,-6726,-24141,-20494,6535,-11313,2929,14937,9889,20888,-6969,6810,16568,11011,32194,-9799,-22698,-20963,19194,3772,9498,28461,-11435,-2240,-13676,5724,4257,28765,10364,2254,30584,-29741,27002,-24973,-1620,28970,23241,24332,5920,22808,32154,-22565,-18442,30052,-12616,1534,-29683,29313,10949,11866,-13256,-18741,-11144,-6807,4300,-28605,10178,5128,14421,16512,-32455,-5058,15102,-2454,-1778,15259,-32008,23890,-12872,28639,-26887,29085,5585,7788,-6619,-871,7882,-30651,3473,-444,21360,18338,-9273,-20632,16889,-18136,13496,1607,28961,9354,4123,-27862,21569,8689,-23217,-31485,-31622,-24553,-27284,-6182,-12868,525,12642,18131,27751,-22445,-1039,-19604,28369,-32037,17086,6181,8502,-30727,962,-5894,4999,8956,-12113,-8195,-20348,502,24034,19048,-24029,-1769,-5778,-12503,-26360,-14238,-19766,6764,11867,3236,-30639,-30104,-20847,-27381,23248,-1,-23986,-13413,4111,-10343,2272,-20560,19157,15165,26367,-10244,17446,22405,1894,3490,27801,-5553,-3418,21726,32158,-19652,3858,4307,-31639,-3573,-1995,-27754,21166,30086,-3499,24024,-488,19573,21290,21050,-19401,-12273,16110,26878,-18604,22833,12661,-8286,-28703,-19288,-27144,-11683,1626,6967,-26852,-2118,29630,32645,31674,-23115,-6377,-2259,-14142,21797,23397,31549,3701,-30340,31259,-10139,-21830,-11799,-13087,-2258,-10280,29167,26681,-5924,13186,-29936,-14228,-10033,-6339,-6872,-15788,-1653,8960,-10489,-28620,-28439,-8585,-3084,-4867,-15852,-11158,-6109,29480,1866,-24798,-30825,-5989,-29783,-15409,-6654,-16444,8613,8200,12806,-1238,18881,14924,24149,23453,-18921,5697,-9393,-16837,29367,18649,16099,-2347,-4676,32241,-30178,-30593,8017,-31364,14010,16144,15729,-6123,29673,18847,-14608,-23857,14775,-25626,-21893,2059,26025,-1886,5977,26791,-664,-24038,-26890,-24760,-9083,378,-141,16670,28109,-24522,21362,-25647,-24074,-25887,-1963,-1593,22285,-19307,-5623,30480,30638,14002,6243,29653,-6940,-7328,-18895,4453,-28512,-2628,17679,-30504,-20134,-25332,23510,19806,2509,-26898,12268,29318,-26404,31686,20608,5071,21474,17902,23289,24420,29463,6310,-32113,-12363,4303,26064,-23314,11648,15952,-718,-7498,1822,28043,-26555,-30713,-30662,22470,18006,15059,7436,-13018,-26547,13985,-2844,16585,7680,-3108,695,-17904,433,17534,-9389,-29707,-31987,15225,-4067,-23084,-21437,-22006,6143,25296,8489,-22510,19242,-12754,-15173,-521,-31729,11595,-29461,-1574,-13667,-12005,-9847,22814,20811,29514,-3067,-29700,10142,-4805,-403,-4505,1846,-11276,-22499,15238,13108,22649,-767,-14921,19880,-26468,4014,11935,8213,-3662,21219,6819,10459,-1664,23168,4493,-17632,-22093,-17795,30374,-25829,21233,19062,-26902,16523,11600,-31792,17651,-18253,5192,15577,21876,-7100,8061,-18445,-13519,13856,26717,9273,5037,-2687,-15448,-23724,6066,-9986,22986,28600,15935,-18772,25822,1182,-23450,-29870,-27236,7348,-19459,-6628,-3835,11214,7307,-6398,285,14014,26029,21827,-27919,21055,-26381,-9592,-22277,-32469,29832,12090,12073,15761,27322,-18176,5729,-21242,-17243,-22520,16263,31325,14888,13078,-32299,-4671,24254,-11579,25887,-13011,15878,-3218,-10388,27781,-17603,30538,16720,-23177,6554,-10032,-23571,-20784,24211,18882,2175,353,9277,-26561,-28985,14161,25075,15264,-28035,-9079,28468,17849,30383,31154,16832,-23924,-24322,23738,-10901,-29507,14872,21802,16686,-2619,27034,25304,16998,-12389,-26363,21236,-22130,31822,20772,23726,-2529,-29487,-479,-14642,-20689,6946,3166,19881,-28306,29430,-32152,14894,986,1639,5982,24725,28529,20360,-2884,4431,2732,27411,-22658,-22409,-30089,-9069,4578,-19327,31211,-3442,-11870,-32013,5181,-1315,-23746,30966,-24668,-29795,-4421,400,-2320,-25852,11059,-7267,27128,-23735,6051,23706,-28872,-6550,-32360,-24528,24504,-15869,18489,28489,-845,-11599,21480,-1439,21777,-19814,17395,17705,27462,-11948,18521,23024,13168,-30887,8235,19106,2729,8602,17421,-9921,-25702,24982,-20816,-21803,16520,-9643,-1760,-2427,599,-15749,2358,28379,29638,22668,15802,-15149,-11761,4953,24787,9937,-20408,25997,17895,23381,14507,14317,-13574,26195,-30757,13515,-20071,25847,4230,-29462,18225,27377,12592,4928,22847,-10979,-8454,-5500,16520,7335,15820,-6845,5506,5219,-21493,5056,-31609,108,-15882,-28296,27557,31145,-22409,-27296,14613,-22378,-10790,12327,-6850,20567,-28308,-1754,-21396,-8855,9752,-25613,4213,11626,20419,-16121,-16469,-15371,22807,-25179,-1556,-21860,-20560,4220,-5840,2970,31098,23725,17309,-21030,2611,378,20170,-9726,31828,-22513,915,-15461,-9905,-19208,-750,5235,-27950,-11931,-26206,-24229,19100,14973,32557,-28298,-24059,-29786,11094,16343,-27238,8361,-20685,-19282,-16766,-7526,-19011,5949,11935,4878,-30182,12929,-19199,-6776,-21238,22845,21398,-28567,22588,-22072,-8500,3787,26574,-12435,-24037,22093,14128,13752,-31016,17101,3675,-4304,30538,-25735,20364,-32412,-18978,13047,28557,24548,8402,3919,-6305,-30298,18507,22109,-23438,8837,12817,5350,-12012,-26374,32256,14010,15963,28753,22295,22378,-22,-13727,11319,-26900,1383,-30397,18473,6479,-29766,23815,8733,-32338,12495,26348,-1037,-9290,-25392,29473,17417,-22915,-17452,11448,6593,32406,-16325,-19311,23483,28173,-20778,14444,18289,-22488,8400,28284,23770,12300,4777,-30784,6360,-18814,18911,3388,-28074,-10451,-21230,32645,-3699,-21543,1991,21615,23209,9111,7443,23322,-7498,-12881,-13205,12782,-3278,-2055,19223,18885,19809,-26649,20590,-27322,32578,-25219,12697,17606,15137,2038,-16166,-2839,1731,-16705,21742,28558,19431,4163,490,2300,31008,25282,19562,8576,-32235,-20023,32008,-5635,-8055,14685,26590,17360,19179,17908,-30675,25025,11216,10939,-29598,-11508,-28470,7710,-9003,-15992,-29652,-25980,19630,-25007,-26407,-20602,-9554,-9761,-5270,-6019,-26137,-24951,-32606,-13311,-29242,12588,-18482,3383,8978,15909,5177,-22452,21732,-15200,-21786,13900,-12593,2061,13876,-24460,-23976,2155,29916,-32515,-21860,5229,696,-24867,-17894,16068,-6336,26947,19018,-23582,-15301,-23258,1769,32763,-29208,7959,29675,-1509,807,-6886,21324,23727,-29565,-6602,8181,30281,5109,3783,7178,14724,-31704,-16243,30061,-19869,-14785,-4821,27341,10395,27767,-20375,20235,-9908,-24026,22138,-10108,9141,3381,8114,-9361,20446,-25686,-10856,-19817,3584,-29833,15897,17192,24320,-22122,20976,-29350,-21016,9655,25075,-32431,19580,24178,8373,-16809,22574,8418,4854,4474,-22147,-15191,-15612,-20324,-21231,-29005,29634,-17272,-29874,31080,-28755,10545,-9185,-6181,-3439,20273,-14050,9834,20936,-21119,-32188,445,25692,-20445,24581,-24631,-19034,-31426,8442,16294,23000,-28915,22519,-7744,-28151,-12288,-13894,30316,8511,17619,4454,22423,23124,13175,-2708,15992,-27091,-25572,9046,-32481,1941,-28040,2696,-342,-6685,30721,14637,27174,-22242,-13981,28732,8533,-27242,2022,-2380,12290,6192,-23451,22889,1175,16286,-12662,29691,-27808,13024,-1399,11550,25167,13851,-16165,-19081,-31893,28251,19003,1711,-9171,-8384,21702,31672,-9444,-5306,-23302,-16903,16707,9552,-26237,-21095,7094,-25030,24078,-44,17169,-18378,-19434,-12115,24008,16669,-19819,-28141,25843,-23964,18774,21512,27444,-8355,14956,13569,24860,10316,-1103,20804,-19588,-13372,27308,-25589,24082,-999,11826,-6600,16956,-17346,-29372,-16609,830,-1741,10943,25012,-1483,-6533,-19186,-17466,-13871,-12776,-16587,-3160,15172,-10580,-16964,7973,-14947,29845,-8300,27185,7732,-20978,15455,-29879,425,-29602,25129,2837,-21922,8367,16522,13922,-12878,-15726,-17757,16016,-26708,-6874,-9859,20017,-5422,3870,-7955,-32075,29150,18240,-13240,9947,-22007,-9273,-22380,26147,18017,-17948,-6415,26524,19,32520,-28990,-6709,8978,-10954,-327,-14354,-22276,10144,-2419,126,-12346,25704,-29892,-18393,-14481,-20648,21247,-136,11889,-32603,12908,12208,-5265,10975,-12505,-23691,-2016,21837,16782,-17985,9676,15236,-29844,2423,22737,19800,-6220,-31710,32558,5086,17034,-20282,-31179,13914,-613,23898,-16329,5929,-23664,8193,-25250,-28584,4562,-5131,-15962,-20608,-3986,-1590,10301,-14290,-21176,-31803,1272,16391,13512,-16765,12978,27053,12288,15902,26761,17732,4469,-30938,-5633,151,8693,27344,-16814,-24699,838,-7352,16479,28329,-25825,19144,15371,29601,11126,-20969,-3846,23808,-29480,-25787,20446,6840,19607,23885,2513,27978,16139,7618,-28520,4378,1627,-20150,-4011,-27091,-15493,-29006,2330,6664,17785,28102,-14435,-20470,-1763,25248,22190,-8998,9178,15359,-21078,-6865,-25750,-9119,23800,8239,10021,-27775,32017,-2764,31328,-16918,30650,-22628,25694,-23965,30980,1248,-6455,-24820,-32624,-24410,-14959,18588,10594,6851,-18502,-14854,-30449,7503,27822,11700,-408,16282,20385,-5456,28791,-15691,23868,-1105,23372,-32236,-17830,-13995,-7155,21881,23941,23723,-15406,-26259,-16644,28166,-8844,8703,-3615,19792,2895,15783,-5064,-21985,-25384,-28494,25329,-8244,-22452,30635,26819,-14026,4688,13051,-18852,7469,30620,99,7950,-16493,-19594,5318,1996,-3340,-23738,-20098,3910,23218,6942,-24812,-32160,-301,-12181,-25678,23122,-1487,23488,28029,-14500,32430,-21772,14186,18281,-5788,-3626,32195,-10802,8278,-20157,1560,-31916,-1229,-9545,23715,-10429,-17507,-25472,8283,-24112,6971,-13199,10268,14372,21753,1651,1138,21769,-31219,-25688,12536,511,-24065,21173,-31549,-16022,-21023,-32238,24662,-5499,-26077,8536,-9318,20692,26717,-19399,28234,-14799,-21506,-17132,-11223,-25126,-3825,30210,-10502,-23643,25631,7567,5792,-30697,-31857,-4892,6136,-21069,-14171,-28838,22642,13272,-10642,15815,31522,14229,30646,-4546,-7979,-20370,27177,8731,-862,-30445,20088,-3160,-23290,17531,-20281,-1187,-23390,-13551,-19097,5241,11086,13466,32759,-13663,20392,-12928,836,-22912,2665,14583,25054,-6045,20905,-6603,-8598,1825,-23734,-7649,24426,-28466,23058,19859,-26711,27382,-26433,5288,21178,-7346,24751,-28865,12784,7034,-4152,-32118,-3779,740,25042,-16908,-15833,29836,588,-11229,19652,26204,-15614,-31483,-20604,-28489,6909,-11042,32441,-29600,-7769,1386,29993,15561,20372,29368,-32429,-7235,-25576,1727,12863,-32631,22107,28115,28306,-14860,-10982,7289,-2616,-9125,-23866,-17820,17887,28365,7542,-2545,7257,2622,18425,32314,27730,-8409,30382,4682,-12469,-16859,-30937,18386,-10725,-21137,15595,3180,-17664,21127,-3835,20755,9026,30054,25451,-22623,21574,7191,23025,-13966,-21183,-15708,11091,28425,17386,-5844,2126,-9697,30177,-16904,12705,22636,12051,4750,23227,19238,-17540,-18279,20108,12872,31773,23350,154,32098,29449,26186,-19259,18132,4791,-2790,13981,18676,23783,-7176,23244,21973,-5043,-16009,24167,-32313,-12861,32548,-429,-15915,-6461,15960,-3366,29775,-11096,-28476,2446,-18744,10510,24786,17479,-27337,27838,18325,3992,29935,-26597,27456,17415,-29375,-25497,-22425,31232,-29891,-26936,4260,-12647,-19978,-20052,-6022,14048,10523,-31336,10528,31013,-19788,-6420,-8186,7832,-15506,-30276,-9083,3176,18688,-11118,-23072,-11453,-797,-13012,8226,-25099,-18648,3319,-32591,12946,-12563,-744,8690,547,-19139,-10094,-5426,3946,-7874,-5648,-29647,28021,-27097,29411,-325,14612,550,4526,22911,29724,-21280,-1595,3927,27465,-15305,-31665,16248,-12324,17172,28392,-25827,3081,1104,25519,10490,-31371,-3532,18893,-20831,20235,-11214,29878,27190,-18336,18474,-24317,-27641,-17296,-27741,28598,28991,-26842,-14251,21747,-4979,29710,18099,-17759,12193,-1936,-16597,-21247,-24862,-23378,-22091,10090,431,-26918,9150,15170,11400,-2374,-14120,2636,27227,-7131,-23758,12974,27896,-20497,-11480,31832,-17374,-5766,-1436,27599,20849,21040,-25429,27241,-10254,-5081,-3822,24132,12439,-10160,-5141,14343,12219,-26014,24335,-8350,-32704,32087,-30671,6438,28498,-30853,28887,-7102,-20184,-16483,-6282,-10099,30061,-13288,26729,-29437,-23954,-30572,13763,15010,-14511,-30279,-27857,2221,27031,-32469,12063,-9237,24532,-10673,5114,-3991,-23514,-4941,25537,-11050,25843,-3640,30063,-14819,940,-1098,-16819,-21788,17300,16570,-2833,-17918,-18485,-10131,16949,-2224,-22749,-1753,7400,1316,20930,25436,24867,-24426,10248,3486,7492,-9804,-28596,-4147,9232,-22098,-25808,18112,9890,-10854,10431,4831,27407,9179,-25006,-10603,-21964,-18714,31570,26132,-6726,7381,1136,-10062,23406,25378,-25282,16700,-31765,-2147,21733,-3526,-10750,22773,2222,10112,5377,-31805,15155,-26789,30985,-6251,15516,29641,12326,-2195,24502,7267,26361,-31844,-22909,-11048,20321,7239,24455,-10044,-32251,-20754,5132,-8514,24584,16032,-32356,21118,25121,-23363,6071,-16628,-22726,-10178,11502,-5804,-12273,-26513,15473,1758,-12850,-17692,-32409,-14378,32120,-15303,-18729,-11733,-14703,10204,-27441,16756,8084,11050,-29860,-12651,-29574,-17570,-23499,15906,26959,-15600,-14671,12624,32406,-6871,-8656,-29718,9235,2333,-8141,-8571,-32568,9387,-9236,-19478,-31044,17393,-21778,-16108,-15790,-22707,32459,9098,-4792,24157,15855,9948,-18556,2908,16078,17381,-9983,11555,28847,6059,-7603,7610,-12558,26715,-13985,27523,-25944,20023,-27510,26320,25014,2025,-31986,14027,28837,12601,-10464,20595,-26773,-30762,-4343,26611,32662,-20583,2039,9922,24630,-2385,-22377,-15374,-21730,-14699,-12875,29398,16401,9161,6761,-12410,2159,27534,-8602,-19388,17271,-27114,-19787,-4911,-8098,24050,32113,25240,-776,-23012,21558,-15939,-24674,-23042,-17781,-18284,19365,-29835,-29204,-6425,-13889,-2528,13738,-8702,-87,-18475,26846,29556,-31471,-3156,10858,18639,1477,-24003,-9272,27231,31330,20022,-895,-2001,22683,-14512,-27436,-10388,1826,-7764,-31211,31437,11401,-314,-29069,-27601,498,8554,-25338,20641,-28680,-32656,23386,5615,1709,-6238,653,-26255,-9590,-7141,2224,26228,-12399,-13544,8263,-7728,23156,27656,-7135,-22343,-31417,18287,-13779,-6231,530,-26373,-26840,-74,5714,-31355,13799,-757,-7389,-31133,-5688,27799,24037,13916,21413,5687,-10489,-11947,7527,-2229,4072,18003,-8480,-4884,-445,15930,6707,16729,-32421,-21244,-29827,8196,-30336,-3616,11641,-15558,27066,22731,7912,16171,314,-21051,-8473,20966,500,13976,5539,-4882,-3552,-4054,5927,1293,16402,-31829,24089,-26817,19405,6471,-4276,-10656,24224,-18693,16481,-32616,23029,21828,12367,16235,1431,11863,14696,-31738,-10347,-23552,-15681,-21300,-9159,-12895,25140,31285,28845,-30643,-4470,29319,-23775,17990,12730,31256,-19743,-5391,-28003,1168,-3750,27661,8565,24830,-4198,25216,1988,3324,-15745,-2422,8895,9914,1551,30653,28819,-12665,-21082,22284,-3236,-18702,13371,1718,-21441,23007,19787,-9337,-26176,-29622,22194,-23972,-27557,17638,5389,20694,30497,-25824,11239,30309,26856,-2244,-15595,3345,4630,-18174,3396,-30607,14416,-13180,4387,250,5931,21516,-9019,30118,-16237,25483,29090,-4308,4157,-28682,-15851,-17534,11955,-17653,-14584,18555,-894,-11118,21185,23602,16667,-1777,-19920,26443,28858,28181,25281,-13864,31362,9374,-28578,-22859,15568,5666,31604,-29970,-18979,-9030,466,21682,26997,-24965,-31588,7777,19839,6749,-8785,-17025,-12389,-186,-21338,-26915,17696,20243,-2263,26647,-30840,18331,-3014,28350,28951,-21878,-25840,30497,13352,-17801,10629,-11056,-10362,30385,23116,10325,-15940,12811,-26466,25410,-21187,27628,16954,3604,26253,-22302,30102,15129,-21344,-27833,-18086,-14393,15501,19777,22863,-15618,20878,28415,-13760,-3208,-19436,-5102,-11581,8944,31337,32067,1453,-10930,-24560,7863,3187,-10135,-6266,-25915,17621,14664,-10336,-10385,-15082,31670,-19621,-23784,-19956,32612,-23611,28063,-14878,13567,22802,-29235,7023,14381,5935,3249,11215,-2792,-30557,28529,17793,-4506,28755,-18846,8333,541,17205,6308,-17898,20212,8364,-9135,12409,19597,29051,-22489,-24012,15222,4585,16015,-23084,-9763,5243,-21355,2230,12330,1171,-18975,-20788,2647,13056,2987,17917,21581,-12789,-17078,26535,-22927,-13250,6367,24159,10339,-30303,22844,-27,-7804,32545,27044,17030,-3508,-19784,4698,-21488,-26989,-17253,-22669,2122,-26480,-19345,26154,-24521,15125,18895,10882,25759,-14571,13034,20876,-32238,-26227,-13670,-19906,-12786,10750,3348,2334,11073,-19375,4991,-24323,-21559,23183,26222,2398,26514,15495,-18922,1938,-6257,-11260,-17572,26256,-15115,16405,-23139,-551,12188,10646,-10480,4373,-24725,12447,-16613,24880,-25180,1770,-27569,16647,-11859,28099,19336,-9592,30749,-25855,-5115,15605,-24919,-4726,-12056,23340,-9047,-19156,19162,-13496,-4350,-14739,5116,10336,-110,-30598,1758,4200,10419,24969,-23722,-9438,24829,31041,-1283,26396,1329,29773,271,30065,14679,-28411,-26401,-15249,5744,-9218,26719,20895,-24500,9481,-16951,6917,31311,-31470,-17785,5473,21882,11710,18687,-22152,20777,-15387,18040,5674,9797,-31335,9882,20573,-30142,20800,-29773,31645,-2201,27227,-29920,-15410,12406,30758,-21098,28,32615,814,-231,17345,2629,13294,-12052,12049,-16944,-8731,-129,-30563,23911,2048,-21227,16920,-26923,25103,-16426,-20584,27621,4875,-6017,-13302,13034,22017,21866,-32602,-6926,16459,9240,13595,-6388,-22078,10571,19229,-820,-30238,10402,15281,4393,-326,-12523,-26643,-3531,17787,31238,-28935,-5076,-11042,17848,25012,-15933,-24193,-17659,-26293,12079,-10156,-26027,-11585,29530,-11670,22669,24033,-16748,-27930,-28929,18208,-15275,-21286,-29663,26358,-2276,-18090,30881,-32468,21250,-20462,-25137,12628,18642,3430,11012,861,-4564,-17472,-30367,27784,4148,20212,-23054,29561,28928,20647,299,-2600,-26783,1176,14139,2437,5919,-21442,21823,16986,12270,3783,-2844,-30629,-30152,-19297,25436,27477,-19358,-32186,-28174,29827,8348,5936,-24461,32568,2237,-22392,3617,-24642,-18508,-2711,6479,502,14097,2831,-5773,28076,-32690,13553,-13100,10698,16536,-5549,-25151,-19720,-25914,-5186,20973,3101,-18408,-28305,7413,10489,18024,-7018,29024,-29835,-13795,15291,-14742,19173,-454,-15715,15519,-22043,-16600,25663,-18421,-17827,26030,-30803,475,25343,-27133,7501,16695,-10764,-1178,-24566,6496,8136,-5671,-12379,12605,-10400,10894,5670,-17218,26134,-22309,2659,6347,-17345,15602,7987,-1940,32360,-4827,-17008,-29973,-29969,13637,-2937,-31921,-1365,27352,19551,-28546,-7188,5332,-21237,28047,1488,27474,-2599,-28575,-20425,-10096,27058,-27803,6347,-15037,-15358,-15,-7760,18422,-24599,-1220,-6358,-19374,25745,-31206,-8715,26995,10550,14961,13160,-12688,10235,26634,-10751,-24031,2261,-1132,-6563,-32416,2415,30,31309,25263,20514,-10084,-1747,89,4512,5558,63,24927,24531,-25874,-31581,-3402,-31954,-8013,6525,7700,-15924,-5194,2824,10210,13609,-22486,10639,19407,-24046,-7648,-21403,27623,-8160,18473,15905,31005,27556,2334,-5546,-32456,9621,-30249,22180,-22278,-23675,-2017,9552,-20797,23336,12433,16652,-913,-20932,-21896,637,-27263,25419,30582,8870,14314,32220,-21956,-23966,-1149,-11420,-31774,-32303,10010,-17971,24849,20262,-29749,22405,22119,24177,-695,-26591,17256,-9148,30300,8779,-29109,522,-30969,-7811,9291,32273,20835,-5214,-1003,26721,-12630,-12727,14033,-7722,467,12840,-29228,-31450,-26837,20425,23631,-19977,27581,5158,18306,17725,-19572,3108,-27313,-22117,-11803,29100,-18186,-11802,25567,-1471,24702,-20671,-196,3301,12397,14359,32392,-29365,8063,6797,-4078,-9664,16559,-20266,7837,-31950,5690,-15609,-28296,31943,4408,-19511,-21635,24830,3624,27540,-29531,-5543,24031,12224,18422,11987,21746,29201,-5898,26153,8850,6609,-8376,-22982,3055,19121,-5543,-6960,-13220,-31244,-27996,-26384,-31044,24062,24519,-1511,1969,-21967,14869,11032,-5904,-18125,26747,13056,-16167,16869,-20924,-1572,-6080,7254,-27375,-13377,-22300,-19768,-19367,-6488,2260,-30208,-24743,10678,-30175,26437,-3708,-8868,28867,4973,21341,-1862,-23789,-8087,-17387,-9252,31526,-21047,-2920,29871,1625,-9681,-30236,26397,18684,32712,29826,29897,-7304,-30899,18578,20985,-30438,-28560,-28821,30977,21128,4903,7919,-15915,23689,-19944,-11826,11972,-32641,-19231,5863,3211,-11616,20648,17287,-10096,-20963,-20747,8942,-25761,-19122,27295,15601,26374,-417,18261,30360,13818,-18864,-9122,28023,-25668,13575,3882,-2771,-15671,23037,21378,28797,-29240,8737,-11894,-2533,-32488,-8608,-27182,10426,-17000,-26120,13810,-29480,-29479,-23077,17058,-32738,-3322,24409,-12202,2519,-20923,-24868,19551,20842,24390,-31996,22695,4809,-5908,126,19305,17835,-11867,-11725,-2530,1149,-2022,-808,20485,-9532,12240,-21760,-30442,-25373,-25526,13056,-13544,21746,14120,-15339,-32011,-17126,12372,31866,-11483,-7967,22726,-10827,2028,16336,17095,4598,-25060,1388,11768,18435,29921,-27095,-6402,-13231,7808,-22453,-17955,31637,-13350,-27566,10291,5310,-24774,22204,20357,-30093,27250,-19064,-9497,-8615,-24025,23658,-17603,6885,-2452,1679,-16734,27068,25367,-25030,24481,-7636,28384,-9783,-23315,10923,-25758,-3731,-26987,11363,-12993,7715,-15771,-1405,-19404,-31993,4114,10978,-28063,24318,15190,-18129,-22688,4098,-4916,28822,-19670,23337,-13877,20817,16430,-28164,8934,-19742,31384,-28161,-2170,27604,30902,-23267,-8295,-23924,30064,27821,23857,28132,3541,-25806,-18167,16407,-18017,13820,14460,-7370,-21022,-8386,22215,-2930,4869,12980,3910,6304,31475,7433,-19883,-14150,-15535,27952,-17089,-30892,19186,-23198,-9683,6776,-23654,16734,-27365,-12896,5247,-6673,-20453,-5512,23026,13344,1321,-5460,-31731,3554,19073,-23497,-22637,27657,10377,-11609,31676,-19673,-4890,24160,32755,21201,24658,-24427,-19221,12608,-13886,-6548,3254]},"first_stage.1.bias":{"kind":"q16","dims":[4],"v":[-22760,50897,-56283,52225]},"first_stage.2.conv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":14564,"shift":31,"w":[18348,3713,25219,-13050,-27371,-29405,-19148,30350,30311,11755,14632,1172,-840,-16685,-8307,-4234,-22855,13562,15598,-27384,-24038,-16751,19942,20547,30581,-8836,20387,15811,19879,-31314,10946,12004,-25970,21680,21430,6569]},"first_stage.2.conv2.weight":{"kind":"conv","dims":[4,4,1,1],"mult":8192,"shift":30,"w":[20509,1670,19081,-25869,7224,-7002,-1454,-16052,-20002,20435,-23351,-10352,15055,18132,26900,-138]},"conv2_t.weight":{"kind":"conv","dims":[4,4,3,3],"mult":3640,"shift":31,"w":[-10134,28182,-10431,-9005,11033,-12570,22384,-2716,-2656,-26759,-19808,30115,-30927,18354,15279,-18716,25302,2750,2605,3822,-12277,-5289,-25266,12709,17032,19139,-25841,26880,13337,-24080,-6674,788,9549,18684,23143,26672,-13952,-23765,-19124,-25165,-12589,26831,-11868,16815,-8305,12894,2243,-4777,5065,-12533,31553,5493,13443,23998,2235,14149,-29721,-6451,22081,-3959,1096,6378,5881,-8646,-10708,-31847,-21816,8218,-15942,14846,18666,-24863,-29010,16688,22382,26916,-27606,13225,-1027,27632,-27681,8153,1505,4859,-6359,27904,-17749,-21896,1747,7654,-28022,-12538,-18881,-18133,14238,5343,14897,22457,-11851,-14801,23663,14763,30950,-17021,22198,-30271,-32382,22042,-23129,24247,3522,21625,3662,-32137,8409,-21088,-6870,-12059,24383,25744,31123,8366,23198,-2035,25538,-23001,-19150,-16241,-23342,-28934,16147,-1287,-1528,11905,-2070,24383,5172,8815,17085,-6361,17643,12758,-12825,-2983]},"conv2_t.bias":{"kind":"q16","dims":[4],"v":[-29468,32641,-36562,-41810]},"CAB.residual_trunk.0.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":910,"shift":30,"w":[-851,-11458,-25294,-7767,-26307,-25045,-3861,3871,-22686,3528,22799,31305,-3925,8545,185,17442,-23301,31449,-18647,-16367,-29830,31797,1832,-27202,26690,-6495,-8573,12039,11097,9675,23110,18718,-16683,21459,27161,-30629,5226,-5179,32751,6755,-16652,-2799,4367,5572,-15593,22571,18640,13988,2787,-731,-32585,-6225,-1737,-4397,14720,-9310,-27534,-9390,12928,2084,4508,26014,-24406,25622,11504,14995,31265,16249,30984,-19193,28508,21505]},"CAB.residual_trunk.0.conv1.bias":{"kind":"q16","dims":[2],"v":[25782,38625]},"CAB.residual_trunk.0.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":227,"shift":27,"w":[15149,-27208,21018,31265,13778,26605,7792,-24615,-15031,-8080,-20074,-28726,-19323,7775,-9872,29066,-16604,31926,-27061,-7906,-6446,-26743,-82,29065,25003,21101,14279,-22672,7539,22569,2046,3216,-29122,3766,-23669,-31571,-17183,-15382,9898,-12323,-4525,-31062,32318,9730,6864,16628,8177,-24982,-5016,-12643,20194,16487,-25969,-30085,24858,23935,-11555,5637,-20556,-22685,-16611,-12995,-8618,4956,-7169,20643,-32155,5125,-29128,-12181,3038,-8124]},"CAB.residual_trunk.0.conv2.bias":{"kind":"q16","dims":[4],"v":[41952,-35565,3541,36237]},"CAB.residual_trunk.1.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":455,"shift":29,"w":[2506,-10266,15766,-24980,23604,19153,-18058,30006,-28884,-3539,-16976,-28080,-9814,1893,28315,-25095,-15788,-26369,9742,3377,-17023,-14593,22302,-28774,-3459,-4627,13935,-26214,16563,-29101,751,-5433,2663,1467,-6820,9455,15775,20409,18878,20831,-6394,-25556,4305,17419,9060,2763,13826,-19578,-2989,-1084,10197,-20708,-5727,-10996,-24205,-3302,30737,2360,-19596,9883,-19519,7030,-18199,-8351,6518,16311,22710,1714,12294,-21137,11179,24787]},"CAB.residual_trunk.1.conv1.bias":{"kind":"q16","dims":[2],"v":[58514,-8894]},"CAB.residual_trunk.1.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":226,"shift":26,"w":[28342,-25598,-23964,-27005,-7859,-31446,1712,27868,9921,20011,-2065,-15832,-4978,21778,14785,-11505,25718,28050,24641,-16094,-9652,27715,-20474,29391,-31203,-5445,-11807,31435,131,212,-11617,-8209,7886,-11901,11165,-9067,11090,-23215,-7229,25647,17894,-21450,17079,-16144,28072,13850,27501,10046,948,24950,-9162,-31595,-23070,22560,-18946,1268,4601,23704,30537,25785,-5146,-24838,18671,8950,-21127,3539,9044,21792,1000,-21636,1390,-20676]},"CAB.residual_trunk.1.conv2.bias":{"kind":"q16","dims":[4],"v":[54246,42434,51608,-60682]},"CAB.subscale.weight":{"kind":"conv","dims":[4,4,3,3],"mult":1820,"shift":31,"w":[6977,25188,30805,-11430,-18705,-4851,32751,-4840,-13995,13388,330,29778,-16385,9410,-8094,-13664,10696,8556,24580,4550,-8315,28028,-6628,17630,13891,29457,14180,-22135,26541,-11954,-4715,-20510,29017,-22764,29250,21524,-13766,-2574,10630,-8990,16644,-24894,-21329,-7839,30219,9312,1800,20272,-7387,-10626,2993,-31309,30546,-22409,26649,30139,-10476,-6570,1916,-2934,7536,-24269,-22138,-17535,6566,17945,6889,5737,-24019,7604,20942,29025,30213,-23054,-3257,17689,239,13547,-31069,-16949,-632,-28598,5793,-27201,-4630,-27764,-29072,-29270,17215,-4123,26978,22541,16150,8148,4648,-30769,-25152,10,-3647,-31610,-27649,-22998,29868,27504,22898,-15416,31541,1128,23390,18354,-18717,-28218,-21636,-16403,26868,-6359,30422,7814,-6533,6661,-11676,10197,16996,-2808,8227,-5566,95,-2345,27662,15137,32012,22292,-18094,-22095,9671,31902,16524,3078,-20725,13756,924,4436,14230,12663]},"CAB.subscale.bias":{"kind":"q16","dims":[4],"v":[-13119,-10687,-49337,1259]},"CAB.residual_mask2.0.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":910,"shift":30,"w":[18067,4804,7828,-21447,-13965,-16403,26426,-5242,9010,4720,904,20097,-27742,4991,32737,-26975,-3554,6669,-14845,19600,-15376,-23893,-28338,-21128,-25693,-12749,-20144,-4687,-1383,9666,-10745,-17137,19142,-18025,2728,-2958,-29292,7470,7011,-12950,-27794,17217,-5708,15341,-494,21736,-27561,32446,23164,16644,-11790,-27778,16719,31301,-22980,-24161,-19431,-22293,-8214,22520,-22015,-3861,18233,7756,-2530,-17147,2187,16022,-12917,-21326,-22698,12620]},"CAB.residual_mask2.0.conv1.bias":{"kind":"q16","dims":[2],"v":[1017,-8172]},"CAB.residual_mask2.0.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":910,"shift":28,"w":[-24405,-11224,-26572,3807,14324,8831,-10565,5086,508,-16315,26601,29351,-17260,-13402,13057,-28647,19175,17456,-28679,-30938,22931,-14634,-15897,-23747,1284,-26483,-27375,-23194,10909,15359,7025,30521,5174,-3537,-22886,9928,-29736,30078,-9036,-29435,9684,15371,32256,-22602,14365,4742,18865,-31128,-24526,-22456,-15471,3884,-28249,-26613,-17889,-24135,7064,-2165,10753,-1512,15012,5232,-7378,31159,9075,17638,-4070,-20129,19588,-14038,31733,-16433]},"CAB.residual_mask2.0.conv2.bias":{"kind":"q16","dims":[4],"v":[-33110,-6321,22131,31652]},"CAB.residual_mask3.0.conv1.weight":{"kind":"conv","dims":[2,4,3,3],"mult":454,"shift":28,"w":[22813,7608,-9825,7535,29221,-8009,-17,11633,18136,-2747,-31833,17929,-17248,-11550,27720,-30377,-17177,23423,-18920,-5781,-7566,-1109,10976,18248,30722,-5575,532,18460,27793,12868,26600,32426,18170,-29600,29160,10265,5399,20594,-21483,8416,19379,-14974,-8907,9959,18134,-20840,12379,-12573,-15622,-6796,-8911,-1699,11117,-13817,20331,-2759,30677,21071,-24989,-13781,-7445,-4346,9378,-20551,7630,-31308,-19664,-17987,21860,28154,1678,32337]},"CAB.residual_mask3.0.conv1.bias":{"kind":"q16","dims":[2],"v":[-20904,-38387]},"CAB.residual_mask3.0.conv2.weight":{"kind":"conv","dims":[4,2,3,3],"mult":1820,"shift":30,"w":[18325,-16283,21938,-13801,16922,-8875,-18512,-8687,-19376,-28710,30472,2172,7498,-28746,-24326,-7117,11381,-12434,-29034,19025,-10181,-26133,27641,-233,18133,15446,9633,30341,7546,-27188,-27470,25192,-8476,4410,-7513,14560,12235,-6770,2998,23311,10038,-30654,9872,8060,-28997,8598,10832,-23300,23327,6530,-7832,-15007,4833,-27038,-24206,-10457,29635,-10510,17972,20662,-15372,5379,6433,4201,10587,9275,-16626,30379,-1112,13707,4512,28174]},"CAB.residual_mask3.0.conv2.bias":{"kind":"q16","dims":[4],"v":[-15196,23181,-20427,5395]},"CAB.upscale.weight":{"kind":"conv","dims":[4,4,3,3],"mult":1820,"shift":30,"w":[-5786,-2242,-24836,-5397,-20794,-29644,-18345,14295,17485,2910,20995,-30505,-21351,-10807,30561,2500,130,-27434,5104,17308,-12465,22187,18724,-16960,-1615,6309,7588,22435,1909,-32024,15982,-14403,-8954,23991,-7210,24093,24017,-5869,31645,32393,13644,-27296,-1758,-29457,23811,23441,-22847,27446,26362,15432,-12200,-19856,-13235,-578,13055,27021,13208,-25697,-10034,-11843,31506,15317,25186,-20423,-15370,4826,25387,24804,5513,20063,-19826,22460,28971,10260,17688,29150,-17435,24691,-30309,7309,-18762,-25894,-12458,20152,-27134,-31379,29644,-29076,9344,30516,17693,-8102,-14537,24410,21972,-9217,31906,-6993,10626,-8668,7440,9048,-967,-20705,-20953,-24855,952,5730,7256,-19527,3939,-17962,-30735,14872,-3647,-5180,20971,14371,22396,17097,-3856,9300,-13186,-7764,8613,27570,20661,-21268,-29565,-29717,-688,-22345,4379,25148,5318,19393,-7056,-25543,12407,22148,-28508,21232,-7478,7788]},"CAB.upscale.bias":{"kind":"q16","dims":[4],"v":[39796,26180,-19919,-33559]},"iact2.conv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":454,"shift":26,"w":[30260,7013,-24283,28537,7621,20052,-19764,-4564,5301,5193,2659,-27611,10626,-22437,-18575,23064,-10322,1181,31941,12212,6655,-2097,-14244,5476,30355,-12647,-2269,64,-31024,-5284,-20744,-23373,16602,-3557,21999,16085]},"iact2.conv2.weight":{"kind":"conv","dims":[4,4,1,1],"mult":4096,"shift":29,"w":[-23275,23394,26778,-7690,-7528,-17967,694,22088,17873,-22939,30795,-17817,23542,-4826,5610,19353]},"conv3_t.weight":{"kind":"conv","dims":[16,4,1,1],"mult":16384,"shift":31,"w":[-29080,-31690,-30918,9194,-2974,19409,-29141,-28586,-18916,4773,4843,-11393,21727,-21091,-1664,16901,17813,-17897,4371,15942,-18962,19687,-8073,-28257,26277,-30898,-31921,18183,-6652,-5778,-29432,29554,-29258,19231,18495,21438,-12095,19346,12759,-27760,6634,-14273,-23568,21366,21606,-22141,19822,-24219,-19750,-22140,26346,3317,15573,-11408,29955,-2285,-14200,-22286,-19783,22385,-5408,-30672,-18574,-25106]},"conv3_t.bias":{"kind":"q16","dims":[16],"v":[-7236,63385,-52512,34405,18024,20552,-35945,-48041,30220,24916,37786,-42635,43354,-11470,3957,-6273]},"TAM.ds_conv.weight":{"kind":"conv","dims":[4,4,3,3],"mult":112,"shift":26,"w":[-19439,11304,14261,-13924,-24329,-16107,-23810,-13190,-2690,-19156,-1090,26409,18388,-524,7577,-14210,6901,2985,-24902,23536,14725,10902,-23631,-22679,-24712,21948,22763,-2125,19771,4748,-13883,-12458,8009,-18357,28656,-5027,-26876,-6871,-21934,29485,-9877,-25172,26628,15724,22192,12918,5865,5717,-3033,21460,25573,20042,14486,7652,4859,28056,8829,-26439,15209,-4628,-28517,-486,-4448,6147,-3077,18715,14949,16422,19340,26019,24300,-4015,-11598,-22835,-22845,-14271,28657,-25801,-29595,-19964,-12707,9669,16331,-8295,31059,9924,-27510,-20679,18309,-20009,-26879,16539,-27485,23238,-4323,18932,29375,28081,9106,17914,-5403,24191,30935,-9427,19884,10709,-22992,-5005,-15106,-13967,-4609,30847,-1732,-29137,-10103,-16951,-9589,-4495,-8740,-31863,-30509,9452,9467,20821,-1367,-5394,11511,5159,21272,-27803,1251,-13855,-12750,20855,15152,-17846,-32521,-4358,8088,-16945,-10133,-19410,-19811,1377]},"TAM.ds_conv.bias":{"kind":"q16","dims":[4],"v":[50696,36931,-52807,-32652]},"TAM.TABs.0.prep_data.norm1.weight":{"kind":"q16","dims":[4],"v":[124514,87437,85630,30931]},"TAM.TABs.0.prep_data.norm1.bias":{"kind":"q16","dims":[4],"v":[10895,10301,18573,-10535]},"TAM.TABs.0.prep_data.conv1.weight":{"kind":"conv","dims":[12,4,1,1],"mult":8192,"shift":29,"w":[-32343,-24490,-14715,5744,-5068,-37,-9605,-4719,-5755,10919,26167,28668,17139,11881,23319,-11092,29615,-12801,2189,22276,6627,-1311,19617,-15008,-23174,16860,23110,30205,-4645,-8079,18983,-6600,-24644,-9721,11681,13933,27032,-27640,-2239,-2365,-18883,-25880,1998,-18622,14449,-1810,-30424,18373]},"TAM.TABs.0.prep_data.conv2.weight":{"kind":"conv","dims":[12,1,3,3],"mult":1820,"shift":28,"w":[28441,22645,4078,-13927,-3969,2858,-17202,32142,-3687,-11652,-8011,-28083,-20166,651,19304,-22847,2778,-19096,-3863,-31681,-30153,-20196,-3894,4854,26879,-31539,15464,-2332,-4646,16792,15740,3263,5267,-12869,-29923,6276,-11427,-31724,27833,16034,10943,-8861,18460,-3229,16905,4850,18619,19678,22960,-31847,-26582,8436,-10660,14727,-14152,21035,27779,25164,322,-25376,5018,24889,9512,-18167,-16147,-12172,32462,-23213,-21587,-17998,-21273,13043,-29231,-22277,-24917,21727,-3716,-941,31538,25225,14363,-10076,15823,-20734,-2726,-19741,28201,8301,-15342,8806,27070,2512,22602,797,28257,24032,-25378,13105,-17847,28546,10284,-11036,-31289,-13150,26430,-5987,19007,19532]},"TAM.TABs.0.attn.temperature":{"kind":"q16","dims":[4],"v":[298389,205685,196212,487236]},"TAM.TABs.0.attn.project_out.weight":{"kind":"conv","dims":[4,4,1,1],"mult":16384,"shift":31,"w":[-5206,-25365,-980,10077,-11658,-3241,1809,10230,-15921,-17793,-7433,3148,9518,-8757,-23132,-11479]},"TAM.TABs.0.ffn.norm1.weight":{"kind":"q16","dims":[4],"v":[77423,118173,71086,115488]},"TAM.TABs.0.ffn.norm1.bias":{"kind":"q16","dims":[4],"v":[21288,-29165,3812,25880]},"TAM.TABs.0.ffn.project_in.weight":{"kind":"conv","dims":[4,4,1,1],"mult":4096,"shift":29,"w":[18454,-26673,-18110,-1327,19455,-31635,13893,23847,-24200,-27642,-4182,-1053,29762,20945,3890,-1784]},"TAM.TABs.0.ffn.dwconv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":455,"shift":27,"w":[-27289,2455,1145,-9035,-7938,-8926,15760,14910,-24597,-7423,9026,-31325,-31873,6836,-13549,-18620,-2646,2516,10187,-20116,-12504,-20771,27792,-26408,27217,1431,-3637,14174,7800,26668,1654,17062,32738,-27617,-19068,-30668]},"TAM.TABs.0.ffn.project_out.weight":{"kind":"conv","dims":[4,2,1,1],"mult":1024,"shift":26,"w":[1875,-21369,8712,-1844,-3946,28760,28085,-16942]},"TAM.TABs.1.prep_data.norm1.weight":{"kind":"q16","dims":[4],"v":[35209,105555,67002,26220]},"TAM.TABs.1.prep_data.norm1.bias":{"kind":"q16","dims":[4],"v":[-11225,31633,-25977,21595]},"TAM.TABs.1.prep_data.conv1.weight":{"kind":"conv","dims":[12,4,1,1],"mult":32768,"shift":31,"w":[-1634,21610,-22860,-16937,-12526,9097,8487,25440,23255,5157,21659,-8611,14627,-16727,31179,-11457,9666,15586,-19758,-825,21277,21809,-22214,-8136,-26402,-25004,15978,25050,29672,-10400,-29996,4195,21262,-921,19233,-24946,-21953,25671,-305,11406,31417,-14993,25326,2482,-28412,31759,8259,-14323]},"TAM.TABs.1.prep_data.conv2.weight":{"kind":"conv","dims":[12,1,3,3],"mult":910,"shift":27,"w":[-2197,-12792,-15032,-8567,-4709,2041,-17542,23143,17545,-4405,11402,-25561,-27020,-11133,-5879,17210,2146,-5449,6788,-10183,2965,17588,-5455,29411,-4638,16001,-6828,24925,-9498,-8184,5971,28055,12899,32380,-17411,-3569,19812,-24695,18999,30463,-30234,-3143,14239,-21872,-11958,7812,18021,-2330,-19219,-2852,-13740,-25278,1588,-13569,-30078,22763,12678,27436,31043,-16537,-4201,5033,-18168,-5927,32147,28306,24944,-31019,22014,19924,-13685,-10301,-16008,-20029,7731,-2657,-22330,-5439,-388,14695,32327,-26857,-4077,3624,25360,19918,-13423,-11775,-10728,29286,-24782,19530,-3534,18755,-23112,-24879,-3414,13132,-10723,9416,24791,15017,-1708,-21347,7542,-2167,-25733,5883]},"TAM.TABs.1.attn.temperature":{"kind":"q16","dims":[4],"v":[500388,67258,380716,384248]},"TAM.TABs.1.attn.project_out.weight":{"kind":"conv","dims":[4,4,1,1],"mult":32768,"shift":31,"w":[26728,-9909,-8391,-5092,-16610,22168,12568,11477,-1244,-1221,3233,-25198,-413,31452,28993,-14575]},"TAM.TABs.1.ffn.norm1.weight":{"kind":"q16","dims":[4],"v":[6738,92769,50967,86475]},"TAM.TABs.1.ffn.norm1.bias":{"kind":"q16","dims":[4],"v":[5215,-4240,32693,12737]},"TAM.TABs.1.ffn.project_in.weight":{"kind":"conv","dims":[4,4,1,1],"mult":1024,"shift":26,"w":[14129,11319,-4765,20774,901,4640,18650,27873,29403,-27640,-24609,-24464,-32167,-9167,-6763,-26532]},"TAM.TABs.1.ffn.dwconv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":910,"shift":27,"w":[-27499,-17411,18494,1605,-6770,15225,21913,-17222,-30852,-18693,9453,-29233,-19813,22910,6209,4178,6588,27381,-10925,-22131,-28808,30740,14356,24115,5302,-4335,-12173,2177,2311,-17977,-12239,-22176,25442,31621,-20591,-22259]},"TAM.TABs.1.ffn.project_out.weight":{"kind":"conv","dims":[4,2,1,1],"mult":2048,"shift":27,"w":[-5197,-24395,-2800,26408,20667,2301,-17742,11635]},"TAM.us_conv.weight":{"kind":"conv","dims":[4,4,3,3],"mult":112,"shift":26,"w":[-26959,-23458,8578,-1751,-13144,-25537,26612,-25430,-17247,28113,21558,568,-30554,-5168,5227,31904,-24489,-3412,8373,8218,12102,10664,-9813,-6375,19681,5543,-14552,2552,-27064,6787,22336,4944,30909,26165,-27337,-30423,-27154,-32188,-16549,-24629,10233,-28061,21540,288,14232,20942,-905,27338,-19490,649,0,30903,-12095,23395,-27948,-27539,-25888,28079,-6337,-642,26775,-15955,-15094,8548,-18538,4262,4177,8653,-23263,30036,-5002,-19761,-4780,-13242,-4995,5768,-2573,5684,-10802,-30563,19165,10774,-6179,9797,24652,-13743,25257,22947,-11938,-4991,2063,-1529,2040,11872,-5054,-24352,1447,11900,-3884,-12812,5406,15407,8501,28587,31997,-524,18540,-6480,21553,25954,11367,16978,-31733,8179,3990,25907,-23909,7872,-31493,-32173,22298,-7666,-16575,-2330,11721,-16281,3381,-21368,13144,-940,-13342,26242,-12807,-24605,24025,11153,-12935,18046,21556,-11739,-20975,-16533,26139,-12427]},"TAM.us_conv.bias":{"kind":"q16","dims":[4],"v":[-29043,-46175,-34365,-12593]},"iact3.conv.weight":{"kind":"conv","dims":[4,1,3,3],"mult":910,"shift":27,"w":[21322,-10830,-23178,-19118,12891,22522,20994,-14313,-9115,-18427,24163,-25092,-28054,-25028,-27680,23483,17429,-32198,31677,13011,1394,4347,-32304,-23466,9660,31971,-15972,-17975,21195,17975,11021,-29118,22079,13008,-30884,-8393]},"iact3.conv2.weight":{"kind":"conv","dims":[4,4,1,1],"mult":2048,"shift":27,"w":[5561,-8513,-18273,27773,-28782,30607,27433,13513,-2015,-15163,7589,25478,7953,-9861,28046,2675]},"conv4_t.weight":{"kind":"conv","dims":[4,1,3,3],"mult":910,"shift":30,"w":[-29010,18926,16728,25500,-19689,8064,22452,12316,-24333,30909,728,-32470,3232,30625,8698,-13745,2203,25735,-17057,-17777,14927,-3893,17374,-23330,-30823,27582,-6313,-23362,-2213,12599,-27680,19059,-24768,3750,17358,-16904]},"conv4_t.bias":{"kind":"q16","dims":[1],"v":[-62274]}} diff --git a/wai/registry/capabilities.json b/wai/registry/capabilities.json index e0b23761f..ee309ef99 100644 --- a/wai/registry/capabilities.json +++ b/wai/registry/capabilities.json @@ -547,9 +547,13 @@ "registered": "2026-06-13", "ops": { "set": "wai-ops/1", - "profile": "acc32", + "profile": "acc64", "subset": "full", - "lowering": "jpegai-int/1" + "lowering": "jpegai-int/1", + "role_profiles": { + "hs_y": "acc32", + "hs_uv": "acc32" + } } }, { diff --git a/wai/registry/capabilities.schema.json b/wai/registry/capabilities.schema.json index 9d5c528a2..f436b2c2e 100644 --- a/wai/registry/capabilities.schema.json +++ b/wai/registry/capabilities.schema.json @@ -152,6 +152,9 @@ "lowering": [ "profile", "subset" + ], + "role_profiles": [ + "profile" ] }, "anyOf": [ @@ -185,6 +188,17 @@ "lowering": { "type": "string" }, + "role_profiles": { + "type": "object", + "description": "Roles of the lowering whose graphs every conforming set holds to a stronger profile than `profile`, each with that profile (extensions/integer-operators.md §11).", + "minProperties": 1, + "additionalProperties": { + "enum": [ + "acc32", + "acc64" + ] + } + }, "stage": { "type": "object", "additionalProperties": false, diff --git a/wai/tools/wai_ops_check.py b/wai/tools/wai_ops_check.py index 89c3cdc75..463f6229b 100644 --- a/wai/tools/wai_ops_check.py +++ b/wai/tools/wai_ops_check.py @@ -23,7 +23,9 @@ extension's text (and, for the source forms it lowers, integer-payloads), it: for every set of index.json and the two falsification sets of section 14.3, each of which must fail the profile it claims. The sets of external.json are certified too when their files are given (--external NAME=DIR); otherwise their - certificates are checked for what needs no set. + certificates are checked for what needs no set. Either way, an entry's verdict + must meet its `profile`, and each graph its `role_profiles` names must meet its + own profile (section 11). python3 -I tools/wai_ops_check.py ops-conformance # check python3 -I tools/wai_ops_check.py ops-conformance --write DIR # also write the files @@ -32,14 +34,25 @@ extension's text (and, for the source forms it lowers, integer-payloads), it: Exit status 1 on any difference or failure. python3 -I tools/wai_ops_check.py certify --capability CAP --lowering ID \\ - [--c N] --member NAME=PATH ... [--profile P] [--out FILE] [--check FILE] + [--c N] --member NAME=PATH ... [--profile P] [--role-profile ROLE=P ...] \\ + [--out FILE] [--check FILE] python3 -I tools/wai_ops_check.py certify --whg1 ROLE=PATH ... [--profile P] ... certifies one set, or WHG1 graphs on their own, writing the certificate to FILE or -to stdout. Exit status: 0 the verdict meets the profile (acc64 by default); 1 it -does not, and the certificate is still written; 2 a graph is malformed or refused -at load; 3 --check finds a difference, and the first differing path is printed with -both values; 4 the lowering refuses the set; 5 usage. +to stdout. --role-profile (repeatable) holds the graph of one role to a profile of +its own, as a capability's `role_profiles` does (section 11): that graph meets it +when its inputs' and scalars' declared ranges meet the profile's tensor width and +every node of it fits the profile (section 8.5). Exit status: 0 the verdict meets +the profile (acc64 by default) and each named graph meets its own; 1 one does not, +and the certificate is still written; 2 a graph is malformed or refused at load; +3 --check finds a difference, and the first differing path is printed with both +values; 4 the lowering refuses the set; 5 usage, or a --role-profile role that +names no graph. + +The lowering jpegai-int/1 (section 13.6) reads eleven members, norm.json and +weights/{hs_y,hs_uv,hyp_y,hyp_uv,mcm0_y,mcm1_y,mcm2_y,mcm3_y,synth_y,synth_uv}.json, +and writes six roles: hs_y and hs_uv (13.6.1), rec_y, rec_uv, syn_y and syn_uv +(13.6.2). Any other member is part of the set's digest and is not read. """ import hashlib import json @@ -1595,10 +1608,13 @@ def canonical(v): return cw(v).encode("ascii") -def certificate(capability, lowering, set_sha256, roles): +def certificate(capability, lowering, set_sha256, roles, role_profiles=None): """The bounds certificate of section 8.5 for the graphs [(role, WHG1 bytes)], in the order given: (its canonical bytes, its verdict). Each graph passes load steps - 1-7 and the bounds pass, or the Refuse of the step that fails propagates.""" + 1-7 and the bounds pass, or the Refuse of the step that fails propagates. With + `role_profiles` ({role: profile}, section 11), it returns a third value, the + failure of section 8.5 of each named graph that does not meet its profile, judged + on that graph alone ({role: failure}; empty when every one meets it).""" gs = [(name, b, load_graph(b)) for name, b in roles] v = verdict_of([(name, g) for name, _, g in gs]) cert = { @@ -1609,7 +1625,17 @@ def certificate(capability, lowering, set_sha256, roles): "set_sha256": set_sha256, "verdict": v, } - return canonical(cert), v + if role_profiles is None: + return canonical(cert), v + fails = {} + for name, p in role_profiles.items(): + # A graph meets a profile when its inputs' and scalars' declared ranges meet + # the profile's tensor width and every node of it fits the profile: the + # verdict of section 8.5 over that graph alone. + rv = verdict_of([(n, g) for n, _, g in gs if n == name]) + if not rv[p]: + fails[name] = rv[p + "_first_failure"] + return canonical(cert), v, fails ABSENT = "(absent)" @@ -2118,6 +2144,12 @@ class WB: self.ops.append((code, ins, [t], params)) return t + def op_n(self, code, ins, out_recs, params): + """An operator of several outputs, which take the next indices in their order.""" + ts = [self.tensor(*r) for r in out_recs] + self.ops.append((code, ins, ts, params)) + return ts + def bytes(self, outputs): b = bytearray(b"WHG1") b += bytes([1, 1, 0, 0]) @@ -2454,8 +2486,346 @@ def world_lower(tb, gb, c): return [("T", wb.bytes([out])), ("g_s", net_graph(gn, True))] -def jpegai_lower(norm_b, hy_b, huv_b): - """jpegai-int/1, section 13.6.1.""" +JPEGAI_MEMBERS = ( + "norm.json", "weights/hs_y.json", "weights/hs_uv.json", "weights/hyp_y.json", "weights/hyp_uv.json", + "weights/mcm0_y.json", "weights/mcm1_y.json", "weights/mcm2_y.json", "weights/mcm3_y.json", + "weights/synth_y.json", "weights/synth_uv.json", +) + + +def jpegai_lower(files): + """jpegai-int/1 (section 13.6): the scale graphs of 13.6.1, then the graphs of + 13.6.2, in section 13.0's role order. `files` maps member names to bytes; a member + the lowering reads that the set lacks refuses it. Other members are not read.""" + if any(m not in files for m in JPEGAI_MEMBERS): + lref() + roles = jpegai_scale_lower(files["norm.json"], files["weights/hs_y.json"], files["weights/hs_uv.json"]) + W = {k: q16_file(files["weights/%s.json" % k]) for k in ("hyp_y", "hyp_uv", "mcm0_y", "mcm1_y", "mcm2_y", "mcm3_y", "synth_y", "synth_uv")} + roles.append(("rec_y", rec_graph(W["hyp_y"], [W["mcm%d_y" % i] for i in range(4)], 160))) + roles.append(("rec_uv", rec_graph(W["hyp_uv"], None, 96))) + roles.append(("syn_y", syn_y_graph(W["synth_y"]))) + roles.append(("syn_uv", syn_uv_graph(W["synth_uv"]))) + return roles + + +def q16_file(b): + """One weights file of section 13.6.2, *The members*: {name: member} for each + member whose value is an object of kind "conv" or "q16"; every other member is + ignored. Refused: a file that is not a JSON object, two members of one object with + one name (anywhere in the file), and a member of either kind that lacks one of its + fields or holds another value.""" + def pairs(ps): + if len({k for k, _ in ps}) != len(ps): + lref() + return dict(ps) + + try: + root = json.loads(b, object_pairs_hook=pairs) + except ValueError: + lref() + if not isinstance(root, dict): + lref() + isint = lambda v: isinstance(v, int) and not isinstance(v, bool) + out = {} + for name, m in root.items(): + if not isinstance(m, dict) or m.get("kind") not in ("conv", "q16"): + continue + if m["kind"] == "conv": + dims, w, mult, shift = m.get("dims"), m.get("w"), m.get("mult"), m.get("shift") + if not isinstance(dims, list) or not all(isint(d) and d >= 0 for d in dims): + lref() + n = 1 + for d in dims: + n *= d + if not isinstance(w, list) or len(w) != n or not all(isint(x) and I64_MIN <= x <= I64_MAX for x in w): + lref() + if not isint(mult) or not I64_MIN <= mult <= I64_MAX or not isint(shift) or not 0 <= shift <= 127: + lref() + out[name] = {"kind": "conv", "dims": dims, "w": w, "mult": mult, "shift": shift} + else: + v = m.get("v") + if not isinstance(v, list) or not all(isint(x) and I64_MIN <= x <= I64_MAX for x in v): + lref() + out[name] = {"kind": "q16", "v": v} + return out + + +A32 = (2, I32_MIN, I32_MAX) +Q16_RQ = rq_block(0, 0, [], 0, 0, [16], 1, [], 0) # mul: no multiplier, shift 16, no bias, floor +ATT_RQ = rq_block(1, 0, [], 0, 0, [16], 1, [], 0) # gram, apply: shift 16, half_up +SUBLATTICE = bytes([0, 3, 1, 2]) # (0,0), (1,1), (0,1), (1,0), each 2a + b + + +class Q16Net: + """The blocks of section 13.6.2 over one graph under construction, reading the + modules of the weights file F (which a graph may switch, as rec_y does).""" + + def __init__(self): + self.wb = WB() + self.F = {} + + def c(self, x): + return self.wb.tensors[x][0] + + def weight(self, m): + e = self.F.get(m + ".weight") + if e is None or e["kind"] != "conv": + lref() + return e + + def q16(self, name): + e = self.F.get(name) + if e is None or e["kind"] != "q16": + lref() + return e["v"] + + def bias(self, m, cout): + """m.bias, cout values, or None when the file has none.""" + e = self.F.get(m + ".bias") + if e is None: + return None + if e["kind"] != "q16" or len(e["v"]) != cout: + lref() + return e["v"] + + def rq(self, e, shift, bias): + """C's RQ: floor; one multiplier; one shift; a post bias, or none.""" + mult = e["mult"] + if bias is None: + return rq_block(0, 0, [mult], 1, smallest([mult], (4, 8)), [shift], 1, [], 0) + return rq_block(0, 2, [mult], 1, smallest([mult], (4, 8)), [shift], 1, bias, smallest(bias, (4, 8))) + + def wbytes(self, w): + if any(not I64_MIN <= v <= I64_MAX for v in w): + lref() + return smallest(w, (1, 2, 4, 8)) + + def conv(self, x, m, k, s, p, g, shift=None): + """C(m; k, s, p, g); g = "dw" is groups = c, with cout = c.""" + c = self.c(x) + e = self.weight(m) + dims = e["dims"] + dw = g == "dw" + if dw: + g = c + if len(dims) != 4 or c % g: + lref() + cout = dims[0] + if cout == 0 or cout % g or dims != [cout, c // g, k, k] or (dw and cout != c): + lref() + rq = self.rq(e, e["shift"] if shift is None else shift, self.bias(m, cout)) + w = e["w"] + return self.wb.op(0x01, [x], (cout,) + A32, p_conv(cout, k, k, s, s, p, p, g, self.wbytes(w), rq, w)) + + def convt(self, x, m, k, op_): + """T(m; k, op): stride 2, padding 1, output padding op, with C's RQ.""" + c = self.c(x) + e = self.weight(m) + dims = e["dims"] + if len(dims) != 4 or dims[0] != c or dims[1] == 0 or dims[2:] != [k, k]: + lref() + cout = dims[1] + rq = self.rq(e, e["shift"], self.bias(m, cout)) + w = e["w"] + return self.wb.op(0x11, [x], (cout,) + A32, p_convt(cout, k, k, 2, 2, 1, 1, op_, op_, self.wbytes(w), rq, w)) + + def same(self, *xs): + """The inputs of each mul and each add have one channel count.""" + if len({self.c(x) for x in xs}) != 1: + lref() + return self.c(xs[0]) + + def add(self, a, b): + return self.wb.op(0x05, [a, b], (self.same(a, b),) + A32, b"") + + def mul(self, a, b): + return self.wb.op(0x10, [a, b], (self.same(a, b),) + A32, Q16_RQ) + + def unary(self, code, x, params=b""): + return self.wb.op(code, [x], (self.c(x),), params) + + def relu6(self, x): + return self.unary(0x0B, x, p_clamp(0, 6 << 16)) + + def split(self, x, start, count): + if start + count > self.c(x): + lref() + return self.wb.op(0x08, [x], (count,), struct.pack("= len(args) or (a not in opts and a not in ("--member", "--whg1")): + if k + 1 >= len(args) or (a not in opts and a not in ("--member", "--whg1", "--role-profile")): print(CERTIFY_USAGE, file=sys.stderr) return 5 v = args[k + 1] - if a in ("--member", "--whg1"): + if a in ("--member", "--whg1", "--role-profile"): if "=" not in v: print(CERTIFY_USAGE, file=sys.stderr) return 5 - (members if a == "--member" else graphs).append(tuple(v.split("=", 1))) + name, val = v.split("=", 1) + if a == "--role-profile": + if name in role_profiles or val not in PROFILES: + print(CERTIFY_USAGE, file=sys.stderr) + return 5 + role_profiles[name] = val + else: + (members if a == "--member" else graphs).append((name, val)) else: opts[a] = v k += 2 @@ -2786,8 +3178,13 @@ def certify_main(args): except OSError as ex: print(ex, file=sys.stderr) return 5 + unknown = sorted(set(role_profiles) - {name for name, _ in roles}) + if unknown: + print("--role-profile names no graph of the set: %s" % ", ".join(unknown), file=sys.stderr) + print(CERTIFY_USAGE, file=sys.stderr) + return 5 try: - got, v = certificate(capability, lowering, digest, roles) + got, v, role_fails = certificate(capability, lowering, digest, roles, role_profiles) except Refuse as ex: print("a graph is refused at load: %s" % ex.code, file=sys.stderr) return 2 @@ -2802,18 +3199,29 @@ def certify_main(args): if got != want: print("--check: %s" % first_difference(got, want), file=sys.stderr) return 3 + status = 0 if not v[p]: print("the verdict does not meet %s: %s" % (p, cw(v[p + "_first_failure"])), file=sys.stderr) - return 1 + status = 1 + for name, rp in role_profiles.items(): + if name in role_fails: + print("graph %s does not meet %s: %s" % (name, rp, cw(role_fails[name])), file=sys.stderr) + status = 1 + else: + print("graph %s meets %s" % (name, rp), file=sys.stderr) + if status: + return status print("the verdict meets %s: %s" % (p, cw(v)), file=sys.stderr) return 0 CERTIFY_USAGE = """usage: wai_ops_check.py certify --capability CAP --lowering ID [--c N] --member NAME=PATH ... - [--profile acc32|acc64] [--out FILE] [--check FILE] + [--profile acc32|acc64] [--role-profile ROLE=acc32|acc64 ...] + [--out FILE] [--check FILE] wai_ops_check.py certify --whg1 ROLE=PATH ... [--capability CAP] - [--profile acc32|acc64] [--out FILE] [--check FILE]""" + [--profile acc32|acc64] [--role-profile ROLE=acc32|acc64 ...] + [--out FILE] [--check FILE]""" def main(argv): diff --git a/wai/wai-ops/src/generate/graphs.rs b/wai/wai-ops/src/generate/graphs.rs index 2a7bdcfb2..57d4c9f32 100644 --- a/wai/wai-ops/src/generate/graphs.rs +++ b/wai/wai-ops/src/generate/graphs.rs @@ -537,6 +537,25 @@ pub fn lowered(name: &'static str, set: &str, l: &Lowered) -> File { let mut r = Rng::named(name); for (role, gr) in &l.roles { let b = gr.to_bytes(); + // The graphs of `jpegai-int/1` §13.6.2 take more than one input, or none of their + // own size: each decode gives every data input, at a size well below the declared + // one (the outputs are a whole picture's), and one decode puts input 0 one past + // its range. + if matches!(*role, "rec_y" | "rec_uv" | "syn_y" | "syn_uv") { + let sizes: Vec> = if role.starts_with("rec") { vec![vec![(1, 1), (4, 4)], vec![(2, 1), (8, 4)]] } else { vec![vec![(2, 2); gr.inputs.len()]] }; + let inputs = |r: &mut Rng, sz: &[(u32, u32)]| -> Vec { + gr.inputs.iter().zip(sz).map(|(i, &(h, w))| { + let rec = gr.tensors[i.tensor as usize]; + tensor(r, rec.channels, h, w, rec.lo.max(-300), rec.hi.min(300)) + }).collect() + }; + let ds: Vec = sizes.iter().map(|sz| Decode::new(inputs(&mut r, sz), vec![])).collect(); + g.emit(&format!("{set}/{role}"), &b, ds); + let mut xs = inputs(&mut r, &sizes[0]); + xs[0].data[0] = gr.tensors[gr.inputs[0].tensor as usize].hi + 1; + g.emit(&format!("{set}/{role}/range"), &b, vec![Decode::new(xs, vec![])]); + continue; + } let i0 = gr.inputs[0]; let rec = gr.tensors[i0.tensor as usize]; let c = rec.channels; diff --git a/wai/wai-ops/src/generate/sets.rs b/wai/wai-ops/src/generate/sets.rs index 15881d6fa..de606945c 100644 --- a/wai/wai-ops/src/generate/sets.rs +++ b/wai/wai-ops/src/generate/sets.rs @@ -109,16 +109,21 @@ pub fn synthetic() -> Vec<(Set, Vec<(&'static str, Vec)>)> { vec![("T.whm", t), ("g_s.whm", g)], )); let (norm, hy, huv) = jpegai_bundle(&mut r); + // The integer networks of §13.6.2, from their own sequence, at small widths. + let nets = jpegai_nets(&mut Rng::named("jpegai_nets")); + let mut files: Vec<(&'static str, Vec)> = vec![("norm.json", norm), ("weights/hs_uv.json", huv), ("weights/hs_y.json", hy)]; + files.extend(lower::jpegai_nets::NET_MEMBERS.iter().copied().zip(nets)); + files.sort_by(|a, b| a.0.as_bytes().cmp(b.0.as_bytes())); v.push(( Set { name: "jpegai", capability: "wai.image.jpegai", lowering: "jpegai-int/1", - members: vec![("norm.json", base("jpegai", "norm.json")), ("weights/hs_uv.json", base("jpegai", "weights/hs_uv.json")), ("weights/hs_y.json", base("jpegai", "weights/hs_y.json"))], + members: files.iter().map(|(n, _)| (*n, base("jpegai", n))).collect(), c: None, note: "synthetic", }, - vec![("norm.json", norm), ("weights/hs_uv.json", huv), ("weights/hs_y.json", hy)], + files, )); v } @@ -200,7 +205,14 @@ pub fn lower_set(s: &Set, m: &[(&str, Vec)]) -> Result { "wam1/1" => lower::wam1(get("model.wam")?).map(|g| Lowered { roles: vec![("g_s", g)] }), "wmb1/1" => lower::wmb1(get("model.wmb")?), "world/1" => lower::world(get("T.whm")?, get("g_s.whm")?, s.c.unwrap_or(0)), - "jpegai-int/1" => lower::jpegai(get("norm.json")?, get("weights/hs_y.json")?, get("weights/hs_uv.json")?), + "jpegai-int/1" => { + let names = ["norm.json", "weights/hs_y.json", "weights/hs_uv.json"].into_iter().chain(lower::jpegai_nets::NET_MEMBERS); + for n in names { + get(n)?; + } + let b = lower::JpegaiBytes::from_members(|n| m.iter().find(|(k, _)| *k == n).map(|(_, b)| b.as_slice())).ok_or_else(|| format!("{}: a member is missing", s.name))?; + lower::jpegai(&b) + } _ => return Err(format!("{}: no lowering {}", s.name, s.lowering)), }; r.map_err(|e| format!("{}: the lowering refused ({:?})", s.name, e)) @@ -497,6 +509,126 @@ fn jpegai_bundle(r: &mut Rng) -> (Vec, Vec, Vec) { (norm.into_bytes(), hy, huv) } +/// The eight weight files of §13.6.2 at small widths, in +/// [`lower::jpegai_nets::NET_MEMBERS`]' order: hyper decoders of width 2, context stages +/// of width 2 (their first convolutions 5 wide, for the groups of 5), and synthesis +/// networks of width 4 (four heads of one channel each). Each convolution has its own +/// shift, so the TAB rule (each half takes its first convolution's) is visible in the +/// lowered bytes, and a multiplier that keeps its input's magnitude, so that the graphs' +/// vectors decode through every operator rather than refuse past `A32`. +fn jpegai_nets(r: &mut Rng) -> Vec> { + struct F(Vec); + impl F { + /// `m.weight`, its multiplier set so that a weight of 32767 times its `taps` + /// products keeps the input's magnitude: the graphs' decodes complete. + fn weight(&mut self, r: &mut Rng, name: &str, dims: [usize; 4], taps: usize) { + let n: usize = dims.iter().product(); + let d: Vec = dims.iter().map(|&x| x as i64).collect(); + let shift = r.int(26, 31); + let mult = ((1i64 << shift) / (32767 * taps as i64)).max(1) * r.int(1, 2); + self.0.push(format!("\"{name}.weight\":{{\"kind\":\"conv\",\"dims\":{},\"mult\":{},\"shift\":{},\"w\":{}}}", ints(&d), mult, shift, ints(&rv(r, n, 32767)))); + } + fn conv(&mut self, r: &mut Rng, name: &str, dims: [usize; 4], bias: bool) { + self.weight(r, name, dims, dims[1] * dims[2] * dims[3]); + if bias { + self.q16(&format!("{name}.bias"), &rv(r, dims[0], 1 << 16)); + } + } + fn convt(&mut self, r: &mut Rng, name: &str, dims: [usize; 4]) { + self.weight(r, name, dims, dims[0] * dims[2] * dims[3]); + self.q16(&format!("{name}.bias"), &rv(r, dims[1], 1 << 16)); + } + fn q16(&mut self, name: &str, v: &[i64]) { + self.0.push(format!("\"{name}\":{{\"kind\":\"q16\",\"dims\":[{}],\"v\":{}}}", v.len(), ints(v))); + } + fn res(&mut self, r: &mut Rng, m: &str, c: usize, mid: usize) { + self.conv(r, &format!("{m}.conv1"), [mid, c, 3, 3], true); + self.conv(r, &format!("{m}.conv2"), [c, mid, 3, 3], true); + } + fn gate(&mut self, r: &mut Rng, m: &str, c: usize) { + self.conv(r, &format!("{m}.conv"), [c, c / 4, 3, 3], false); + self.conv(r, &format!("{m}.conv2"), [c, c, 1, 1], false); + } + fn cab(&mut self, r: &mut Rng, c: usize) { + self.res(r, "CAB.residual_trunk.0", c, 2); + self.res(r, "CAB.residual_trunk.1", c, 2); + self.conv(r, "CAB.subscale", [c, c, 3, 3], true); + self.res(r, "CAB.residual_mask2.0", c, 2); + self.res(r, "CAB.residual_mask3.0", c, 2); + self.convt(r, "CAB.upscale", [c, c, 3, 3]); + } + fn tab(&mut self, r: &mut Rng, m: &str, c: usize, hid: usize) { + let pos = |r: &mut Rng, n: usize| -> Vec { (0..n).map(|_| r.int(0, 1 << 17)).collect() }; + let g = pos(r, c); + self.q16(&format!("{m}.prep_data.norm1.weight"), &g); + self.q16(&format!("{m}.prep_data.norm1.bias"), &rv(r, c, 1 << 15)); + self.conv(r, &format!("{m}.prep_data.conv1"), [3 * c, c, 1, 1], false); + self.conv(r, &format!("{m}.prep_data.conv2"), [3 * c, 1, 3, 3], false); + let t: Vec = (0..4).map(|_| r.int(1 << 16, 1 << 19)).collect(); + self.q16(&format!("{m}.attn.temperature"), &t); + self.conv(r, &format!("{m}.attn.project_out"), [c, c, 1, 1], false); + let g = pos(r, c); + self.q16(&format!("{m}.ffn.norm1.weight"), &g); + self.q16(&format!("{m}.ffn.norm1.bias"), &rv(r, c, 1 << 15)); + self.conv(r, &format!("{m}.ffn.project_in"), [2 * hid, c, 1, 1], false); + self.conv(r, &format!("{m}.ffn.dwconv"), [2 * hid, 1, 3, 3], false); + self.conv(r, &format!("{m}.ffn.project_out"), [c, hid, 1, 1], false); + } + fn done(self) -> Vec { + format!("{{{}}}\n", self.0.join(",")).into_bytes() + } + } + let mut out = Vec::new(); + for cz in [160usize, 96] { + let mut f = F(Vec::new()); + f.conv(r, "conv1", [2, cz, 1, 1], false); + f.convt(r, "conv2", [2, 2, 4, 4]); + f.conv(r, "conv3", [2, 2, 3, 3], true); + f.conv(r, "conv4", [4 * cz, 2, 3, 3], true); + out.push(f.done()); + } + for i in 0..4usize { + let mut f = F(Vec::new()); + let cin = if i == 0 { 160 } else { + f.conv(r, "conv.0", [5, 160 * i, 1, 1], false); + f.conv(r, "conv.1", [5, 1, 3, 3], true); + 165 + }; + f.conv(r, "fusion_pred_net.conv1", [2, cin, 1, 1], false); + f.conv(r, "fusion_pred_net.conv2", [2, 2, 1, 1], false); + f.conv(r, "fusion_pred_net.conv3", [160, 2, 1, 1], false); + out.push(f.done()); + } + let w = 4usize; + let mut f = F(Vec::new()); + f.res(r, "first_stage.0.0", 160, 2); + f.convt(r, "first_stage.1", [160, w, 3, 3]); + f.gate(r, "first_stage.2", w); + f.convt(r, "conv2_t", [w, w, 3, 3]); + f.cab(r, w); + f.gate(r, "iact2", w); + f.conv(r, "conv3_t", [4 * w, w, 1, 1], true); + f.conv(r, "TAM.ds_conv", [w, w, 3, 3], true); + f.tab(r, "TAM.TABs.0", w, 2); + f.tab(r, "TAM.TABs.1", w, 2); + f.convt(r, "TAM.us_conv", [w, w, 3, 3]); + f.gate(r, "iact3", w); + f.convt(r, "conv4_t", [w, 1, 3, 3]); + out.push(f.done()); + let mut f = F(Vec::new()); + f.conv(r, "first_stage.conv1", [2, 256, 3, 3], true); + f.convt(r, "conv2_t", [98, w, 3, 3]); + f.cab(r, w); + f.gate(r, "iact2", w); + f.conv(r, "conv3_t", [4 * w, w, 1, 1], true); + f.tab(r, "TAM.TABs.0", w, 2); + f.tab(r, "TAM.TABs.1", w, 2); + f.gate(r, "iact3", w); + f.convt(r, "conv4_t", [w, 8, 3, 3]); + out.push(f.done()); + out +} + /// Write the index (`certificates/index.json`): pretty enough to read, and /// canonical in its member order. /// The entry of a falsification set: an index entry with the profile it is checked diff --git a/wai/wai-ops/src/lower/jpegai.rs b/wai/wai-ops/src/lower/jpegai.rs index 0e5340f80..84172dd43 100644 --- a/wai/wai-ops/src/lower/jpegai.rs +++ b/wai/wai-ops/src/lower/jpegai.rs @@ -1,10 +1,12 @@ -//! `jpegai-int/1` (§13.6.1): the scale graphs `hs_y` and `hs_uv` of -//! `wai.image.jpegai`, from the bundle's `norm.json` and `weights/hs_{y,uv}.json`. +//! `jpegai-int/1`: the integer stages of `wai.image.jpegai`. This module lowers the +//! scale path (§13.6.1), the graphs `hs_y` and `hs_uv`, from the bundle's `norm.json` +//! and `weights/hs_{y,uv}.json`; [`super::jpegai_nets`] lowers the other integer +//! networks (§13.6.2), and [`jpegai`] writes the six graphs in §13.0's role order. //! -//! [`jpegai`] lowers the members' bytes. A decoder that holds the members parsed lowers -//! them from that form ([`jpegai_net`], [`jpegai_net_loaded`]), which is -//! [`parse_jpegai`] of those bytes: the graphs are the ones [`jpegai`] writes, and the -//! refusals are the same. +//! [`jpegai_scale`] lowers the scale path's members' bytes. A decoder that holds the +//! members parsed lowers them from that form ([`jpegai_net`], [`jpegai_net_loaded`]), +//! which is [`parse_jpegai`] of those bytes: the graphs are the ones [`jpegai_scale`] +//! writes, and the refusals are the same. use alloc::vec; use alloc::vec::Vec; @@ -222,11 +224,45 @@ fn graphs(net: JpegaiNet) -> Res<(Graph, Graph)> { } /// Lower a `wai.image.jpegai` bundle's scale path: `hs_y`, then `hs_uv`. -pub fn jpegai(norm: &[u8], hs_y: &[u8], hs_uv: &[u8]) -> Res { +pub fn jpegai_scale(norm: &[u8], hs_y: &[u8], hs_uv: &[u8]) -> Res { let (y, uv) = graphs(parse_jpegai(norm, hs_y, hs_uv)?)?; Ok(Lowered { roles: vec![("hs_y", y), ("hs_uv", uv)] }) } +/// The members of a `wai.image.jpegai` bundle that `jpegai-int/1` reads, as bytes: +/// `norm.json`, `weights/hs_y.json`, `weights/hs_uv.json`, then the eight files of +/// [`super::jpegai_nets::NET_MEMBERS`] in that order. +#[derive(Clone, Copy, Debug)] +pub struct JpegaiBytes<'a> { + pub norm: &'a [u8], + pub hs_y: &'a [u8], + pub hs_uv: &'a [u8], + pub nets: [&'a [u8]; 8], +} + +impl<'a> JpegaiBytes<'a> { + /// Every member the lowering reads, from `get` by its name in the set + /// (`norm.json`, `weights/…`); `None` when one is missing. + pub fn from_members(get: impl Fn(&str) -> Option<&'a [u8]>) -> Option> { + let n = super::jpegai_nets::NET_MEMBERS; + Some(JpegaiBytes { + norm: get("norm.json")?, + hs_y: get("weights/hs_y.json")?, + hs_uv: get("weights/hs_uv.json")?, + nets: [get(n[0])?, get(n[1])?, get(n[2])?, get(n[3])?, get(n[4])?, get(n[5])?, get(n[6])?, get(n[7])?], + }) + } +} + +/// Lower a `wai.image.jpegai` bundle: the scale path `hs_y` and `hs_uv` (§13.6.1), then +/// `rec_y`, `rec_uv`, `syn_y` and `syn_uv` (§13.6.2). +pub fn jpegai(b: &JpegaiBytes<'_>) -> Res { + let mut l = jpegai_scale(b.norm, b.hs_y, b.hs_uv)?; + let nets = super::jpegai_nets::nets_graphs(super::jpegai_nets::parse_nets(b.nets)?)?; + l.roles.extend(super::jpegai_nets::NET_ROLES.iter().copied().zip(nets)); + Ok(l) +} + /// [`jpegai`] of a bundle already parsed ([`parse_jpegai`] of its bytes, or the same /// members from another parser): the graphs [`jpegai`] writes from those bytes, and /// its refusals. diff --git a/wai/wai-ops/src/lower/jpegai_nets.rs b/wai/wai-ops/src/lower/jpegai_nets.rs new file mode 100644 index 000000000..5af7a72f0 --- /dev/null +++ b/wai/wai-ops/src/lower/jpegai_nets.rs @@ -0,0 +1,550 @@ +//! `jpegai-int/1` (§13.6.2): the other integer networks of `wai.image.jpegai`, the +//! hyper decoder, the four context stages and the synthesis, as the graphs `rec_y`, +//! `rec_uv`, `syn_y` and `syn_uv`, from the bundle's `weights/hyp_{y,uv}.json`, +//! `weights/mcm{0,1,2,3}_y.json` and `weights/synth_{y,uv}.json`. +//! +//! [`parse_ptq`] reads one weight file's members (§13.6.2, *The members*). A decoder that +//! holds the files parsed another way converts them to [`PtqNet`] and lowers that, which +//! is the lowering of the bytes. Every tensor these graphs write that an operator can +//! grow (the output of a convolution, a transposed convolution, an addition, a product, +//! a layer normalisation, an attention contraction or a scale) has the policy +//! `check [−2^31, 2^31 − 1]`, and so does every input but the hyper-latent. + +use alloc::collections::BTreeMap; +use alloc::format; +use alloc::string::String; +use alloc::vec; +use alloc::vec::Vec; + +use super::{Builder, Lowered, Res, refuse}; +use crate::bounds::Profile; +use crate::graph::{BiasKind, Graph, Loaded, Params, Round, Rq, TensorRec, opcode, smallest_width}; +use crate::json::{self, Value}; + +/// The range every checked activation of these graphs keeps to: it fits i32. +pub const A32: (i64, i64) = (i32::MIN as i64, i32::MAX as i64); +/// `1.0` in Q16. +pub const ONE: i64 = 1 << 16; +/// ReLU6's upper end, `6·2^16`. +pub const RELU6: i64 = 6 << 16; +/// The `ε` of every layer and L2 normalisation, `⌊10^−5·2^32⌋`. +pub const EPS: u64 = 42949; +/// The heads of every channel attention. +pub const HEADS: u32 = 4; +/// The denormalisation's bias, `127·2^16 + 2^15`. +pub const DENORM_BIAS: i64 = 127 * ONE + ONE / 2; +/// The denormalisation's output range, `[0, 255·2^16]`. +pub const DENORM_HI: i64 = 255 * ONE; +/// The 2×2 sub-lattices in stage order, `(0,0), (1,1), (0,1), (1,0)`, each `2a + b`. +pub const SUBPOS: [u8; 4] = [0, 3, 1, 2]; +/// The latent's side and the hyper-latent's. +pub const SIDE: u32 = 16; +pub const Z_SIDE: u32 = 4; +/// The latent channels of each plane, luma then chroma. +pub const CHANNELS: [u32; 2] = [160, 96]; + +/// One member of a weight file that §13.6.2 reads, as parsed. +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum PtqMember { + /// Kind `conv`: the weights' `dims`, the weights `w` row-major over them, the one + /// multiplier and the one shift. + Conv { dims: Vec, w: Vec, mult: i64, shift: u8 }, + /// Kind `q16`: the values. + Q16 { v: Vec }, +} + +/// A weight file as parsed: its members of kind `conv` and `q16`, by name. Members of +/// another kind are not kept. +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct PtqNet { + pub members: BTreeMap, +} + +impl PtqNet { + /// Add a member, refusing a second one of the same name. + pub fn insert(&mut self, name: String, m: PtqMember) -> Res<()> { + match self.members.insert(name, m) { + None => Ok(()), + Some(_) => refuse(), + } + } +} + +/// The integer networks of a bundle as parsed: the two hyper decoders, the four +/// context stages (luma only) and the two synthesis networks. +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct JpegaiNets { + pub hyp: [PtqNet; 2], + pub mcm: [PtqNet; 4], + pub synth: [PtqNet; 2], +} + +/// The members' file names, in [`JpegaiNets`]' order. +pub const NET_MEMBERS: [&str; 8] = [ + "weights/hyp_y.json", + "weights/hyp_uv.json", + "weights/mcm0_y.json", + "weights/mcm1_y.json", + "weights/mcm2_y.json", + "weights/mcm3_y.json", + "weights/synth_y.json", + "weights/synth_uv.json", +]; + +fn ints(v: &Value) -> Res> { + let a = v.as_arr().ok_or(()).or_else(|_| refuse())?; + a.iter().map(|x| x.as_i64().ok_or(()).or_else(|_| refuse())).collect() +} + +/// Whether some object of `v`, at any depth, has two members of one name. +fn duplicate_names(v: &Value) -> bool { + match v { + Value::Obj(m) => { + let mut names: Vec<&str> = m.iter().map(|(k, _)| k.as_str()).collect(); + names.sort_unstable(); + names.windows(2).any(|p| p[0] == p[1]) || m.iter().any(|(_, x)| duplicate_names(x)) + } + Value::Arr(a) => a.iter().any(duplicate_names), + _ => false, + } +} + +/// One weight file's members (§13.6.2, *The members*): a JSON object, each member of +/// kind `conv` with integer `dims`, as many weights `w` as they give (each fitting i64), +/// an integer `mult` and a `shift` in `0..=127`, each of kind `q16` with integer values +/// `v`; and no object, at any depth, with two members of one name. +pub fn parse_ptq(b: &[u8]) -> Res { + let v = json::parse(b).or_else(|_| refuse())?; + let obj = v.as_obj().ok_or(()).or_else(|_| refuse())?; + if duplicate_names(&v) { + return refuse(); + } + let mut net = PtqNet::default(); + for (name, e) in obj { + let kind = e.as_obj().and_then(|_| e.get("kind")).and_then(Value::as_str); + let get = |k: &str| e.get(k).ok_or(()).or_else(|_| refuse()); + let m = match kind { + Some("conv") => { + let dims: Vec = get("dims")?.as_arr().ok_or(()).or_else(|_| refuse())?.iter().map(|d| d.as_u64().ok_or(()).or_else(|_| refuse())).collect::>()?; + let shift = get("shift")?.as_u64().filter(|&s| s <= 127).ok_or(()).or_else(|_| refuse())? as u8; + let w = ints(get("w")?)?; + if product(&dims) != Some(w.len() as u64) { + return refuse(); + } + PtqMember::Conv { dims, w, mult: get("mult")?.as_i64().ok_or(()).or_else(|_| refuse())?, shift } + } + Some("q16") => PtqMember::Q16 { v: ints(get("v")?)? }, + _ => continue, + }; + net.insert(name.clone(), m)?; + } + Ok(net) +} + +/// The eight files, parsed. +pub fn parse_nets(files: [&[u8]; 8]) -> Res { + let [hy, huv, m0, m1, m2, m3, sy, suv] = files; + Ok(JpegaiNets { hyp: [parse_ptq(hy)?, parse_ptq(huv)?], mcm: [parse_ptq(m0)?, parse_ptq(m1)?, parse_ptq(m2)?, parse_ptq(m3)?], synth: [parse_ptq(sy)?, parse_ptq(suv)?] }) +} + +// ------------------------------------------------------------------ building blocks + +/// A graph under construction over one weight file at a time. +struct G { + b: Builder, +} + +/// A convolution's geometry as the topology fixes it: kernel, stride, padding, and +/// groups (`0` for depthwise, `groups = cin`). +#[derive(Clone, Copy)] +struct Geo { + k: u32, + s: u32, + p: u32, + g: u32, +} + +const fn geo(k: u32, s: u32, p: u32, g: u32) -> Geo { + Geo { k, s, p, g } +} +/// 1×1, stride 1, padding 0. +const P1: Geo = geo(1, 1, 0, 1); +/// 3×3, stride 1, padding 1. +const C3: Geo = geo(3, 1, 1, 1); +/// 3×3, stride 2, padding 1: the downsamplers, and (with output padding 1) the +/// transposed upsamplers. +const S2: Geo = geo(3, 2, 1, 1); + +fn checked(c: u32) -> TensorRec { + TensorRec::check(c, A32.0, A32.1) +} + +fn take_conv(net: &mut PtqNet, m: &str) -> Res<(Vec, Vec, i64, u8)> { + match net.members.get_mut(&format!("{m}.weight")) { + Some(PtqMember::Conv { dims, w, mult, shift }) => Ok((dims.clone(), core::mem::take(w), *mult, *shift)), + _ => refuse(), + } +} + +/// The shift of `m.weight`, which must be a `conv` member. +fn shift_of(net: &PtqNet, m: &str) -> Res { + match net.members.get(&format!("{m}.weight")) { + Some(PtqMember::Conv { shift, .. }) => Ok(*shift), + _ => refuse(), + } +} + +/// `name`, a `q16` member of exactly `n` values. +fn take_q16(net: &mut PtqNet, name: &str, n: u64) -> Res> { + match net.members.get_mut(name) { + Some(PtqMember::Q16 { v }) if v.len() as u64 == n => Ok(core::mem::take(v)), + _ => refuse(), + } +} + +/// `m.bias`: `None` when the file has no such member; otherwise a `q16` member of +/// `cout` values. +fn take_bias(net: &mut PtqNet, m: &str, cout: u64) -> Res>> { + let name = format!("{m}.bias"); + if !net.members.contains_key(&name) { + return Ok(None); + } + take_q16(net, &name, cout).map(Some) +} + +fn product(d: &[u64]) -> Option { + d.iter().try_fold(1u64, |a, &x| a.checked_mul(x)) +} + +/// The convolutions' `RQ`: one multiplier, one shift, a `post` bias when the file has +/// one, `floor`. +fn conv_rq(mult: i64, shift: u8, bias: Option>) -> Rq { + let (bias_kind, b_bytes, bias) = match bias { + Some(b) => (BiasKind::Post, smallest_width(&b, &[4, 8]), b), + None => (BiasKind::None, 0, vec![]), + }; + Rq { round: Round::Floor, bias_kind, m_kind: 1, s_kind: 1, m_bytes: smallest_width(&[mult], &[4, 8]), b_bytes, mult: vec![mult], shift: vec![shift], bias } +} + +impl G { + fn new() -> G { + G { b: Builder::new() } + } + fn ch(&self, t: u32) -> u32 { + self.b.channels(t) + } + + /// `conv` from `m.weight` (`[cout, cin/groups, k, k]`), output `check`; `shift`, when + /// given, in place of the member's own (§13.6.2, the TAB rule). + fn conv(&mut self, net: &mut PtqNet, m: &str, x: u32, ge: Geo, shift: Option) -> Res { + let cin = self.ch(x) as u64; + let groups = if ge.g == 0 { cin } else { ge.g as u64 }; + let (dims, w, mult, own) = take_conv(net, m)?; + let k = ge.k as u64; + if dims.len() != 4 || groups == 0 || cin % groups != 0 || dims[1].checked_mul(groups) != Some(cin) || dims[2] != k || dims[3] != k { + return refuse(); + } + let cout = dims[0]; + if cout == 0 || cout > u32::MAX as u64 || cout % groups != 0 || (ge.g == 0 && cout != cin) || product(&dims) != Some(w.len() as u64) { + return refuse(); + } + let bias = take_bias(net, m, cout)?; + let rq = conv_rq(mult, shift.unwrap_or(own), bias); + let w_bytes = smallest_width(&w, &[1, 2, 4, 8]); + let p = Params::Conv { cout: cout as u32, kh: ge.k, kw: ge.k, sh: ge.s, sw: ge.s, ph: ge.p, pw: ge.p, groups: groups as u32, w_bytes, rq, w }; + Ok(self.b.op(opcode::CONV, vec![x], checked(cout as u32), p)) + } + + /// `conv_transpose` from `m.weight` (`[cin, cout, k, k]`), output padding `op`, + /// output `check`. + fn convt(&mut self, net: &mut PtqNet, m: &str, x: u32, ge: Geo, op: u32) -> Res { + let cin = self.ch(x) as u64; + let (dims, w, mult, shift) = take_conv(net, m)?; + let k = ge.k as u64; + if dims.len() != 4 || dims[0] != cin || dims[2] != k || dims[3] != k { + return refuse(); + } + let cout = dims[1]; + if cout == 0 || cout > u32::MAX as u64 || product(&dims) != Some(w.len() as u64) { + return refuse(); + } + let bias = take_bias(net, m, cout)?; + let rq = conv_rq(mult, shift, bias); + let w_bytes = smallest_width(&w, &[1, 2, 4, 8]); + let p = Params::ConvT { cout: cout as u32, kh: ge.k, kw: ge.k, sh: ge.s, sw: ge.s, ph: ge.p, pw: ge.p, oph: op, opw: op, w_bytes, rq, w }; + Ok(self.b.op(opcode::CONV_TRANSPOSE, vec![x], checked(cout as u32), p)) + } + + fn relu(&mut self, x: u32) -> u32 { + let c = self.ch(x); + self.b.op(opcode::RELU, vec![x], TensorRec::derived(c), Params::None) + } + fn relu6(&mut self, x: u32) -> u32 { + let c = self.ch(x); + self.b.op(opcode::CLAMP, vec![x], TensorRec::derived(c), Params::Clamp { lo: 0, hi: RELU6 }) + } + fn add(&mut self, a: u32, c: u32) -> Res { + let n = self.ch(a); + if self.ch(c) != n { + return refuse(); + } + Ok(self.b.op(opcode::ADD, vec![a, c], checked(n), Params::None)) + } + /// A Q16 product: `mul`, no multiplier, shift 16, `floor`. + fn mul(&mut self, a: u32, c: u32) -> Res { + let n = self.ch(a); + if self.ch(c) != n { + return refuse(); + } + Ok(self.b.op(opcode::MUL, vec![a, c], checked(n), Params::Mul(Rq::plain(Round::Floor, 16)))) + } + fn split(&mut self, x: u32, start: u32, count: u32) -> u32 { + self.b.op(opcode::SPLIT, vec![x], TensorRec::derived(count), Params::Split { start, count }) + } + fn concat(&mut self, xs: Vec) -> u32 { + let c = xs.iter().map(|&t| self.ch(t)).sum(); + self.b.op(opcode::CONCAT, xs, TensorRec::derived(c), Params::None) + } + fn shuffle(&mut self, x: u32) -> Res { + let c = self.ch(x); + if c % 4 != 0 { + return refuse(); + } + Ok(self.b.op(opcode::PIXEL_SHUFFLE, vec![x], TensorRec::derived(c / 4), Params::Shuffle { r: 2 })) + } + + /// The residual block `m`: `conv1` (3×3), `relu`, `conv2` (3×3), then `add(x, ·)`. + fn res(&mut self, net: &mut PtqNet, m: &str, x: u32) -> Res { + let a = self.conv(net, &format!("{m}.conv1"), x, C3, None)?; + let a = self.relu(a); + let b = self.conv(net, &format!("{m}.conv2"), a, C3, None)?; + self.add(x, b) + } + + /// The gate `m`: `x · (f(x) + 1)` in Q16, where `f` is ReLU6, `m.conv` (3×3, groups + /// 4) and `m.conv2` (1×1). + fn gate(&mut self, net: &mut PtqNet, m: &str, x: u32) -> Res { + let a = self.relu6(x); + let a = self.conv(net, &format!("{m}.conv"), a, geo(3, 1, 1, 4), None)?; + let a = self.conv(net, &format!("{m}.conv2"), a, P1, None)?; + let c = self.ch(a); + let one = Rq { round: Round::Floor, bias_kind: BiasKind::Post, m_kind: 0, s_kind: 1, m_bytes: 0, b_bytes: 4, mult: vec![], shift: vec![0], bias: vec![ONE; c as usize] }; + let a = self.b.op(opcode::RESCALE, vec![a], checked(c), Params::Rescale(one)); + self.mul(x, a) + } + + /// `layernorm_c` from `m.weight` (`γ`) and `m.bias` (`β`), each of `c` values. + fn layernorm(&mut self, net: &mut PtqNet, m: &str, x: u32) -> Res { + let c = self.ch(x); + let gamma = take_q16(net, &format!("{m}.weight"), c as u64)?; + let beta = take_q16(net, &format!("{m}.bias"), c as u64)?; + let g_bytes = smallest_width(&gamma, &[4, 8]); + Ok(self.b.op(opcode::LAYERNORM_C, vec![x], checked(c), Params::LayerNorm { eps: EPS, g_bytes, gamma, beta })) + } + + /// One TAB `m` on `x` (`c` channels): the channel-attention half, then the + /// feed-forward half, each a residual. + fn tab(&mut self, net: &mut PtqNet, m: &str, x: u32) -> Res { + let c = self.ch(x); + if c % HEADS != 0 { + return refuse(); + } + let d = c / HEADS; + // The attention half: every convolution takes `prep_data.conv1`'s shift. + let sa = shift_of(net, &format!("{m}.prep_data.conv1"))?; + let y = self.layernorm(net, &format!("{m}.prep_data.norm1"), x)?; + let qkv = self.conv(net, &format!("{m}.prep_data.conv1"), y, P1, Some(sa))?; + if self.ch(qkv) != 3 * c { + return refuse(); + } + let qkv = self.conv(net, &format!("{m}.prep_data.conv2"), qkv, geo(3, 1, 1, 0), Some(sa))?; + let q = self.split(qkv, 0, c); + let k = self.split(qkv, c, c); + let v = self.split(qkv, 2 * c, c); + let q = self.b.op(opcode::L2NORM, vec![q], TensorRec::derived(c), Params::L2norm { eps: EPS }); + let k = self.b.op(opcode::L2NORM, vec![k], TensorRec::derived(c), Params::L2norm { eps: EPS }); + let s = self.b.op(opcode::GRAM, vec![q, k], checked(c), Params::Gram { groups: HEADS, rq: Rq::plain(Round::HalfUp, 16) }); + let temp = take_q16(net, &format!("{m}.attn.temperature"), HEADS as u64)?; + let mult: Vec = (0..c).map(|ch| temp[(ch / d) as usize]).collect(); + let m_bytes = smallest_width(&mult, &[4, 8]); + let rq = Rq { round: Round::HalfUp, bias_kind: BiasKind::None, m_kind: 2, s_kind: 1, m_bytes, b_bytes: 0, mult, shift: vec![16], bias: vec![] }; + let s = self.b.op(opcode::RESCALE, vec![s], checked(c), Params::Rescale(rq)); + let a = self.b.op(opcode::SOFTMAX, vec![s], TensorRec::derived(c), Params::None); + let o = self.b.op(opcode::APPLY, vec![a, v], checked(c), Params::Apply { groups: HEADS, rq: Rq::plain(Round::HalfUp, 16) }); + let o = self.conv(net, &format!("{m}.attn.project_out"), o, P1, Some(sa))?; + let x = self.add(x, o)?; + // The feed-forward half: every convolution takes `ffn.project_in`'s shift. + let sf = shift_of(net, &format!("{m}.ffn.project_in"))?; + let y = self.layernorm(net, &format!("{m}.ffn.norm1"), x)?; + let h2 = self.conv(net, &format!("{m}.ffn.project_in"), y, P1, Some(sf))?; + let n2 = self.ch(h2); + if n2 % 2 != 0 { + return refuse(); + } + let h2 = self.conv(net, &format!("{m}.ffn.dwconv"), h2, geo(3, 1, 1, 0), Some(sf))?; + let a = self.split(h2, 0, n2 / 2); + let b = self.split(h2, n2 / 2, n2 / 2); + let a = self.b.op(opcode::ELU, vec![a], TensorRec::derived(n2 / 2), Params::Elu { alpha: ONE }); + let g = self.mul(a, b)?; + let o = self.conv(net, &format!("{m}.ffn.project_out"), g, P1, Some(sf))?; + self.add(x, o) + } + + /// The channel-attention block `m` of both synthesis networks: the trunk (two + /// residual blocks) times the sigmoid of the mask branch, plus `x`. + fn cab(&mut self, net: &mut PtqNet, x: u32) -> Res { + let t = self.res(net, "CAB.residual_trunk.0", x)?; + let t = self.res(net, "CAB.residual_trunk.1", t)?; + let s = self.conv(net, "CAB.subscale", x, S2, None)?; + let s = self.res(net, "CAB.residual_mask2.0", s)?; + let s = self.res(net, "CAB.residual_mask3.0", s)?; + let u = self.convt(net, "CAB.upscale", s, S2, 1)?; + let c = self.ch(u); + let mask = self.b.op(opcode::SIGMOID, vec![u], TensorRec::derived(c), Params::None); + let p = self.mul(t, mask)?; + self.add(x, p) + } + + /// The denormalisation: `rescale` with one multiplier 128, shift 0 and a `post` bias + /// of `127·2^16 + 2^15`, its output `clamp [0, 255·2^16]`. + fn denorm(&mut self, x: u32) -> u32 { + let c = self.ch(x); + let rq = Rq { round: Round::Floor, bias_kind: BiasKind::Post, m_kind: 1, s_kind: 1, m_bytes: 4, b_bytes: 4, mult: vec![128], shift: vec![0], bias: vec![DENORM_BIAS; c as usize] }; + self.b.op(opcode::RESCALE, vec![x], TensorRec::clamp(c, 0, DENORM_HI), Params::Rescale(rq)) + } +} + +// ------------------------------------------------------------------ the graphs + +/// A plane's graph `rec_y` (`mcm` given) or `rec_uv`: inputs `z [C, 4, 4]` and the +/// dequantised residual `r [C, 16, 16]`; output `ŷ [C, 16, 16]`. +pub fn rec(hyp: &mut PtqNet, mcm: Option<&mut [PtqNet; 4]>, chroma: bool) -> Res { + let cz = CHANNELS[chroma as usize]; + let mut g = G::new(); + let z = g.b.input(TensorRec::check(cz, -31, 32), Z_SIDE, Z_SIDE); + let r = g.b.input(checked(cz), SIDE, SIDE); + // The hyper decoder ψ on `z·2^16`. + let lift = Rq { round: Round::Floor, bias_kind: BiasKind::None, m_kind: 1, s_kind: 1, m_bytes: 4, b_bytes: 0, mult: vec![ONE], shift: vec![0], bias: vec![] }; + let x = g.b.op(opcode::RESCALE, vec![z], TensorRec::derived(cz), Params::Rescale(lift)); + let x = g.conv(hyp, "conv1", x, P1, None)?; + let x = g.convt(hyp, "conv2", x, geo(4, 2, 1, 1), 0)?; + let x = g.relu6(x); + let x = g.conv(hyp, "conv3", x, C3, None)?; + let x = g.relu6(x); + let psi = g.conv(hyp, "conv4", x, C3, None)?; + if g.ch(psi) != 4 * cz { + return refuse(); + } + let out = match mcm { + None => { + // Chroma: the hyper decoder's four parts are the means. + let parts: Vec = (0..4).map(|i| g.split(psi, i * cz, cz)).collect(); + let mu = g.b.op(opcode::SUBPOS_MERGE, parts, TensorRec::derived(cz), Params::Subpos { order: SUBPOS }); + g.add(r, mu)? + } + Some(mcm) => { + let rs = g.b.ops(opcode::SUBPOS_SPLIT, vec![r], vec![TensorRec::derived(cz); 4], Params::Subpos { order: SUBPOS }); + let mut ys: Vec = Vec::with_capacity(4); + for (i, st) in mcm.iter_mut().enumerate() { + let p = g.split(psi, i as u32 * cz, cz); + let f = if i == 0 { + p + } else { + let ctx = if i == 1 { ys[0] } else { g.concat(ys.clone()) }; + let c0 = g.conv(st, "conv.0", ctx, P1, None)?; + let cy = g.conv(st, "conv.1", c0, geo(3, 1, 1, 5), None)?; + g.concat(vec![cy, p]) + }; + let f = g.conv(st, "fusion_pred_net.conv1", f, P1, None)?; + let f = g.relu(f); + let f = g.conv(st, "fusion_pred_net.conv2", f, P1, None)?; + let f = g.relu(f); + let mu = g.conv(st, "fusion_pred_net.conv3", f, P1, None)?; + if g.ch(mu) != cz { + return refuse(); + } + ys.push(g.add(rs[i], mu)?); + } + g.b.op(opcode::SUBPOS_MERGE, ys, TensorRec::derived(cz), Params::Subpos { order: SUBPOS }) + } + }; + g.b.finish(vec![out]) +} + +/// The luma synthesis `syn_y`: input the luma latent `[160, 16, 16]`; output the +/// denormalised plane `[1, 256, 256]`. +pub fn syn_y(net: &mut PtqNet) -> Res { + let mut g = G::new(); + let l = g.b.input(checked(CHANNELS[0]), SIDE, SIDE); + let x = g.res(net, "first_stage.0.0", l)?; + let x = g.convt(net, "first_stage.1", x, S2, 1)?; + let x = g.gate(net, "first_stage.2", x)?; + let x = g.convt(net, "conv2_t", x, S2, 1)?; + let x = g.cab(net, x)?; + let x = g.gate(net, "iact2", x)?; + let x = g.conv(net, "conv3_t", x, P1, None)?; + let x = g.shuffle(x)?; + let x = g.conv(net, "TAM.ds_conv", x, S2, None)?; + let x = g.tab(net, "TAM.TABs.0", x)?; + let x = g.tab(net, "TAM.TABs.1", x)?; + let x = g.convt(net, "TAM.us_conv", x, S2, 1)?; + let x = g.gate(net, "iact3", x)?; + let x = g.convt(net, "conv4_t", x, S2, 1)?; + if g.ch(x) != 1 { + return refuse(); + } + let x = g.denorm(x); + g.b.finish(vec![x]) +} + +/// The chroma synthesis `syn_uv`: inputs the luma latent `[160, 16, 16]` and the chroma +/// latent `[96, 16, 16]`; output the denormalised planes U and V `[2, 256, 256]`. +pub fn syn_uv(net: &mut PtqNet) -> Res { + let mut g = G::new(); + let ly = g.b.input(checked(CHANNELS[0]), SIDE, SIDE); + let luv = g.b.input(checked(CHANNELS[1]), SIDE, SIDE); + let cat = g.concat(vec![ly, luv]); + let c1 = g.conv(net, "first_stage.conv1", cat, C3, None)?; + let x = g.concat(vec![c1, luv]); + let x = g.convt(net, "conv2_t", x, S2, 1)?; + let x = g.cab(net, x)?; + let x = g.gate(net, "iact2", x)?; + let x = g.conv(net, "conv3_t", x, P1, None)?; + let x = g.shuffle(x)?; + let x = g.tab(net, "TAM.TABs.0", x)?; + let x = g.tab(net, "TAM.TABs.1", x)?; + let x = g.gate(net, "iact3", x)?; + let x = g.convt(net, "conv4_t", x, S2, 1)?; + if g.ch(x) != 8 { + return refuse(); + } + let x = g.shuffle(x)?; + let x = g.denorm(x); + g.b.finish(vec![x]) +} + +/// The four graphs, `rec_y`, `rec_uv`, `syn_y`, `syn_uv`, from the networks as parsed +/// (their lists move into the graphs). +pub fn nets_graphs(mut n: JpegaiNets) -> Res<[Graph; 4]> { + let [hy, huv] = &mut n.hyp; + let ry = rec(hy, Some(&mut n.mcm), false)?; + let ruv = rec(huv, None, true)?; + let [sy, suv] = &mut n.synth; + Ok([ry, ruv, syn_y(sy)?, syn_uv(suv)?]) +} + +/// The roles §13.0 gives these graphs, in order. +pub const NET_ROLES: [&str; 4] = ["rec_y", "rec_uv", "syn_y", "syn_uv"]; + +/// The four graphs by role. +pub fn nets(n: &JpegaiNets) -> Res { + let gs = nets_graphs(n.clone())?; + Ok(Lowered { roles: NET_ROLES.iter().copied().zip(gs).collect() }) +} + +/// The four graphs loaded under `p`: what [`crate::graph::load`] of each graph's bytes +/// gives, refusal for refusal. The networks' lists move into the graphs. +pub fn nets_loaded(n: JpegaiNets, p: Profile) -> Res<[Loaded; 4]> { + let [a, b, c, d] = nets_graphs(n)?; + Ok([crate::graph::load_lowered(a, p)?, crate::graph::load_lowered(b, p)?, crate::graph::load_lowered(c, p)?, crate::graph::load_lowered(d, p)?]) +} diff --git a/wai/wai-ops/src/lower/mod.rs b/wai/wai-ops/src/lower/mod.rs index 4914247af..76ae025d8 100644 --- a/wai/wai-ops/src/lower/mod.rs +++ b/wai/wai-ops/src/lower/mod.rs @@ -11,10 +11,11 @@ use crate::code::{Code, Refusal, Site}; use crate::graph::{CAP, Graph, InputRec, Op, Params, ScalarRec, TensorRec, op_name}; pub mod jpegai; +pub mod jpegai_nets; mod synth; mod whm; -pub use jpegai::{jpegai, jpegai_net, jpegai_net_loaded, parse_jpegai}; +pub use jpegai::{JpegaiBytes, jpegai, jpegai_net, jpegai_net_loaded, jpegai_scale, parse_jpegai}; pub use synth::int_synth; pub use whm::{Net, NetLayer, int_hyper, parse_wam1, parse_whm1, splat, wam1, wam1_net, wam1_net_loaded, whm1, whm1_net, whm1_net_loaded, wmb1, world, world_net, world_net_loaded}; #[cfg(kani)] @@ -69,6 +70,15 @@ impl Builder { self.ops.push(Op { code, ins, outs: vec![t], p }); t } + /// Add an operator writing one tensor of each of `outs`, which take the next unused + /// indices in their order; returns those tensors. + pub fn ops(&mut self, code: u8, ins: Vec, outs: Vec, p: Params) -> Vec { + let first = self.tensors.len() as u32; + let ts: Vec = (first..first + outs.len() as u32).collect(); + self.tensors.extend(outs); + self.ops.push(Op { code, ins, outs: ts.clone(), p }); + ts + } pub fn channels(&self, t: u32) -> u32 { self.tensors[t as usize].channels } diff --git a/wai/wai-ops/tests/goldens.rs b/wai/wai-ops/tests/goldens.rs index 416ea9b05..cd44caac3 100644 --- a/wai/wai-ops/tests/goldens.rs +++ b/wai/wai-ops/tests/goldens.rs @@ -306,9 +306,9 @@ fn jpegai_parsed_lowering_is_the_lowering_of_its_bytes() { let rd = |n: &str| std::fs::read(Path::new(&dir).join(n)).unwrap(); sets.push((rd("norm.json"), rd("hs_y.json"), rd("hs_uv.json"))); } - let committed = ["hs_y", "hs_uv"].map(|r| read(&format!("ops-conformance/certificates/wai.image.jpegai/60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad/{r}.whg1"))); + let committed = ["hs_y", "hs_uv"].map(|r| read(&format!("ops-conformance/certificates/wai.image.jpegai/1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9/{r}.whg1"))); for (i, (n, y, uv)) in sets.iter().enumerate() { - let bytes = lower::jpegai(n, y, uv).unwrap(); + let bytes = lower::jpegai_scale(n, y, uv).unwrap(); if i == 0 { assert_eq!(bytes.get("hs_y").unwrap().to_bytes(), committed[0], "the committed hs_y"); assert_eq!(bytes.get("hs_uv").unwrap().to_bytes(), committed[1], "the committed hs_uv"); @@ -334,7 +334,7 @@ fn jpegai_parsed_lowering_is_the_lowering_of_its_bytes() { }; for (norm, hs_y) in [(nt.replacen("\"bounds\":[", "\"bounds\":[256,", 1), yt.clone()), (nt.clone(), shift(&yt))] { let (norm, hs_y) = (norm.into_bytes(), hs_y.into_bytes()); - let a = lower::jpegai(&norm, &hs_y, uv).unwrap_err(); + let a = lower::jpegai_scale(&norm, &hs_y, uv).unwrap_err(); let net = lower::parse_jpegai(&norm, &hs_y, uv).unwrap(); assert_eq!(lower::jpegai_net(&net).unwrap_err(), a); assert_eq!(lower::jpegai_net_loaded(net, Profile::Acc32).err().unwrap(), a); @@ -352,7 +352,7 @@ fn jpegai_parsed_lowering_is_the_lowering_of_its_bytes() { fn jpegai_scale_path_on_a_supplied_bundle() { let dir = std::env::var("WAI_OPS_JPEGAI_BUNDLE").expect("WAI_OPS_JPEGAI_BUNDLE names the bundle"); let rd = |n: &str| std::fs::read(Path::new(&dir).join(n)).unwrap(); - let set = lower::jpegai(&rd("norm.json"), &rd("hs_y.json"), &rd("hs_uv.json")).unwrap(); + let set = lower::jpegai_scale(&rd("norm.json"), &rd("hs_y.json"), &rd("hs_uv.json")).unwrap(); for (role, file, cz) in [("hs_y", "hs_y.json", 160u32), ("hs_uv", "hs_uv.json", 96)] { let g = set.get(role).unwrap(); let net = json::parse(&rd(file)).unwrap(); @@ -428,7 +428,7 @@ fn jpegai_entropy_path_matches_the_legacy_decoder() { let rd = |n: &str| std::fs::read(Path::new(&dir).join(n)).unwrap(); let norm = json::parse(&rd("norm.json")).unwrap(); let d = json::parse(&std::fs::read(&dump).unwrap()).unwrap(); - let set = lower::jpegai(&rd("norm.json"), &rd("hs_y.json"), &rd("hs_uv.json")).unwrap(); + let set = lower::jpegai_scale(&rd("norm.json"), &rd("hs_y.json"), &rd("hs_uv.json")).unwrap(); let pmf: Vec> = norm.get("pmf").unwrap().as_arr().unwrap().iter().map(i64s).collect(); let tables = stage::mans::build_latent_tables(&pmf).unwrap(); let want: Vec> = d.get("tables").unwrap().as_arr().unwrap().iter().map(i64s).collect(); diff --git a/wai/wai-rs/Cargo.toml b/wai/wai-rs/Cargo.toml index 69415cf73..ce004b4ef 100644 --- a/wai/wai-rs/Cargo.toml +++ b/wai/wai-rs/Cargo.toml @@ -819,7 +819,7 @@ required-features = ["neural_int", "video_int", "audio_int", "world_int", "splat [[test]] name = "int_kernels_geometry" path = "tests/int_kernels_geometry.rs" -required-features = ["neural_int"] +required-features = ["neural_int", "legacy_int"] [[test]] name = "int_ops_differential" @@ -857,6 +857,11 @@ name = "jpegai_ops" path = "tests/jpegai_ops.rs" required-features = ["neural_int", "legacy_int"] +[[test]] +name = "jpegai_nets_ops" +path = "tests/jpegai_nets_ops.rs" +required-features = ["neural_int", "legacy_int"] + [[test]] name = "int_video_ops" path = "tests/int_video_ops.rs" @@ -1165,7 +1170,7 @@ required-features = ["neural_int", "legacy_int"] [[test]] name = "jpegai_e2e_synthesis" path = "tests/jpegai_e2e_synthesis.rs" -required-features = ["neural_int"] +required-features = ["neural_int", "legacy_int"] [[test]] name = "jpegai_efl_calibration" @@ -1180,7 +1185,7 @@ required-features = ["neural_int"] [[test]] name = "jpegai_hyper_calibration" path = "tests/jpegai_hyper_calibration.rs" -required-features = ["neural"] +required-features = ["neural", "legacy_int"] [[test]] name = "jpegai_hyperscale_calibration" @@ -1225,7 +1230,7 @@ required-features = ["neural"] [[test]] name = "jpegai_mcm_calibration" path = "tests/jpegai_mcm_calibration.rs" -required-features = ["neural"] +required-features = ["neural", "legacy_int"] [[test]] name = "jpegai_postfilter_chain" @@ -1235,7 +1240,7 @@ required-features = ["neural_int"] [[test]] name = "jpegai_reconstruct_calibration" path = "tests/jpegai_reconstruct_calibration.rs" -required-features = ["neural_int"] +required-features = ["neural_int", "legacy_int"] [[test]] name = "jpegai_reconstruction_binding" @@ -1255,12 +1260,12 @@ required-features = ["neural_int", "legacy_int"] [[test]] name = "jpegai_synthesis_calibration" path = "tests/jpegai_synthesis_calibration.rs" -required-features = ["neural"] +required-features = ["neural", "legacy_int"] [[test]] name = "jpegai_uv_calibration" path = "tests/jpegai_uv_calibration.rs" -required-features = ["neural"] +required-features = ["neural", "legacy_int"] [[test]] name = "neural_cost_limit" diff --git a/wai/wai-rs/src/bin/wai_decode_bench.rs b/wai/wai-rs/src/bin/wai_decode_bench.rs index 040af7aad..928f04922 100644 --- a/wai/wai-rs/src/bin/wai_decode_bench.rs +++ b/wai/wai-rs/src/bin/wai_decode_bench.rs @@ -206,7 +206,7 @@ fn jpegai_weights(luma: bool) -> wai::jpegai_synthesis::Weights { } else { conv(&mut m, "conv4_t", [64, 8, 3, 3], 64 * 9 / 4); } - wai::jpegai_synthesis::Weights::from_json(&Value::Object(m)) + wai::jpegai_synthesis::Weights::from_json(&Value::Object(m)).unwrap() } /// `model` lowered by `whm1/1` (with the RGB8 step where `rgb8` is set) and loaded under @@ -224,8 +224,32 @@ fn run_lowered(g: &wai_ops::Loaded, x: &[i64], c: usize, h: usize, w: usize) -> // ─────────────────────────────── cases ─────────────────────────────── +/// One convolution (or transposed convolution) as a `WHG1` graph with one operator, its +/// input checked within i32 at `h × h` and its `RQ` the JPEG-AI networks' (one +/// multiplier, one shift, a `post` bias, `floor`; integer-operators §13.6.2), loaded +/// under `acc64`: the operator the decode runs. +#[allow(clippy::too_many_arguments)] +fn conv_graph(cin: usize, cout: usize, k: usize, stride: usize, pad: usize, groups: usize, opad: usize, transposed: bool, h: usize, w: Vec, mult: i64, bias: Vec) -> wai_ops::Loaded { + use wai_ops::graph::{opcode, BiasKind, Graph, InputRec, Op, Params, Round, Rq, TensorRec, CAP}; + let u = |v: usize| v as u32; + let rq = Rq { round: Round::Floor, bias_kind: BiasKind::Post, m_kind: 1, s_kind: 1, m_bytes: 8, b_bytes: 8, mult: vec![mult], shift: vec![31], bias }; + let (code, p) = if transposed { + (opcode::CONV_TRANSPOSE, Params::ConvT { cout: u(cout), kh: u(k), kw: u(k), sh: u(stride), sw: u(stride), ph: u(pad), pw: u(pad), oph: u(opad), opw: u(opad), w_bytes: 2, rq, w }) + } else { + (opcode::CONV, Params::Conv { cout: u(cout), kh: u(k), kw: u(k), sh: u(stride), sw: u(stride), ph: u(pad), pw: u(pad), groups: u(groups), w_bytes: 2, rq, w }) + }; + let g = Graph { + max_elems: CAP as u32, + scalars: vec![], + inputs: vec![InputRec { tensor: 0, max_h: u(h), max_w: u(h), kind: 0, src: 0, init: 0 }], + outputs: vec![1], + tensors: vec![TensorRec::check(u(cin), i32::MIN as i64, i32::MAX as i64), TensorRec::derived(u(cout))], + ops: vec![Op { code, ins: vec![0], outs: vec![1], p }], + }; + wai_ops::graph::load(&g.to_bytes(), wai_ops::Profile::Acc64).expect("the convolution loads under acc64") +} + fn kernel_cases(cases: &mut Vec) { - use wai::int_transformer::{conv_grouped, conv_transpose}; // int_hyper g_s middle layer: convT 192→192, 5×5, stride 2, 64² → 128². { @@ -263,7 +287,9 @@ fn kernel_cases(cases: &mut Vec) { run: Box::new(move || Out::I(wai::int_transform::igdn(&x, 192, 128 * 128, 12, &gamma, &beta, 16))), }); } - // JPEG-AI shapes (Q16 activations, 16-bit weights, shift 31). + // JPEG-AI shapes (Q16 activations, 16-bit weights, shift 31), each convolution as the + // one-operator graph the decode runs (through the interpreter with the fast kernels + // behind it). type Spec = (&'static str, usize, usize, usize, usize, usize, usize, usize, bool); // name, cin, cout, k, stride, groups, h(=w) in, transposed? let specs: [Spec; 5] = [ @@ -278,23 +304,17 @@ fn kernel_cases(cases: &mut Vec) { let cin_g = cin / groups; let x = g.vec(cin * hw * hw, 2 << 16); let wt = g.vec(cin_g * cout * k * k, 32767); - let mult = vec![(((3.0 / (cin_g * k * k) as f64).sqrt() / 32767.0) * (1u64 << 31) as f64) as i64; cout]; + let mult = (((3.0 / (cin_g * k * k) as f64).sqrt() / 32767.0) * (1u64 << 31) as f64) as i64; let bias = g.vec(cout, 1 << 12); let pad = k / 2; + let graph = conv_graph(cin, cout, k, stride, pad, groups, opad, transposed, hw, wt, mult, bias); let ho = if transposed { (hw - 1) * stride + k + opad - 2 * pad } else { (hw + 2 * pad - k) / stride + 1 }; let macs = if transposed { cin * cout * k * k * hw * hw } else { cin_g * cout * k * k * ho * ho } as u64; cases.push(Case { name: format!("kernel · JPEG-AI {label}"), per_run: ((ho * ho) as f64 / 1e6, "MPix"), macs: Some(macs), - run: Box::new(move || { - let out = if transposed { - conv_transpose(&x, cin, hw, hw, &wt, cout, k, stride, pad, opad, &mult, &bias, 31).0 - } else { - conv_grouped(&x, cin, hw, hw, &wt, cout, k, stride, pad, groups, &mult, &bias, 31).0 - }; - Out::I(out) - }), + run: Box::new(move || Out::I(run_lowered(&graph, &x, cin, hw, hw).data)), }); } } @@ -314,9 +334,15 @@ fn decoder_cases(cases: &mut Vec, quick: bool) { run: Box::new(move || Out::B(run_lowered(&model, &y, 320, lat, lat).data.iter().map(|&v| v as u8).collect())), }); } - // JPEG-AI synthesis (luma + chroma nets), 256² (the supported geometry). + // JPEG-AI synthesis (luma + chroma nets), 256² (the supported geometry), through the + // graphs the decode runs (`syn_y`, `syn_uv`; integer-operators §13.6.2). if !quick { - let (wy, wuv) = (jpegai_weights(true), jpegai_weights(false)); + let lower = |luma: bool| -> wai_ops::Loaded { + let mut net = jpegai_weights(luma).ptq().expect("the synthetic weights convert"); + let g = if luma { wai_ops::lower::jpegai_nets::syn_y(&mut net) } else { wai_ops::lower::jpegai_nets::syn_uv(&mut net) }; + wai_ops::graph::load(&g.expect("the synthetic networks lower").to_bytes(), wai_ops::Profile::Acc64).expect("they load under acc64") + }; + let (gy, guv) = (lower(true), lower(false)); let mut g = Rng(0x1A_0003); let latent = g.vec(256 * 16 * 16, 1 << 16); // y‖uv latent, Q16 cases.push(Case { @@ -324,9 +350,11 @@ fn decoder_cases(cases: &mut Vec, quick: bool) { per_run: (256.0 * 256.0 / 1e6, "MPix"), macs: None, run: Box::new(move || { - let mut y = wai::jpegai_synthesis::decode_y(&latent[..160 * 256], &wy); - y.extend(wai::jpegai_synthesis::decode_uv(&latent, &wuv)); - Out::B(y) + let t = |c: u32, d: &[i64]| wai_ops::Tensor::new(c, 16, 16, d.to_vec()); + let run = |g: &wai_ops::Loaded, x: Vec| wai_ops::run_with(g, x, &[], &mut wai_ops::Sequence::new(), &wai::int_ops::Host).expect("the latent is within its ranges").swap_remove(0).data; + let mut y = run(&gy, vec![t(160, &latent[..160 * 256])]); + y.extend(run(&guv, vec![t(160, &latent[..160 * 256]), t(96, &latent[160 * 256..])])); + Out::I(y) }), }); } diff --git a/wai/wai-rs/src/codecs/mod.rs b/wai/wai-rs/src/codecs/mod.rs index a2db66326..99813e0da 100644 --- a/wai/wai-rs/src/codecs/mod.rs +++ b/wai/wai-rs/src/codecs/mod.rs @@ -1348,24 +1348,28 @@ pub struct OpsMember { pub rans64: Option<(&'static str, &'static str, &'static str)>, /// `bucket`'s rule (E3), where the driver buckets a scale. pub bucket: Option<&'static str>, + /// Roles of the lowering whose graphs every conforming set holds to a stronger profile + /// than `profile`, each with that profile (§11, `role_profiles`); empty for most. + pub role_profiles: &'static [(&'static str, &'static str)], } /// The `ops` member of `cap`, for a capability decoded through the integer operator /// set; `None` for any other. A capability gains one when its decoder runs its /// networks through their lowering (`extensions/integer-operators.md` §15.1), or, with /// no network, its stage operators (§13.5). -/// `wai.image.jpegai` has one for its scale path and entropy decodes (§13.6.1), the -/// stages its `entropy-consistency` claim covers. +/// `wai.image.jpegai` has one for its integer stages (§13.6): its scale path and entropy +/// decodes, the stages its `entropy-consistency` claim covers, and its other integer +/// networks. /// `wai.video.int_motion` and the four `int_refine` capabilities run stage operators /// only: `WIV1` keyframe 0 E1, E10 and E9; `WIR1` E1, E11, E12 and E9. /// `wai.world.model` has none: its integer renderer runs through `world/1`, which is /// informative (§13.5), and the capability's decode is the replay of its action trace. pub fn capability_ops(cap: &str) -> Option { - let ops = |lowering, rans64, bucket| Some(OpsMember { profile: Some("acc64"), subset: Some("full"), lowering: Some(lowering), rans64, bucket }); + let ops = |lowering, rans64, bucket| Some(OpsMember { profile: Some("acc64"), subset: Some("full"), lowering: Some(lowering), rans64, bucket, role_profiles: &[] }); // integer-payloads §2's stream: `rans64_decode` with `t4097`, `lenient` and `canonical`. const PAYLOAD_STREAM: Option<(&str, &str, &str)> = Some(("t4097", "lenient", "canonical")); // A decode with no graph: its stage operators, and the modes of its E1. - let stages = |rans64| Some(OpsMember { profile: None, subset: None, lowering: None, rans64, bucket: None }); + let stages = |rans64| Some(OpsMember { profile: None, subset: None, lowering: None, rans64, bucket: None, role_profiles: &[] }); match cap { CAP_NEURAL_INT_SYNTH => ops("int_synth/1", None, None), CAP_SPLAT_INT_CODEC => ops("whm1/1", PAYLOAD_STREAM, None), @@ -1378,11 +1382,20 @@ pub fn capability_ops(cap: &str) -> Option { // `final_only` end rule, and each latent's σ is bucketed with E3's `ceil` rule // (integer-payloads §14). CAP_NEURAL_INT_MLICPP => ops("wmb1/1", Some(("t2", "lenient", "final_only")), Some("ceil")), - // JPEG AI's scale path and its two entropy decodes (integer-operators §13.6.1): the - // scale graphs of every conforming bundle meet `acc32`, so the profile is `acc32`; - // its stage operators (`mans_decode`, `coded`, `block_stat`, `band_lookup`, - // `scale_index`) have no modes to fix. - CAP_IMAGE_JPEGAI => Some(OpsMember { profile: Some("acc32"), subset: Some("full"), lowering: Some("jpegai-int/1"), rans64: None, bucket: None }), + // JPEG AI's integer stages (integer-operators §13.6): every graph of a conforming + // bundle meets `acc64`, and its scale graphs `hs_y` and `hs_uv` meet `acc32` + // (§13.6.1), so they run on a 32-bit fabric as on a 64-bit one; its other + // networks (§13.6.2) use operators that never meet `acc32` (§7.3). Its stage + // operators (`mans_decode`, `coded`, `block_stat`, `band_lookup`, `scale_index`) + // have no modes to fix. + CAP_IMAGE_JPEGAI => Some(OpsMember { + profile: Some("acc64"), + subset: Some("full"), + lowering: Some("jpegai-int/1"), + rans64: None, + bucket: None, + role_profiles: &[("hs_y", "acc32"), ("hs_uv", "acc32")], + }), // No graph (§13.5): a `WIV1` clip's residual stream and a `WIR1` unit's stream are // §2's, and the predictors and the step (E10, E11, E12, E9) have no modes. CAP_VIDEO_INT_MOTION | CAP_IMAGE_INT_REFINE | CAP_VIDEO_INT_REFINE | CAP_AUDIO_INT_REFINE | CAP_SPLAT_INT_REFINE => stages(PAYLOAD_STREAM), diff --git a/wai/wai-rs/src/codecs/registry.rs b/wai/wai-rs/src/codecs/registry.rs index c2df52038..b5e4799b4 100644 --- a/wai/wai-rs/src/codecs/registry.rs +++ b/wai/wai-rs/src/codecs/registry.rs @@ -853,6 +853,9 @@ fn ops_json(o: &super::OpsMember) -> serde_json::Value { v[k] = Value::from(m); } } + if !o.role_profiles.is_empty() { + v["role_profiles"] = Value::Object(o.role_profiles.iter().map(|(r, p)| (r.to_string(), Value::from(*p))).collect()); + } let mut stage = Map::new(); if let Some((table, escape, end)) = o.rans64 { stage.insert("rans64".into(), json!({ "table": table, "escape": escape, "end": end })); @@ -882,7 +885,8 @@ fn ops_schema() -> serde_json::Value { "dependentRequired": { "profile": ["subset", "lowering"], "subset": ["profile", "lowering"], - "lowering": ["profile", "subset"] + "lowering": ["profile", "subset"], + "role_profiles": ["profile"] }, "anyOf": [{ "required": ["lowering"] }, { "required": ["stage"] }], "properties": { @@ -890,6 +894,12 @@ fn ops_schema() -> serde_json::Value { "profile": { "enum": ["acc32", "acc64"] }, "subset": { "enum": ["full", "npu"] }, "lowering": { "type": "string" }, + "role_profiles": { + "type": "object", + "description": "Roles of the lowering whose graphs every conforming set holds to a stronger profile than `profile`, each with that profile (extensions/integer-operators.md §11).", + "minProperties": 1, + "additionalProperties": { "enum": ["acc32", "acc64"] } + }, "stage": { "type": "object", "additionalProperties": false, @@ -1511,10 +1521,12 @@ mod tests { assert_eq!(o.rans64, Some(("t4097", "lenient", "canonical")), "{}", r.capability); continue; } - // JPEG AI's scale path and entropy decodes, which its entropy-consistency claim - // covers, decode through the operator set at acc32 (§13.6.1). - let (class, profile) = if r.capability == CAP_IMAGE_JPEGAI { (ReplicateClass::NeuralEntropyExact, "acc32") } else { (ReplicateClass::NeuralIntegerExact, "acc64") }; + // JPEG AI's integer stages decode through the operator set at acc64, its scale + // path, which its entropy-consistency claim covers, at acc32 (§13.6). + let (class, profile) = if r.capability == CAP_IMAGE_JPEGAI { (ReplicateClass::NeuralEntropyExact, "acc64") } else { (ReplicateClass::NeuralIntegerExact, "acc64") }; assert_eq!(r.replicate, Some(class), "{}", r.capability); + let roles: &[(&str, &str)] = if r.capability == CAP_IMAGE_JPEGAI { &[("hs_y", "acc32"), ("hs_uv", "acc32")] } else { &[] }; + assert_eq!(o.role_profiles, roles, "{}", r.capability); assert_eq!((o.profile, o.subset), (Some(profile), Some("full")), "{}", r.capability); assert!(o.lowering.is_some_and(|l| ["int_synth/1", "whm1/1", "wam1/1", "wmb1/1", "world/1", "jpegai-int/1"].contains(&l)), "{}", r.capability); } @@ -1538,7 +1550,10 @@ mod tests { "set": "wai-ops/1", "stage": { "rans64": { "table": "t4097", "escape": "lenient", "end": "canonical" } } }), - CAP_IMAGE_JPEGAI => serde_json::json!({ "set": "wai-ops/1", "profile": "acc32", "subset": "full", "lowering": "jpegai-int/1" }), + CAP_IMAGE_JPEGAI => serde_json::json!({ + "set": "wai-ops/1", "profile": "acc64", "subset": "full", "lowering": "jpegai-int/1", + "role_profiles": { "hs_y": "acc32", "hs_uv": "acc32" } + }), CAP_NEURAL_INT_MLICPP => serde_json::json!({ "set": "wai-ops/1", "profile": "acc64", "subset": "full", "lowering": "wmb1/1", "stage": { "rans64": { "table": "t2", "escape": "lenient", "end": "final_only" }, "bucket": "ceil" } diff --git a/wai/wai-rs/src/int_kernels.rs b/wai/wai-rs/src/int_kernels.rs index 337bda884..17cbc1938 100644 --- a/wai/wai-rs/src/int_kernels.rs +++ b/wai/wai-rs/src/int_kernels.rs @@ -302,12 +302,16 @@ pub(crate) fn par_for_each(items: Vec, threads: usi } } -/// Elements per work item of the element-wise helpers. +/// Elements per work item of the element-wise helpers. The helpers below serve the +/// direct JPEG AI networks (`jpegai_synthesis`), which are test-only (`legacy_int`): the +/// decode runs those networks through the integer operator set. +#[cfg(any(test, feature = "legacy_int"))] const MAP_CHUNK: usize = 1 << 14; /// Element-wise `out[i] = f(x[i])`, chunked over workers when large. Every element /// is computed by the same pure function of its own input, so the partition cannot /// change any output. Serial under the reference policy (one thread). +#[cfg(any(test, feature = "legacy_int"))] pub(crate) fn par_map i64 + Sync>(x: &[i64], f: F) -> Vec { let mut out = vec![0i64; x.len()]; let threads = threads_for(x.len() as u64 * 16); @@ -321,6 +325,7 @@ pub(crate) fn par_map i64 + Sync>(x: &[i64], f: F) -> Vec { /// Element-wise `out[i] = f(a[i], b[i])` over `min(a.len(), b.len())` elements (the /// length `zip` gives), chunked like [`par_map`]. +#[cfg(any(test, feature = "legacy_int"))] pub(crate) fn par_zip i64 + Sync>(a: &[i64], b: &[i64], f: F) -> Vec { let n = a.len().min(b.len()); let mut out = vec![0i64; n]; @@ -1138,7 +1143,9 @@ fn note_fast_conv() { /// overflow there panics the reference in an overflow-checked build and would pass /// unnoticed here. Under the bound the fast kernel uses `i32×i32→i64` products (and /// SIMD lanes) when every operand fits in `i32`, else the reference's own `i64` -/// arithmetic; either way each output element is the same integer. +/// arithmetic; either way each output element is the same integer. Test-only +/// (`legacy_int`), with the direct networks that call it. +#[cfg(any(test, feature = "legacy_int"))] pub(crate) fn conv_acc_i64(g: &ConvGeom, x: &[i64], wt: &[i64], epi: E) -> Option> where E: Fn(usize, i64) -> i64 + Sync, diff --git a/wai/wai-rs/src/int_set_cache.rs b/wai/wai-rs/src/int_set_cache.rs index 5072e12bc..c4e865fff 100644 --- a/wai/wai-rs/src/int_set_cache.rs +++ b/wai/wai-rs/src/int_set_cache.rs @@ -83,6 +83,13 @@ impl Resident for crate::jpegai_ops::ScalePath { } } +/// `wai.image.jpegai`'s other integer networks (`jpegai_ops::Networks`): its four graphs. +impl Resident for crate::jpegai_ops::Networks { + fn heap_bytes(&self) -> u64 { + crate::jpegai_ops::Networks::heap_bytes(self) + } +} + /// The key of a loaded set: the capability whose driver loaded it, the lowering /// (integer-operators §13), the profile its graphs were loaded under (§11), and the /// SHA-256 of the members it was lowered from, as [`SetKey::of`] forms it. diff --git a/wai/wai-rs/src/jpegai_decode.rs b/wai/wai-rs/src/jpegai_decode.rs index 2988e3d2b..4d5fa2a39 100644 --- a/wai/wai-rs/src/jpegai_decode.rs +++ b/wai/wai-rs/src/jpegai_decode.rs @@ -60,11 +60,10 @@ use crate::jpegai_bitstream::{find_segment, parse_container, parse_lsbs_flags, parse_picture_header, parse_tools_header, Marker, PictureHeader, ToolsHeader}; use crate::jpegai_icci::IcciNet; -use crate::jpegai_ops::{Plane, ScalePath}; +use crate::jpegai_ops::{Networks, Plane, ScalePath}; use crate::jpegai_pipeline::{dequantize_resi, efl_chroma, efn_filter, gain_unit_scaler_vec, - lef_filter, lsbs_refine, reconstruct_yhat, reconstruct_yhat_uv}; -use crate::jpegai_synthesis::{decode_hyper, decode_uv_f32, decode_y_f32, - q16_from_symbols, IntNet, Weights}; + lef_filter, lsbs_refine}; +use crate::jpegai_synthesis::{IntNet, Weights}; /// One plane's model weights: the fully-integer hyper-scale net, the PTQ hyper decoder, /// and the PTQ synthesis net. @@ -117,23 +116,37 @@ fn q16(f: &[f32]) -> Vec { f.iter().map(|&x| round_half_away(x as f64 * 655 /// Where a plane's integers (integer-operators §13.6.1 steps 1–4) come from. #[derive(Clone, Copy)] enum Front<'a> { - /// The direct computation ([`crate::jpegai_ops::legacy`], test-only). + /// The direct computation ([`crate::jpegai_ops::legacy`], test-only), from the + /// bundle as parsed. #[cfg(any(test, feature = "legacy_int"))] - Direct, + Direct(&'a DecoderWeights), /// The integer operator set, from the bundle's scale path as loaded. Ops(&'a ScalePath), } +/// Where a plane's other integer networks (integer-operators §13.6.2) run: the hyper +/// decoder and the context stages, and the synthesis. +#[derive(Clone, Copy)] +enum Back<'a> { + /// The direct networks ([`crate::jpegai_synthesis`], [`crate::jpegai_pipeline`], + /// test-only), from the bundle as parsed. + #[cfg(any(test, feature = "legacy_int"))] + Direct(&'a DecoderWeights), + /// The integer operator set, from the bundle's networks as loaded. + Ops(&'a Networks), +} + /// A refusal of the exact decode. #[derive(Clone, Debug, PartialEq, Eq)] pub enum Refusal { /// The codestream, the target or the floating-point environment is outside what the /// decoder implements ([`check_scope`]'s reason). Scope(&'static str), - /// A refusal of the integer stages (integer-operators §13.6.1): `model_mismatch` for - /// a bundle that fails a load check or whose scale graphs do not meet the - /// capability's profile, `stream_exhausted` for an entropy substream the decode - /// cannot read (E8). + /// A refusal of the integer stages (integer-operators §13.6): `model_mismatch` for a + /// bundle that fails a load check, or whose graphs do not meet their profiles (`acc32` + /// for the scale path, `acc64` for the networks); `stream_exhausted` for an entropy + /// substream the decode cannot read (E8); `field_range` for a dequantised residual, a + /// latent or an activation of the networks that leaves i32 (§13.6.2). Ops(wai_ops::Code), } @@ -152,8 +165,9 @@ impl std::fmt::Display for Refusal { match self { Refusal::Scope(why) => write!(f, "unsupported codestream: {why}"), Refusal::Ops(c) => match c { - wai_ops::Code::ModelMismatch => write!(f, "model_mismatch: the bundle fails a load check of integer-operators §13.6.1, or its scale graphs do not meet acc32"), + wai_ops::Code::ModelMismatch => write!(f, "model_mismatch: the bundle fails a load check of integer-operators §13.6, or its graphs do not meet their profiles (acc32 for the scale path, acc64 for the networks)"), wai_ops::Code::StreamExhausted => write!(f, "stream_exhausted: an entropy substream ends before the decode it carries"), + wai_ops::Code::FieldRange => write!(f, "field_range: a dequantised residual, a latent or an activation of the integer networks leaves i32 (integer-operators §13.6.2)"), other => write!(f, "{}", other.as_str()), }, } @@ -178,8 +192,7 @@ fn payload<'a>(data: &'a [u8], segs: &[crate::jpegai_bitstream::Segment], marker /// LEF's sigma surface. #[allow(clippy::too_many_arguments)] fn decode_plane( - data: &[u8], plane: Plane, n: &NormTables, pw: &PlaneWeights, - gain: &[i64], mcm: Option<[&Weights; 4]>, front: Front<'_>, + data: &[u8], plane: Plane, n: &NormTables, gain: &[i64], front: Front<'_>, back: Back<'_>, ) -> Result<(Vec, Vec, Vec), Refusal> { const H: usize = 16; // the latent plane is 16×16; z is at 4×4 and the nets upsample ×4 const W: usize = 16; @@ -193,7 +206,7 @@ fn decode_plane( // SOZ → z → v → mask, likely, rvs, σ → SORP/SORS → y_q let ints = match front { #[cfg(any(test, feature = "legacy_int"))] - Front::Direct => crate::jpegai_ops::legacy::plane(n, &pw.hyper_scale, gain, plane, soz, latent, &grfs), + Front::Direct(w) => crate::jpegai_ops::legacy::plane(n, &plane_weights(w, plane).hyper_scale, gain, plane, soz, latent, &grfs), Front::Ops(sp) => crate::jpegai_ops::plane(sp, plane, soz, latent, &grfs)?, }; // Every symbol is a 16-bit value (E8's wrap16). @@ -202,17 +215,34 @@ fn decode_plane( // dequant → resi ; ψ ; reconstruct → ŷ ; LSBS → latent let sv = gain_unit_scaler_vec(gain, 0); let resi = dequantize_resi(&y_q, &ints.likely, &grfs, &sv, channels); - let (psi, ..) = decode_hyper(&q16_from_symbols(&ints.z), channels, 4, 4, &pw.hyper_decoder); let resi_q = q16(&resi); - let yhat = match mcm { - Some(m) => reconstruct_yhat(&resi_q, &psi, channels, H, W, m), - None => reconstruct_yhat_uv(&resi_q, &psi, channels, H, W), + let yhat = match back { + #[cfg(any(test, feature = "legacy_int"))] + Back::Direct(w) => { + use crate::jpegai_pipeline::{reconstruct_yhat, reconstruct_yhat_uv}; + use crate::jpegai_synthesis::{decode_hyper, q16_from_symbols}; + let (psi, ..) = decode_hyper(&q16_from_symbols(&ints.z), channels, 4, 4, &plane_weights(w, plane).hyper_decoder); + match plane { + Plane::Luma => reconstruct_yhat(&resi_q, &psi, channels, H, W, [&w.mcm_y[0], &w.mcm_y[1], &w.mcm_y[2], &w.mcm_y[3]]), + Plane::Chroma => reconstruct_yhat_uv(&resi_q, &psi, channels, H, W), + } + } + Back::Ops(nets) => crate::jpegai_ops::reconstruct(nets, plane, ints.z.clone(), resi_q)?, }; let yhat_f: Vec = yhat.iter().map(|&v| v as f64 as f32 / 65536.0).collect(); let lat = lsbs_refine(&yhat_f, &resi, &ints.likely, &n.lsbs_t0, &n.lsbs_t1, channels, H, W); Ok((lat, ints.v, ints.rvs)) } +/// A plane's weights in a parsed bundle. +#[cfg(any(test, feature = "legacy_int"))] +fn plane_weights(w: &DecoderWeights, p: Plane) -> &PlaneWeights { + match p { + Plane::Luma => &w.luma, + Plane::Chroma => &w.chroma, + } +} + fn grfs_flags(data: &[u8], channels: usize, marker: Marker) -> Vec { let segs = parse_container(data); let ph = parse_picture_header(data, find_segment(&segs, Marker::Pih).unwrap().start_bit()); @@ -369,31 +399,42 @@ pub fn check_scope(data: &[u8]) -> Result<(), &'static str> { scope(data).map(|_| ()) } -/// Decode a JPEG-AI codestream to RGB. The scale path and the two entropy decodes run -/// through the integer operator set (`extensions/integer-operators.md` §13.6.1, lowered -/// by `jpegai-int/1`): the bundle's scale graphs are lowered and loaded under `acc32` -/// with its tables ([`load`]), then each plane's integers come from `wai-ops`. +/// Decode a JPEG-AI codestream to RGB. Every integer stage runs through the integer +/// operator set (`extensions/integer-operators.md` §13.6, lowered by `jpegai-int/1`): +/// the bundle's scale graphs are lowered and loaded under `acc32` with its tables +/// ([`load`]), and its hyper decoders, context stages and synthesis under `acc64` +/// ([`load_networks`]); then each plane's integers, its reconstructed latent and the +/// synthesis come from `wai-ops`. /// /// Refuses ([`Refusal`]) a codestream [`check_scope`] refuses, with its reason; a bundle -/// that fails a load check of §13.6.1 or whose scale graphs do not meet `acc32` -/// (`model_mismatch`); and an entropy substream the decode cannot read -/// (`stream_exhausted`). It does not panic on a stream. +/// that fails a load check of §13.6 or whose graphs do not meet their profiles +/// (`model_mismatch`); an entropy substream the decode cannot read (`stream_exhausted`); +/// and a dequantised residual, a latent or an activation of the networks past i32 +/// (`field_range`). It does not panic on a stream. pub fn decode(data: &[u8], w: &DecoderWeights, n: &NormTables) -> Result { decode_with_stages(data, w, n, &mut |_, _| {}) } /// The bundle's scale path, lowered and loaded from the bundle as parsed /// ([`crate::jpegai_ops::load`]): a sink that decodes several codestreams against one -/// bundle loads it once and runs [`decode_loaded`]. +/// bundle loads it once, with its networks ([`load_networks`]), and runs +/// [`decode_loaded`]. pub fn load(w: &DecoderWeights, n: &NormTables) -> Result { Ok(crate::jpegai_ops::load(n, &w.luma.hyper_scale, &w.chroma.hyper_scale)?) } -/// [`decode_with_stages`] with the bundle's scale path already loaded (`sp`, from the -/// members `w` and `n` were parsed from). -pub fn decode_loaded(data: &[u8], w: &DecoderWeights, n: &NormTables, sp: &ScalePath, +/// The bundle's other integer networks (integer-operators §13.6.2), lowered and loaded +/// from the bundle as parsed ([`crate::jpegai_ops::load_networks`], under `acc64`). +pub fn load_networks(w: &DecoderWeights) -> Result { + Ok(crate::jpegai_ops::load_networks(w)?) +} + +/// [`decode_with_stages`] with the bundle's scale path and networks already loaded (`sp` +/// and `nets`, from the members `n` and the bundle were parsed from). Of the bundle's +/// float stages it reads the eICCI net `icci`; every integer stage is `sp`'s and `nets`'. +pub fn decode_loaded(data: &[u8], icci: &IcciNet, n: &NormTables, sp: &ScalePath, nets: &Networks, observe: &mut dyn FnMut(Stage, &[&[f32]])) -> Result { - run(data, w, n, Front::Ops(sp), observe) + run(data, icci, n, Front::Ops(sp), Back::Ops(nets), observe) } /// A point in the decode at which [`decode_with_stages`] reports the float values the @@ -438,18 +479,21 @@ impl Stage { /// (a final byte hides float differences smaller than its rounding step). `observe` /// sees the planes in the order Y, U, V (one slice for a latent stage). It does not /// change the decode: the returned image is the one [`decode`] returns. The codestream's -/// scope is checked first, then the bundle's scale path is loaded, then the decode runs. +/// scope is checked first, then the bundle's scale path is loaded, then its networks, +/// then the decode runs. pub fn decode_with_stages(data: &[u8], w: &DecoderWeights, n: &NormTables, observe: &mut dyn FnMut(Stage, &[&[f32]])) -> Result { scope(data).map_err(Refusal::Scope)?; let sp = load(w, n)?; - decode_loaded(data, w, n, &sp, observe) + let nets = load_networks(w)?; + decode_loaded(data, &w.icci, n, &sp, &nets, observe) } /// The decode as it ran before its integer stages ran through the operator set /// (test-only, `legacy_int`): each plane's integers from the direct computation -/// ([`crate::jpegai_ops::legacy`]), which panics on a stream that runs out. `None` where -/// the decode refused. +/// ([`crate::jpegai_ops::legacy`]), which panics on a stream that runs out, and the +/// direct hyper decoders, context stages and synthesis, which compute on past the +/// operator set's ranges. `None` where the decode refused. #[cfg(any(test, feature = "legacy_int"))] pub mod legacy { use super::*; @@ -462,17 +506,17 @@ pub mod legacy { /// The direct [`super::decode_with_stages`]. pub fn decode_with_stages(data: &[u8], w: &DecoderWeights, n: &NormTables, observe: &mut dyn FnMut(Stage, &[&[f32]])) -> Option { - run(data, w, n, Front::Direct, observe).ok() + run(data, &w.icci, n, Front::Direct(w), Back::Direct(w), observe).ok() } } /// The decode, with each plane's integers from `front`. -fn run(data: &[u8], w: &DecoderWeights, n: &NormTables, front: Front<'_>, +fn run(data: &[u8], icci: &IcciNet, n: &NormTables, front: Front<'_>, back: Back<'_>, observe: &mut dyn FnMut(Stage, &[&[f32]])) -> Result { let (ph, th) = scope(data).map_err(Refusal::Scope)?; let (gain_y, gain_uv) = match front { #[cfg(any(test, feature = "legacy_int"))] - Front::Direct => { + Front::Direct(_) => { if n.gain_y.len() != 160 || n.gain_uv.len() != 96 || n.per_channel == 0 { return Err(Refusal::Ops(wai_ops::Code::ModelMismatch)); } @@ -483,16 +527,29 @@ fn run(data: &[u8], w: &DecoderWeights, n: &NormTables, front: Front<'_>, let (h, w_) = (ph.img_height as usize, ph.img_width as usize); // ---- luma + chroma latents → pixel planes (float, pre-round) ---- - let mcm = [&w.mcm_y[0], &w.mcm_y[1], &w.mcm_y[2], &w.mcm_y[3]]; - let (y_lat, y_v, y_rvs) = decode_plane(data, Plane::Luma, n, &w.luma, gain_y, Some(mcm), front)?; + let (y_lat, y_v, y_rvs) = decode_plane(data, Plane::Luma, n, gain_y, front, back)?; observe(Stage::LatentY, &[&y_lat]); - let (uv_lat, ..) = decode_plane(data, Plane::Chroma, n, &w.chroma, gain_uv, None, front)?; + let (uv_lat, ..) = decode_plane(data, Plane::Chroma, n, gain_uv, front, back)?; observe(Stage::LatentUv, &[&uv_lat]); - let mut yp = decode_y_f32(&q16(&y_lat), &w.luma.synthesis); - let mut cat = q16(&y_lat); - cat.extend(q16(&uv_lat)); - let uv = decode_uv_f32(&cat, &w.chroma.synthesis); + // The synthesis: the latents in Q16 in, the planes in Q16 out, read as `v / 2^16`. + let (mut yp, uv) = match back { + #[cfg(any(test, feature = "legacy_int"))] + Back::Direct(w) => { + use crate::jpegai_synthesis::{decode_uv_f32, decode_y_f32}; + let yp = decode_y_f32(&q16(&y_lat), &w.luma.synthesis); + let mut cat = q16(&y_lat); + cat.extend(q16(&uv_lat)); + (yp, decode_uv_f32(&cat, &w.chroma.synthesis)) + } + Back::Ops(nets) => { + let (ly, luv) = (q16(&y_lat), q16(&uv_lat)); + let yp = crate::jpegai_ops::synthesize_y(nets, ly.clone())?; + let uv = crate::jpegai_ops::synthesize_uv(nets, ly, luv)?; + let f = |v: Vec| -> Vec { v.into_iter().map(|x| x as f32 / 65536.0).collect() }; + (f(yp), f(uv)) + } + }; let (mut up, mut vp) = (uv[..h * w_].to_vec(), uv[h * w_..].to_vec()); observe(Stage::Synthesis, &[&yp, &up, &vp]); @@ -508,7 +565,7 @@ fn run(data: &[u8], w: &DecoderWeights, n: &NormTables, front: Front<'_>, // eICCI — [0,1] domain: normalise in, scale back out. if th.icci_enabled { let nrm = |p: &[f32]| p.iter().map(|&x| x / 255.0).collect::>(); - let (yo, uo, vo) = w.icci.forward(&nrm(&yp), &nrm(&up), &nrm(&vp), h, w_); + let (yo, uo, vo) = icci.forward(&nrm(&yp), &nrm(&up), &nrm(&vp), h, w_); let den = |p: Vec| p.into_iter().map(|x| x * 255.0).collect::>(); yp = den(yo); up = den(uo); vp = den(vo); observe(Stage::Icci, &[&yp, &up, &vp]); diff --git a/wai/wai-rs/src/jpegai_icci.rs b/wai/wai-rs/src/jpegai_icci.rs index 6fc68bb27..c8137308b 100644 --- a/wai/wai-rs/src/jpegai_icci.rs +++ b/wai/wai-rs/src/jpegai_icci.rs @@ -16,6 +16,8 @@ // On the JPEG AI exact decode path: no platform math-library call (see clippy.toml). #![deny(clippy::disallowed_methods)] +pub use crate::jpegai_synthesis::BadMember; + /// One-level Haar DWT: `[c, h, w]` → `[4c, h/2, w/2]`, channels grouped `LL, HL, LH, HH`. /// `h` and `w` must be even. Returns the coefficients and the output dims. pub fn haar_dwt(x: &[f32], c: usize, h: usize, w: usize) -> (Vec, usize, usize) { @@ -304,40 +306,48 @@ impl IcciNet { /// Parse the whole eICCI net from the `icci` weight export /// (`{luma, chroma, conv_last_v, scale_v}`, produced by - /// `tools/wai_jpegai_export_weights.py icci`). - pub fn from_json(v: &serde_json::Value) -> Self { - IcciNet { - luma: IcciPath::from_json(&v["luma"]), - chroma: IcciPath::from_json(&v["chroma"]), - conv_last_v: Conv::from_json(&v["conv_last_v"]), - scale_v: v["scale_v"].as_f64().unwrap() as f32, - } + /// `tools/wai_jpegai_export_weights.py icci`). A member missing or of another type is + /// refused, named by its path ([`BadMember`]); the loader used to panic on one. + pub fn from_json(v: &serde_json::Value) -> Result { + Ok(IcciNet { + luma: IcciPath::from_json(&v["luma"]).map_err(|e| e.under("luma"))?, + chroma: IcciPath::from_json(&v["chroma"]).map_err(|e| e.under("chroma"))?, + conv_last_v: Conv::from_json(&v["conv_last_v"]).map_err(|e| e.under("conv_last_v"))?, + scale_v: v["scale_v"].as_f64().ok_or_else(|| BadMember("scale_v".into()))? as f32, + }) } } impl Conv { - /// Parse a BN-folded conv from an export node `{w, b, cin, cout, kh, kw, ph, pw}`. - pub fn from_json(v: &serde_json::Value) -> Self { - let g = |k: &str| v[k].as_u64().unwrap() as usize; - let f = |k: &str| v[k].as_array().unwrap().iter().map(|x| x.as_f64().unwrap() as f32).collect(); - Conv { w: f("w"), b: f("b"), cin: g("cin"), cout: g("cout"), - kh: g("kh"), kw: g("kw"), ph: g("ph"), pw: g("pw") } + /// Parse a BN-folded conv from an export node `{w, b, cin, cout, kh, kw, ph, pw}`. A + /// field missing or of another type is refused ([`BadMember`], named by the field). + pub fn from_json(v: &serde_json::Value) -> Result { + let g = |k: &str| v[k].as_u64().and_then(|x| usize::try_from(x).ok()).ok_or_else(|| BadMember(k.into())); + let f = |k: &str| -> Result, BadMember> { + v[k].as_array().and_then(|a| a.iter().map(|x| x.as_f64().map(|x| x as f32)).collect::>>()).ok_or_else(|| BadMember(k.into())) + }; + Ok(Conv { w: f("w")?, b: f("b")?, cin: g("cin")?, cout: g("cout")?, + kh: g("kh")?, kw: g("kw")?, ph: g("ph")?, pw: g("pw")? }) } } impl IcciPath { /// Parse one plane-path (`{conv_first, blocks:[{c1,c2,scale}], conv_last, scale}`). - pub fn from_json(v: &serde_json::Value) -> Self { - IcciPath { - conv_first: Conv::from_json(&v["conv_first"]), - blocks: v["blocks"].as_array().unwrap().iter().map(|b| ResBlock { - conv1: Conv::from_json(&b["c1"]), - conv2: Conv::from_json(&b["c2"]), - scale: b["scale"].as_f64().unwrap() as f32, - }).collect(), - conv_last: Conv::from_json(&v["conv_last"]), - scale: v["scale"].as_f64().unwrap() as f32, - } + pub fn from_json(v: &serde_json::Value) -> Result { + let blocks = v["blocks"].as_array().ok_or_else(|| BadMember("blocks".into()))?; + Ok(IcciPath { + conv_first: Conv::from_json(&v["conv_first"]).map_err(|e| e.under("conv_first"))?, + blocks: blocks.iter().enumerate().map(|(i, b)| -> Result { + let at = |e: BadMember| e.under(&format!("blocks.{i}")); + Ok(ResBlock { + conv1: Conv::from_json(&b["c1"]).map_err(|e| at(e.under("c1")))?, + conv2: Conv::from_json(&b["c2"]).map_err(|e| at(e.under("c2")))?, + scale: b["scale"].as_f64().ok_or_else(|| at(BadMember("scale".into())))? as f32, + }) + }).collect::>()?, + conv_last: Conv::from_json(&v["conv_last"]).map_err(|e| e.under("conv_last"))?, + scale: v["scale"].as_f64().ok_or_else(|| BadMember("scale".into()))? as f32, + }) } } diff --git a/wai/wai-rs/src/jpegai_ops.rs b/wai/wai-rs/src/jpegai_ops.rs index 7738bf9c8..9ef600c87 100644 --- a/wai/wai-rs/src/jpegai_ops.rs +++ b/wai/wai-rs/src/jpegai_ops.rs @@ -1,6 +1,7 @@ //! The integer stages of `wai.image.jpegai` through the integer operator set -//! `wai-ops/1`: the scale path and the two entropy decodes of -//! `extensions/integer-operators.md` §13.6.1, lowered by `jpegai-int/1`. +//! `wai-ops/1`, lowered by `jpegai-int/1`: the scale path and the two entropy decodes of +//! `extensions/integer-operators.md` §13.6.1, and the hyper decoders, context stages and +//! synthesis of §13.6.2 ([`Networks`]). //! //! A bundle's scale path is lowered and loaded once ([`load`], [`load_bytes`]): the //! load checks of §13.6.1 on `norm.json`, the two scale graphs `hs_y` and `hs_uv` @@ -314,6 +315,107 @@ pub fn fac_rows(cdfs_y: &[i64], cdfs_uv: &[i64], p: Plane) -> Vec> { rows } +// ------------------------------------------------------------ §13.6.2's networks + +/// The profile the other integer networks are loaded under (§13.6.2, §11's +/// `role_profiles`): `acc64`. Their layer normalisations, attention and Q16 activations +/// form values above `i32` whatever their weights (§7.3), so no bundle's networks meet +/// `acc32`. +pub(crate) const NETS_PROFILE: Profile = Profile::Acc64; + +/// A bundle's other integer networks, lowered and loaded (§13.6.2): `rec_y` and `rec_uv` +/// (the hyper decoder, and for luma the four context stages), and `syn_y` and `syn_uv` +/// (the synthesis). +pub struct Networks { + rec: [Loaded; 2], + syn: [Loaded; 2], +} + +impl Networks { + /// The graph of `role` (`rec_y`, `rec_uv`, `syn_y` or `syn_uv`), as loaded. + pub fn graph(&self, role: &str) -> Option<&Loaded> { + match role { + "rec_y" => Some(&self.rec[0]), + "rec_uv" => Some(&self.rec[1]), + "syn_y" => Some(&self.syn[0]), + "syn_uv" => Some(&self.syn[1]), + _ => None, + } + } + /// What the networks hold on the heap: the four graphs. + pub fn heap_bytes(&self) -> u64 { + self.rec.iter().chain(&self.syn).map(|g| g.graph().heap_bytes()).sum() + } +} + +/// The networks this crate parsed ([`crate::jpegai_synthesis::Weights`]) in the form +/// `wai-ops` lowers them from: the two hyper decoders, the four context stages and the +/// two synthesis networks. +pub fn nets_of(w: &crate::jpegai_decode::DecoderWeights) -> Result { + let m = &w.mcm_y; + Ok(wai_ops::lower::jpegai_nets::JpegaiNets { + hyp: [w.luma.hyper_decoder.ptq()?, w.chroma.hyper_decoder.ptq()?], + mcm: [m[0].ptq()?, m[1].ptq()?, m[2].ptq()?, m[3].ptq()?], + synth: [w.luma.synthesis.ptq()?, w.chroma.synthesis.ptq()?], + }) +} + +/// Lower and load the networks of a parsed bundle under [`NETS_PROFILE`]. +pub fn load_networks(w: &crate::jpegai_decode::DecoderWeights) -> Result { + load_networks_net(nets_of(w)?) +} + +/// Lower and load the networks from their files' bytes, in +/// `wai_ops::lower::jpegai_nets::NET_MEMBERS`' order. +pub fn load_networks_bytes(files: [&[u8]; 8]) -> Result { + load_networks_net(wai_ops::lower::jpegai_nets::parse_nets(files)?) +} + +/// The networks of a parsed bundle, loaded under [`NETS_PROFILE`]. +pub fn load_networks_net(n: wai_ops::lower::jpegai_nets::JpegaiNets) -> Result { + let [ry, ruv, sy, suv] = wai_ops::lower::jpegai_nets::nets_loaded(n, NETS_PROFILE)?; + Ok(Networks { rec: [ry, ruv], syn: [sy, suv] }) +} + +fn run_graph(g: &Loaded, inputs: Vec) -> Result { + let mut out = wai_ops::run_with(g, inputs, &[], &mut wai_ops::Sequence::new(), &crate::int_ops::Host)?; + Ok(out.swap_remove(0)) +} + +/// One plane's reconstructed latent `ŷ [C, 16, 16]` (§13.6.2, `rec_y` or `rec_uv`): the +/// hyper decoder on `z [C, 4, 4]` and, for luma, the four context stages, with the +/// dequantised residual `resi` (Q16, `[C, 16, 16]`). A residual value outside `i32` is +/// refused (`field_range`), and so is any activation outside `i32`. +pub fn reconstruct(n: &Networks, p: Plane, z: Vec, resi: Vec) -> Result, Refusal> { + let c = p.channels() as u32; + let out = run_graph(&n.rec[p as usize], vec![Tensor::new(c, Z_SIDE, Z_SIDE, z), Tensor::new(c, SIDE, SIDE, resi)])?; + if (out.c, out.h, out.w) != (c, SIDE, SIDE) { + return Err(refuse()); + } + Ok(out.data) +} + +/// The luma plane `[256, 256]` out of the synthesis, denormalised, in Q16 (§13.6.2, +/// `syn_y`), from the luma latent `[160, 16, 16]` in Q16. +pub fn synthesize_y(n: &Networks, latent_y: Vec) -> Result, Refusal> { + let out = run_graph(&n.syn[0], vec![Tensor::new(160, SIDE, SIDE, latent_y)])?; + if (out.c, out.h, out.w) != (1, 256, 256) { + return Err(refuse()); + } + Ok(out.data) +} + +/// The chroma planes U then V, each `[256, 256]`, out of the synthesis, denormalised, in +/// Q16 (§13.6.2, `syn_uv`), from the luma latent `[160, 16, 16]` and the chroma latent +/// `[96, 16, 16]` in Q16. +pub fn synthesize_uv(n: &Networks, latent_y: Vec, latent_uv: Vec) -> Result, Refusal> { + let out = run_graph(&n.syn[1], vec![Tensor::new(160, SIDE, SIDE, latent_y), Tensor::new(96, SIDE, SIDE, latent_uv)])?; + if (out.c, out.h, out.w) != (2, 256, 256) { + return Err(refuse()); + } + Ok(out.data) +} + /// The front half as the exact decoder computed it before it decoded through the /// operator set (test-only, `legacy_int`): the crate's mANS port, its hyper-scale network /// and the pipeline's derivations. It panics where its port panics, on a stream that runs @@ -415,4 +517,43 @@ mod fast_kernels { } } + /// The other integer networks through their lowering (§13.6.2: the committed bundle's + /// four graphs, loaded under `acc64` as `jpegai_ops` loads them): under every fast + /// policy every convolution and transposed convolution of each graph runs on the fast + /// kernel, and every value is the interpreter's, on inputs at small sizes over a + /// range of magnitudes. + #[test] + fn the_jpegai_networks_run_their_convolutions_on_the_fast_kernel() { + let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../ops-conformance/sets/jpegai"); + let files: Vec> = wai_ops::lower::jpegai_nets::NET_MEMBERS.iter().map(|n| std::fs::read(dir.join(n)).unwrap()).collect(); + let nets = load_networks_bytes(std::array::from_fn(|i| files[i].as_slice())).unwrap(); + let mut r = Rng(0x0D2C_007B); + for role in ["rec_y", "rec_uv", "syn_y", "syn_uv"] { + let mut ran = 0; + let g = nets.graph(role).unwrap(); + let convs = g.graph().ops.iter().filter(|o| matches!(o.p, wai_ops::graph::Params::Conv { .. } | wai_ops::graph::Params::ConvT { .. })).count() as u64; + for k in 0..4 { + let a = 1i64 << (2 + 3 * k); + let ins: Vec = g.graph().inputs.iter().enumerate().map(|(i, rec)| { + let c = g.graph().tensors[rec.tensor as usize].channels; + let (h, w) = if role.starts_with("rec") { if i == 0 { (1, 1) } else { (4, 4) } } else { (2, 2) }; + let n = (c * h * w) as usize; + let d = if role.starts_with("rec") && i == 0 { (0..n).map(|_| r.below(64) as i64 - 31).collect() } else { r.vec(n, a, 10) }; + Tensor::new(c, h, w, d) + }).collect(); + let run = || wai_ops::run_with(g, ins.clone(), &[], &mut wai_ops::Sequence::new(), &crate::int_ops::Host); + let (want, none) = fast_conv_runs(|| with_policy(Policy::reference(), run)); + assert_eq!(none, 0, "{role}: the reference policy runs no fast kernel"); + for p in FAST { + let (got, runs) = fast_conv_runs(|| with_policy(p, run)); + assert!(got == want, "{role} {p:?}: the outputs differ from the interpreter alone"); + if want.is_ok() { + assert_eq!(runs, convs, "{role} {p:?}: every convolution runs on the fast kernel"); + ran += 1; + } + } + } + assert!(ran > 0, "{role}: some decode completes, so its every operator ran"); + } + } } diff --git a/wai/wai-rs/src/jpegai_pipeline.rs b/wai/wai-rs/src/jpegai_pipeline.rs index 14fb33824..5b71dade6 100644 --- a/wai/wai-rs/src/jpegai_pipeline.rs +++ b/wai/wai-rs/src/jpegai_pipeline.rs @@ -27,7 +27,8 @@ //! between YUV and RGB (BT.709 full-range, data normalised to [0,1]) — the last pixel //! transform before the output image. //! -//! **Latent reconstruction.** [`reconstruct_yhat`] is the SGMM autoregressive spine: +//! **Latent reconstruction.** [`reconstruct_yhat`] (test-only, `legacy_int`: the decode +//! runs it as the graph `rec_y` of integer-operators §13.6.2) is the SGMM autoregressive spine: //! it turns the dequantized residual back into the synthesis-input latent `y_hat` by //! running the four MCM context stages over a 2×2 checkerboard, each stage predicting //! a mean from the hyper params plus the already-reconstructed stages. @@ -36,15 +37,18 @@ #![deny(clippy::disallowed_methods)] use crate::float_repro::{exp, round_half_away, round_half_even}; +#[cfg(any(test, feature = "legacy_int"))] use crate::jpegai_synthesis::{mcm_stage0, mcm_stage_n, Weights}; /// The 2×2 sub-lattice each MCM stage owns, in reference stage order: /// stage 0 → (0,0), stage 1 → (1,1), stage 2 → (0,1), stage 3 → (1,0). /// (The reference's `down_shuffle` returns `(k00, k11, k01, k10)`; `up_shuffle` is /// its exact inverse. The diagonal pair is decoded first — a checkerboard.) +#[cfg(any(test, feature = "legacy_int"))] const SUBPOS: [(usize, usize); 4] = [(0, 0), (1, 1), (0, 1), (1, 0)]; /// Split `[c, 2h, 2w]` into the four `[c, h, w]` sub-lattices (reference `down_shuffle`). +#[cfg(any(test, feature = "legacy_int"))] fn down_shuffle(y: &[i64], c: usize, h2: usize, w2: usize) -> [Vec; 4] { let (h, w) = (h2 / 2, w2 / 2); let mut parts = std::array::from_fn(|_| vec![0i64; c * h * w]); @@ -61,6 +65,7 @@ fn down_shuffle(y: &[i64], c: usize, h2: usize, w2: usize) -> [Vec; 4] { } /// Interleave the four `[c, h, w]` sub-lattices back into `[c, 2h, 2w]` (`up_shuffle`). +#[cfg(any(test, feature = "legacy_int"))] fn up_shuffle(parts: &[Vec; 4], c: usize, h: usize, w: usize) -> Vec { let (h2, w2) = (h * 2, w * 2); let mut out = vec![0i64; c * h2 * w2]; @@ -95,6 +100,7 @@ fn up_shuffle(parts: &[Vec; 4], c: usize, h: usize, w: usize) -> Vec { /// stage-0 model ignores them). The context concatenation is **ascending** (`y_0` /// first) — the reference does `cat(y_hat_list)`, despite the ONNX input being /// labelled `y[1-0]`. +#[cfg(any(test, feature = "legacy_int"))] pub fn reconstruct_yhat(resi: &[i64], psi: &[i64], c: usize, h2: usize, w2: usize, mcm: [&Weights; 4]) -> Vec { let (h, w) = (h2 / 2, w2 / 2); let plane = c * h * w; @@ -134,6 +140,7 @@ pub fn reconstruct_yhat(resi: &[i64], psi: &[i64], c: usize, h2: usize, w2: usiz /// is deliberate: the two paths are structurally different, not parameterised. /// /// `resi` is `[c, 2h, 2w]` (Q16); `psi` is `[4c, h, w]` (Q16). Returns `[c, 2h, 2w]`. +#[cfg(any(test, feature = "legacy_int"))] pub fn reconstruct_yhat_uv(resi: &[i64], psi: &[i64], c: usize, h2: usize, w2: usize) -> Vec { let (h, w) = (h2 / 2, w2 / 2); let plane = c * h * w; diff --git a/wai/wai-rs/src/jpegai_synthesis.rs b/wai/wai-rs/src/jpegai_synthesis.rs index 972b3b7ba..5c27c8dca 100644 --- a/wai/wai-rs/src/jpegai_synthesis.rs +++ b/wai/wai-rs/src/jpegai_synthesis.rs @@ -1,3 +1,8 @@ +//! The weight stores of `wai.image.jpegai`'s integer networks ([`Weights`], [`IntNet`]) +//! and, test-only (`legacy_int`), the direct networks the exact decoder ran before they +//! ran through the integer operator set (`crate::jpegai_ops`, integer-operators §13.6): +//! the reference the golden-equality tests and the differential hold the graphs to. +//! //! Whole-net **byte-exact integer JPEG-AI synthesis** (model_y + model_uv, tools_0) //! — threads the real Restormer topology (traced from the ISO reference ONNX) //! through the integer ops in [`crate::int_transformer`] + [`crate::int_hyper_synth`], @@ -30,13 +35,43 @@ // On the JPEG AI exact decode path: no platform math-library call (see clippy.toml). #![deny(clippy::disallowed_methods)] +#[cfg(any(test, feature = "legacy_int"))] use crate::int_kernels::{par_map, par_zip}; +#[cfg(any(test, feature = "legacy_int"))] use crate::int_transformer as it; use std::collections::HashMap; +#[cfg(any(test, feature = "legacy_int"))] const F: u32 = 16; +#[cfg(any(test, feature = "legacy_int"))] const S: i64 = 1 << F; +/// A member of a weight file that is not of its kind's form, by its name (`""` for the +/// file itself, when it is not a JSON object). The bundle is refused with +/// `model_mismatch` (`extensions/integer-operators.md` §13.6.2, *The members*); the +/// loaders used to panic on one. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct BadMember(pub String); + +impl std::fmt::Display for BadMember { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + if self.0.is_empty() { + write!(f, "model_mismatch: a weight file is not a JSON object") + } else { + write!(f, "model_mismatch: the weight member `{}` is not of its kind's form", self.0) + } + } +} + +impl std::error::Error for BadMember {} + +impl BadMember { + /// The same member, named under `parent` (`parent.name`). + pub fn under(self, parent: &str) -> BadMember { + BadMember(if self.0.is_empty() { parent.to_string() } else { format!("{parent}.{}", self.0) }) + } +} + /// A sink-supplied weight store: the PTQ export JSON (`{name: {kind, dims, ...}}`) /// parsed into typed tensors. `conv`/`q16` fetch by full initializer name. pub struct Weights { @@ -45,35 +80,47 @@ pub struct Weights { } impl Weights { - /// Parse the exported weights JSON. - pub fn from_json(v: &serde_json::Value) -> Self { + /// Parse the exported weights JSON: each member of kind `conv` with integer `dims`, + /// integer weights `w`, an integer `mult` and a non-negative `shift`, and each of kind + /// `q16` with integer values `v` (§13.6.2, *The members*); members of another kind are + /// ignored. A member of either kind with a field missing or of another type is refused + /// ([`BadMember`]), and so is a file that is not an object. (The ranges and the shapes + /// are the lowering's to check.) + pub fn from_json(v: &serde_json::Value) -> Result { let mut conv = HashMap::new(); let mut q16 = HashMap::new(); - for (k, e) in v.as_object().expect("weights root object") { - match e["kind"].as_str() { + let ints = |x: &serde_json::Value| -> Option> { x.as_array()?.iter().map(serde_json::Value::as_i64).collect() }; + for (k, e) in v.as_object().ok_or_else(|| BadMember(String::new()))? { + let bad = || BadMember(k.clone()); + match e.get("kind").and_then(serde_json::Value::as_str) { Some("conv") => { - let w = e["w"].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect(); - let dims = e["dims"].as_array().unwrap().iter().map(|x| x.as_u64().unwrap() as usize).collect(); - conv.insert(k.clone(), (w, dims, e["mult"].as_i64().unwrap(), e["shift"].as_u64().unwrap() as u32)); + let w = ints(&e["w"]).ok_or_else(bad)?; + let dims = e["dims"].as_array().and_then(|a| a.iter().map(|x| x.as_u64().and_then(|d| usize::try_from(d).ok())).collect::>>()).ok_or_else(bad)?; + let mult = e["mult"].as_i64().ok_or_else(bad)?; + let shift = e["shift"].as_u64().and_then(|s| u32::try_from(s).ok()).ok_or_else(bad)?; + conv.insert(k.clone(), (w, dims, mult, shift)); } Some("q16") => { - q16.insert(k.clone(), e["v"].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect()); + q16.insert(k.clone(), ints(&e["v"]).ok_or_else(bad)?); } _ => {} } } - Weights { conv, q16 } + Ok(Weights { conv, q16 }) } /// Output-channel count of a conv, read from its weight dims. Lets the nets be /// driven by their own widths instead of a hardcoded plane size. + #[cfg(any(test, feature = "legacy_int"))] pub fn out_channels(&self, module: &str) -> usize { self.conv.get(&format!("{module}.weight")) .unwrap_or_else(|| panic!("missing conv {module}")).1[0] } + #[cfg(any(test, feature = "legacy_int"))] fn bias(&self, module: &str, cout: usize) -> Vec { self.q16.get(&format!("{module}.bias")).cloned().unwrap_or_else(|| vec![0; cout]) } /// grouped conv by module name (weight `.weight`, bias `.bias`). + #[cfg(any(test, feature = "legacy_int"))] fn conv(&self, m: &str, x: &[i64], cin: usize, h: usize, w: usize, k: usize, stride: usize, pad: usize, groups: usize) -> (Vec, usize, usize) { let (wt, dims, mult, shift) = self.conv.get(&format!("{m}.weight")).unwrap_or_else(|| panic!("missing conv {m}")); let cout = dims[0]; @@ -82,6 +129,7 @@ impl Weights { let (o, ho, wo) = it::conv_grouped(x, cin, h, w, wt, cout, k, stride, pad, groups, &m_v, &b, *shift); (o, ho, wo) } + #[cfg(any(test, feature = "legacy_int"))] fn convt(&self, m: &str, x: &[i64], cin: usize, h: usize, w: usize, k: usize, stride: usize, pad: usize, opad: usize) -> (Vec, usize, usize) { let (wt, dims, mult, shift) = self.conv.get(&format!("{m}.weight")).unwrap_or_else(|| panic!("missing convT {m}")); let cout = dims[1]; // ConvTranspose weight [cin, cout, k, k] @@ -89,21 +137,47 @@ impl Weights { let b = self.bias(m, cout); it::conv_transpose(x, cin, h, w, wt, cout, k, stride, pad, opad, &m_v, &b, *shift) } + #[cfg(any(test, feature = "legacy_int"))] fn q16v(&self, name: &str) -> Vec { self.q16.get(name).cloned().unwrap_or_else(|| panic!("missing q16 {name}")) } + /// The file's members of kind `conv` and `q16`, in the form `wai-ops` lowers them + /// from (`extensions/integer-operators.md` §13.6.2, *The members*): the lowering of + /// the file's bytes reads these same members. A shift past 127, or weights of another + /// count than their dims give, which no such member holds, is refused + /// (`model_mismatch`). Two members of one name, which the bytes' lowering refuses, + /// this parsed form cannot hold. + pub fn ptq(&self) -> Result { + use wai_ops::lower::jpegai_nets::{PtqMember, PtqNet}; + let refuse = || wai_ops::Refusal::new(wai_ops::Code::ModelMismatch, wai_ops::Site::Lowering); + let mut net = PtqNet::default(); + for (k, (w, dims, mult, shift)) in &self.conv { + let shift = u8::try_from(*shift).ok().filter(|&s| s <= 127).ok_or_else(refuse)?; + if dims.iter().try_fold(1usize, |a, &d| a.checked_mul(d)) != Some(w.len()) { + return Err(refuse()); + } + net.insert(k.clone(), PtqMember::Conv { dims: dims.iter().map(|&d| d as u64).collect(), w: w.clone(), mult: *mult, shift })?; + } + for (k, v) in &self.q16 { + net.insert(k.clone(), PtqMember::Q16 { v: v.clone() })?; + } + Ok(net) + } } // The element-wise helpers compute each output element with the same pure // function of its own inputs whatever the partition; `par_map`/`par_zip` only spread // the elements over workers (one worker under the reference policy). +#[cfg(any(test, feature = "legacy_int"))] fn relu(x: &[i64]) -> Vec { par_map(x, |v| if v < 0 { 0 } else { v }) } +#[cfg(any(test, feature = "legacy_int"))] fn relu6_of(x: &[i64]) -> Vec { par_map(x, |v| it::clip(v, 0, 6 * S)) } /// conv1 → ReLU → conv2 → + input residual block (`first_stage.0.0`, `CAB.*`). +#[cfg(any(test, feature = "legacy_int"))] fn res_block(p: &str, x: &[i64], c: usize, h: usize, w: usize, wt: &Weights) -> Vec { let (a, _, _) = wt.conv(&format!("{p}.conv1"), x, c, h, w, 3, 1, 1, 1); let ar = relu(&a); @@ -112,6 +186,7 @@ fn res_block(p: &str, x: &[i64], c: usize, h: usize, w: usize, wt: &Weights) -> } /// DepthToSpace **CRD** mode (PyTorch PixelShuffle): the net uses CRD, not the DCR /// in `int_transformer::depth_to_space`. `out[cc, h·b+bh, w·b+bw] = in[cc·b² + bh·b + bw, h, w]`. +#[cfg(any(test, feature = "legacy_int"))] fn depth_to_space_crd(x: &[i64], c: usize, h: usize, w: usize, b: usize) -> (Vec, usize, usize, usize) { let co = c / (b * b); let (ho, wo) = (h * b, w * b); @@ -130,20 +205,24 @@ fn depth_to_space_crd(x: &[i64], c: usize, h: usize, w: usize, b: usize) -> (Vec } (out, co, ho, wo) } +#[cfg(any(test, feature = "legacy_int"))] fn emul(a: &[i64], b: &[i64]) -> Vec { par_zip(a, b, |x, y| ((x as i128 * y as i128) >> F) as i64) } +#[cfg(any(test, feature = "legacy_int"))] fn eadd(a: &[i64], b: &[i64]) -> Vec { par_zip(a, b, |x, y| x + y) } /// Residual multiplicative gate `x · (f(x) + 1)` (the exact form: the ONNX gate /// `Add`s carry const 1.0 with no activation). Near-identity when f≈0. +#[cfg(any(test, feature = "legacy_int"))] fn gate(x: &[i64], modulation: &[i64]) -> Vec { let one_plus: Vec = par_map(modulation, |v| v + S); emul(x, &one_plus) } /// One TAB (Restormer block) via the merged executors, weights by module prefix. +#[cfg(any(test, feature = "legacy_int"))] fn tab(p: &str, x: &[i64], c: usize, heads: usize, h: usize, w: usize, wt: &Weights, eps: u128) -> Vec { let attn = it::MdtaBlockWeights { c, heads, h, w, @@ -187,29 +266,35 @@ fn tab(p: &str, x: &[i64], c: usize, heads: usize, h: usize, w: usize, wt: &Weig /// in Q16. The reference post-filters operate on this **float** value (0..255) and round /// to u8 only after BT.709, so [`decode_y`]/[`decode_uv`] round here for a standalone /// plane while [`decode_y_f32`]/[`decode_uv_f32`] keep the float for the filter chain. +#[cfg(any(test, feature = "legacy_int"))] fn denorm_q16(v: i64) -> i64 { let half = S / 2; (v * 128 + 127 * S + half).clamp(0, 255 * S) } +#[cfg(any(test, feature = "legacy_int"))] fn denorm_u8(planes: &[i64]) -> Vec { let half = S / 2; planes.iter().map(|&v| ((denorm_q16(v) + half) >> F).clamp(0, 255) as u8).collect() } +#[cfg(any(test, feature = "legacy_int"))] fn denorm_f32(planes: &[i64]) -> Vec { planes.iter().map(|&v| denorm_q16(v) as f32 / S as f32).collect() } +#[cfg(any(test, feature = "legacy_int"))] pub fn decode_y(latent: &[i64], wt: &Weights) -> Vec { denorm_u8(&decode_y_planes(latent, wt)) } /// The luma plane as **float** samples in `[0,255]` (pre-round) — the domain the /// post-filter chain runs in. +#[cfg(any(test, feature = "legacy_int"))] pub fn decode_y_f32(latent: &[i64], wt: &Weights) -> Vec { denorm_f32(&decode_y_planes(latent, wt)) } /// The luma synthesis up to (but not including) the output denormalize: the raw /// `conv4_t` output `[1,256,256]` in Q16. +#[cfg(any(test, feature = "legacy_int"))] fn decode_y_planes(latent: &[i64], wt: &Weights) -> Vec { let eps = (1e-5 * (1u128 << 32) as f64) as u128; // LN eps = 1e-5 // first_stage.0.0 residual block: conv1→ReLU→conv2 + latent [160,16,16] @@ -278,17 +363,20 @@ fn decode_y_planes(latent: &[i64], wt: &Weights) -> Vec { /// • TAM: the two TABs run **at the full DepthToSpace resolution** — no ds/us conv; /// • tail: `conv4_t(64→8, ⇑2)` → `DepthToSpace(CRD,2)` → denorm → **2-channel UV**. /// Widths are 64 (vs model_y's 128). CAB / iact gating / TAB / denorm are identical. +#[cfg(any(test, feature = "legacy_int"))] pub fn decode_uv(latent: &[i64], wt: &Weights) -> Vec { denorm_u8(&decode_uv_planes(latent, wt)) } /// The two chroma planes as **float** samples in `[0,255]` (pre-round) — the domain the /// post-filter chain runs in. +#[cfg(any(test, feature = "legacy_int"))] pub fn decode_uv_f32(latent: &[i64], wt: &Weights) -> Vec { denorm_f32(&decode_uv_planes(latent, wt)) } /// The chroma synthesis up to (but not including) the output denormalize: the raw /// depth-to-space output `[2,256,256]` in Q16. +#[cfg(any(test, feature = "legacy_int"))] fn decode_uv_planes(latent: &[i64], wt: &Weights) -> Vec { let eps = (1e-5 * (1u128 << 32) as f64) as u128; // LN eps = 1e-5 let (h0, w0) = (16usize, 16usize); @@ -357,10 +445,12 @@ fn decode_uv_planes(latent: &[i64], wt: &Weights) -> Vec { /// Lift entropy-decoded integer symbols into the Q16 fixed-point the PTQ nets expect. /// Named rather than inline so the scaling is visible at the call site — see the /// failure mode described on [`decode_hyper`]. +#[cfg(any(test, feature = "legacy_int"))] pub fn q16_from_symbols(symbols: &[i64]) -> Vec { symbols.iter().map(|&v| v * S).collect() } +#[cfg(any(test, feature = "legacy_int"))] pub fn decode_hyper(z: &[i64], cin: usize, h: usize, w: usize, wt: &Weights) -> (Vec, usize, usize) { // Widths come from the weights: chroma is the same topology at 96 / 384 where luma // is 160 / 640, so nothing here may assume the luma channel count. @@ -381,14 +471,21 @@ pub struct IntNet { t: HashMap, Vec)>, } impl IntNet { - pub fn from_json(v: &serde_json::Value) -> Self { + /// Parse a scale network's file: every member that is a tensor `{ "dims", "v" }` of + /// integers. A member of another form is not kept, so a member §13.6.1 reads that is + /// not of its form is missing, and the scale path's load refuses it, as the lowering + /// of the file's bytes does (`model_mismatch`). A file that is not an object is + /// refused ([`BadMember`]). + pub fn from_json(v: &serde_json::Value) -> Result { let mut t = HashMap::new(); - for (k, e) in v.as_object().expect("intnet root object") { - let vals = e["v"].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect(); - let dims = e["dims"].as_array().unwrap().iter().map(|x| x.as_u64().unwrap() as usize).collect(); - t.insert(k.clone(), (vals, dims)); + for (k, e) in v.as_object().ok_or_else(|| BadMember(String::new()))? { + let vals = e.get("v").and_then(serde_json::Value::as_array).and_then(|a| a.iter().map(serde_json::Value::as_i64).collect::>>()); + let dims = e.get("dims").and_then(serde_json::Value::as_array).and_then(|a| a.iter().map(|x| x.as_u64().and_then(|d| usize::try_from(d).ok())).collect::>>()); + if let (Some(vals), Some(dims)) = (vals, dims) { + t.insert(k.clone(), (vals, dims)); + } } - IntNet { t } + Ok(IntNet { t }) } #[cfg(any(test, feature = "legacy_int"))] fn get(&self, n: &str) -> &(Vec, Vec) { @@ -482,6 +579,7 @@ pub fn decode_hyper_scale(z: &[i64], cin: usize, h: usize, w: usize, net: &IntNe /// **MCM stage 0** (common_modules/MCM) — the multi-stage context model's first /// stage: `p0 → conv1 → ReLU → conv2 → ReLU → conv3 → y[0]` (bias-free 1×1 convs, /// width 160). Q16 fixed-point; `wt` = this stage's own PTQ weights. +#[cfg(any(test, feature = "legacy_int"))] pub fn mcm_stage0(p0: &[i64], h: usize, w: usize, wt: &Weights) -> Vec { let (x, _, _) = wt.conv("fusion_pred_net.conv1", p0, 160, h, w, 1, 1, 0, 1); let x = relu(&x); @@ -494,6 +592,7 @@ pub fn mcm_stage0(p0: &[i64], h: usize, w: usize, wt: &Weights) -> Vec { /// `cy = conv.1(conv.0(ctx))` (conv.0 1×1 `ctx_ch→160`, conv.1 3×3 grouped-5 +bias), /// then `Concat(cy, p)` [→320] → `fusion.conv1 → ReLU → conv2 → ReLU → conv3 → y[i]`. /// `ctx` is the caller-assembled context `concat(y[i-1..0])` (160/320/480 ch). +#[cfg(any(test, feature = "legacy_int"))] pub fn mcm_stage_n(p: &[i64], ctx: &[i64], ctx_ch: usize, h: usize, w: usize, wt: &Weights) -> Vec { let (c0, _, _) = wt.conv("conv.0", ctx, ctx_ch, h, w, 1, 1, 0, 1); // ctx_ch→160, 1×1 let (cy, _, _) = wt.conv("conv.1", &c0, 160, h, w, 3, 1, 1, 5); // 3×3 grouped-5, +bias @@ -522,7 +621,7 @@ mod tests { }; if !std::path::Path::new(&path).exists() { eprintln!("skip: weights not present at {path}"); return; } let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&path).unwrap()).unwrap(); - let wt = Weights::from_json(&v); + let wt = Weights::from_json(&v).unwrap(); // deterministic synthetic latent [160,16,16] in Q16 (a ramp, non-degenerate) let latent: Vec = (0..160 * 16 * 16).map(|i| ((i as i64 % 97) - 48) * (S / 64)).collect(); let y = decode_y(&latent, &wt); @@ -543,7 +642,7 @@ mod tests { }; if !std::path::Path::new(&path).exists() { eprintln!("skip: weights not present at {path}"); return; } let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&path).unwrap()).unwrap(); - let wt = Weights::from_json(&v); + let wt = Weights::from_json(&v).unwrap(); // deterministic synthetic 256-ch latent [256,16,16] in Q16 (a ramp) let latent: Vec = (0..256 * 16 * 16).map(|i| ((i as i64 % 97) - 48) * (S / 64)).collect(); let uv = decode_uv(&latent, &wt); @@ -565,7 +664,7 @@ mod tests { }; if !std::path::Path::new(&path).exists() { eprintln!("skip: weights not present at {path}"); return; } let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&path).unwrap()).unwrap(); - let wt = Weights::from_json(&v); + let wt = Weights::from_json(&v).unwrap(); let (c, h, w) = (160usize, 8usize, 8usize); // integer-valued hyper-latent (entropy-decoded symbols) in Q16 let z: Vec = (0..c * h * w).map(|i| ((i as i64 % 11) - 5) * S).collect(); @@ -588,7 +687,7 @@ mod tests { }; if !std::path::Path::new(&path).exists() { eprintln!("skip: weights not present at {path}"); return; } let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&path).unwrap()).unwrap(); - let net = IntNet::from_json(&v); + let net = IntNet::from_json(&v).unwrap(); let (c, h, w) = (160usize, 8usize, 8usize); let z: Vec = (0..c * h * w).map(|i| ((i as i64 * 37) % 291) - 140).collect(); let (is, co, ho, wo) = decode_hyper_scale(&z, c, h, w, &net); @@ -612,7 +711,7 @@ mod tests { let p = format!("{dir}/mcm_stage{i}_y.json"); if !std::path::Path::new(&p).exists() { return None; } let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&p).unwrap()).unwrap(); - Some(Weights::from_json(&v)) + Some(Weights::from_json(&v).unwrap()) }; let (Some(w0), Some(w1)) = (load(0), load(1)) else { eprintln!("skip: MCM weights not present"); return; }; let (h, w) = (16usize, 16usize); diff --git a/wai/wai-rs/src/lib.rs b/wai/wai-rs/src/lib.rs index 18db81f28..4f4461000 100644 --- a/wai/wai-rs/src/lib.rs +++ b/wai/wai-rs/src/lib.rs @@ -112,7 +112,9 @@ pub mod int_mlicpp; // L2-norm / ELU / Sigmoid / MDTA) — the pure-i64 arithmetic a learned ATTENTION // image codec (JPEG-AI's Restormer synthesis) needs beyond the conv/IGDN stack // above. NOTE: distinct from `int_transform` (a signal transform). Pure i64. -#[cfg(feature = "neural_int")] +// Test-only (`legacy_int`): the direct networks of `jpegai_synthesis`, which the decode +// runs through the integer operator set (integer-operators §13.6.2), are built on it. +#[cfg(all(feature = "neural_int", any(test, feature = "legacy_int")))] pub mod int_transformer; // Whole-net byte-exact integer JPEG-AI synthesis (Restormer, model_y) — threads the @@ -152,8 +154,9 @@ pub mod float_repro; #[cfg(feature = "neural_int")] pub mod jpegai_decode; -// JPEG-AI's scale path and its two entropy decodes through the integer operator set -// (`extensions/integer-operators.md` §13.6.1, lowered by `jpegai-int/1`). +// JPEG-AI's integer stages through the integer operator set +// (`extensions/integer-operators.md` §13.6, lowered by `jpegai-int/1`): the scale path and +// its two entropy decodes, and the hyper decoders, context stages and synthesis. #[cfg(feature = "neural_int")] pub mod jpegai_ops; diff --git a/wai/wai-rs/src/neural/mod.rs b/wai/wai-rs/src/neural/mod.rs index d5f972517..0e4cdaf9d 100644 --- a/wai/wai-rs/src/neural/mod.rs +++ b/wai/wai-rs/src/neural/mod.rs @@ -1014,15 +1014,22 @@ enum Exact { /// process's store of loaded sets (`int_set_cache`), keyed by the SHA-256 of their /// listing; a bundle that fails a load check of integer-operators §13.6.1, or whose /// scale graphs do not meet `acc32`, is refused (`model_mismatch`). +/// - The hyper decoders, context stages and synthesis (`weights/hyp_{y,uv}.json`, +/// `weights/mcm{0..3}_y.json`, `weights/synth_{y,uv}.json`) are lowered and loaded from +/// those members' bytes (`jpegai_ops::load_networks_bytes`, integer-operators §13.6.2, +/// under `acc64`), through the same store, keyed by their listing; a weight file that +/// fails §13.6.2's load checks, or networks that do not meet `acc64`, are refused +/// (`model_mismatch`). /// - A member of the bundle that the parameters lack is `set_incomplete`; a member -/// that is not JSON, or a `norm.json` without the tables the float stages read, is -/// `model_mismatch`. (The float stages' weight loaders still panic on a member whose -/// fields are mistyped; those networks are not yet lowered.) -/// - A substream the entropy decode cannot read is refused (`stream_exhausted`). +/// that is not JSON, an eICCI net whose fields are not of their types, or a +/// `norm.json` without the tables the float stages read, is `model_mismatch`. No +/// loader panics on a mistyped member. +/// - A substream the entropy decode cannot read is refused (`stream_exhausted`), and a +/// dequantised residual, a latent or an activation of the networks past i32 +/// (`field_range`). fn jpegai_exact(payload: &[u8], params: &ParamSource) -> Exact { - use crate::jpegai_decode::{decode_loaded, DecoderWeights, NormTables, PlaneWeights, Refusal}; + use crate::jpegai_decode::{decode_loaded, NormTables, Refusal}; use crate::jpegai_icci::IcciNet; - use crate::jpegai_synthesis::{IntNet, Weights}; use crate::int_set_cache::{LoadedSets, SetKey}; let Some(norm_b) = params.try_sibling("norm.json") else { return Exact::Unavailable }; @@ -1051,25 +1058,28 @@ fn jpegai_exact(payload: &[u8], params: &ParamSource) -> Exact { Err(r) => return refused(r.code.as_str(), "the bundle's scale path fails a load check of integer-operators §13.6.1, or does not meet acc32".into()), }; - let json = |name: &str| -> Option { serde_json::from_slice(&bytes[name]).ok() }; - let mut parsed = std::collections::BTreeMap::new(); - for m in MEMBERS { - let name = format!("weights/{m}.json"); - match json(&name) { - Some(v) => { parsed.insert(m, v); } - None => return refused("model_mismatch", format!("{name} is not JSON")), - } - } + // The other integer networks (§13.6.2), from their eight files' bytes. + let nets_files: [&[u8]; 8] = wai_ops::lower::jpegai_nets::NET_MEMBERS.map(|n| &*bytes[n]); + let nets_members: std::collections::BTreeMap = + wai_ops::lower::jpegai_nets::NET_MEMBERS.iter().zip(nets_files).map(|(n, b)| (n.to_string(), b)).collect(); + let nets = LoadedSets::global().get_or_load( + || SetKey::of(crate::codecs::CAP_IMAGE_JPEGAI, crate::jpegai_ops::LOWERING, crate::jpegai_ops::NETS_PROFILE, &nets_members), + || crate::jpegai_ops::load_networks_bytes(nets_files), + ); + let nets = match nets { + Ok(n) => n, + Err(r) => return refused(r.code.as_str(), "the bundle's networks fail a load check of integer-operators §13.6.2, or do not meet acc64".into()), + }; + + // The eICCI net, a float stage, parsed as its loader reads it. + let icci = match serde_json::from_slice::(&bytes["weights/icci.json"]).ok().map(|v| IcciNet::from_json(&v)) { + Some(Ok(n)) => n, + Some(Err(e)) => return refused("model_mismatch", format!("weights/icci.json: {e}")), + None => return refused("model_mismatch", "weights/icci.json is not JSON".into()), + }; let Ok(nv) = serde_json::from_slice::(&norm_b) else { return refused("model_mismatch", "norm.json is not JSON".into()); }; - let w = |m: &str| Weights::from_json(&parsed[m]); - let weights = DecoderWeights { - luma: PlaneWeights { hyper_scale: IntNet::from_json(&parsed["hs_y"]), hyper_decoder: w("hyp_y"), synthesis: w("synth_y") }, - chroma: PlaneWeights { hyper_scale: IntNet::from_json(&parsed["hs_uv"]), hyper_decoder: w("hyp_uv"), synthesis: w("synth_uv") }, - mcm_y: [w("mcm0_y"), w("mcm1_y"), w("mcm2_y"), w("mcm3_y")], - icci: IcciNet::from_json(&parsed["icci"]), - }; // The tables the float stages read, beside the ones the scale path loaded. let ints = |k: &str| -> Option> { nv.get(k)?.as_array()?.iter().map(serde_json::Value::as_i64).collect() }; @@ -1095,7 +1105,7 @@ fn jpegai_exact(payload: &[u8], params: &ParamSource) -> Exact { return refused("model_mismatch", "norm.json lacks a table the float stages read".into()); }; - match decode_loaded(payload, &weights, &norm, &sp, &mut |_, _| {}) { + match decode_loaded(payload, &icci, &norm, &sp, &nets, &mut |_, _| {}) { Ok(rgb) => Exact::Decoded(image::DecodedImage { rgb: rgb.data, width: rgb.w as u32, height: rgb.h as u32 }), Err(Refusal::Scope(_)) => Exact::Unavailable, Err(r) => Exact::Refused(DecodeError::InvalidPayload(format!("wai.image.jpegai: {r}"))), @@ -1132,8 +1142,9 @@ mod jpegai_exact_dispatch_tests { assert!(matches!(super::jpegai_exact(&[], &super::ParamSource::Unpinned("/nonexistent/wai/model/dir".into())), super::Exact::Unavailable)); } - /// A refused exact decode is the decode's result (integer-operators §13.6.1): the - /// bundle, with one bound of 256 in `norm.json`, is refused `model_mismatch`, and the + /// A refused exact decode is the decode's result (integer-operators §13.6): the + /// bundle, with one bound of 256 in `norm.json`, a network weight that is not an + /// integer, or an eICCI field of another type, is refused `model_mismatch`, and the /// dispatch reports that refusal rather than running the float decode; a bundle /// missing a member is `set_incomplete`. The intact bundle decodes. Needs the bundle /// and the codestream (`WAI_JPEGAI_MODEL_DIR`, `WAI_JPEGAI_CODESTREAM`). @@ -1163,5 +1174,21 @@ mod jpegai_exact_dispatch_tests { let mut short = files.clone(); short.remove("weights/mcm2_y.json"); assert!(matches!(decode(&short), Err(super::DecodeError::PriorMismatch(super::PinRefusal::SetIncomplete { .. }))), "a member missing"); + // A network's weight that is not an integer (integer-operators §13.6.2), and an + // eICCI field of another type: each refused model_mismatch, where the loaders + // panicked, and not decoded through the float path. + for (file, edit) in [ + ("weights/synth_y.json", (|v: &mut serde_json::Value| v["conv2_t.weight"]["w"][0] = serde_json::json!(0.5)) as fn(&mut serde_json::Value)), + ("weights/icci.json", |v: &mut serde_json::Value| v["scale_v"] = serde_json::json!("1")), + ] { + let mut bad = files.clone(); + let mut v: serde_json::Value = serde_json::from_slice(&files[file]).unwrap(); + edit(&mut v); + bad.insert(file.into(), serde_json::to_vec(&v).unwrap()); + match decode(&bad) { + Err(super::DecodeError::InvalidPayload(m)) => assert!(m.starts_with("wai.image.jpegai: model_mismatch"), "{file}: {m}"), + other => panic!("{file}: a refused exact decode must be the result: {:?}", other.map(|_| ())), + } + } } } diff --git a/wai/wai-rs/tests/int_kernels_geometry.rs b/wai/wai-rs/tests/int_kernels_geometry.rs index 03f42aa4a..f859d9fa1 100644 --- a/wai/wai-rs/tests/int_kernels_geometry.rs +++ b/wai/wai-rs/tests/int_kernels_geometry.rs @@ -24,7 +24,7 @@ //! through that graph under every policy (`int_audio` unit tests). CI runs this file //! beside `int_kernels_vectors` on every `wai-conformance` leg, with overflow checks //! on and off. -#![cfg(feature = "neural_int")] +#![cfg(all(feature = "neural_int", feature = "legacy_int"))] use serde_json::json; use wai::int_kernels::{with_policy, Policy}; diff --git a/wai/wai-rs/tests/int_ops_differential.rs b/wai/wai-rs/tests/int_ops_differential.rs index 515661a48..aba629f87 100644 --- a/wai/wai-rs/tests/int_ops_differential.rs +++ b/wai/wai-rs/tests/int_ops_differential.rs @@ -12,7 +12,9 @@ //! `wai.neural.int_mlicpp` (`wmb1/1`, its three networks); and `wai.world.model`'s integer //! renderer (`world/1`, informative: `T` and `g_s`), against its direct renderer with the //! direct guard every other decoder ran; and `wai.image.jpegai`'s scale path and entropy -//! decodes (`jpegai-int/1`), against its direct computation; and `WIV1` and `WIR1` +//! decodes (`jpegai-int/1`), against its direct computation, and its hyper decoders, +//! context stages and synthesis (the graphs of §13.6.2), against its direct networks; and +//! `WIV1` and `WIR1` //! (`wai.video.int_motion` and the P-frames of `wai.video.int_hyper`, and the four //! `int_refine` capabilities), through the stage operators alone, which make no planned //! break (with `video_int` and `staged`). @@ -2436,7 +2438,7 @@ fn jpegai_planned_break(c: &JCase) -> Option<&'static str> { } } let b = |v: &Value| serde_json::to_vec(v).unwrap(); - let g = wai_ops::lower::jpegai(&b(n), &b(&c.hs[0]), &b(&c.hs[1])).expect("a bundle that passes the load checks lowers"); + let g = wai_ops::lower::jpegai_scale(&b(n), &b(&c.hs[0]), &b(&c.hs[1])).expect("a bundle that passes the load checks lowers"); if g.roles.iter().any(|(_, g)| wai_ops::graph::load(&g.to_bytes(), wai_ops::Profile::Acc32).is_err()) { assert!(g.roles.iter().all(|(_, g)| wai_ops::graph::load(&g.to_bytes(), wai_ops::Profile::Acc64).is_ok()), "the generator's sums fit i64"); return Some("acc32"); @@ -2460,7 +2462,7 @@ fn jpegai_parsed(c: &JCase) -> (wai::jpegai_decode::NormTables, [wai::jpegai_syn lef_thr: [0; 3], lef_mag: [0.0; 3], }; - (n, [wai::jpegai_synthesis::IntNet::from_json(&c.hs[0]), wai::jpegai_synthesis::IntNet::from_json(&c.hs[1])]) + (n, [wai::jpegai_synthesis::IntNet::from_json(&c.hs[0]).unwrap(), wai::jpegai_synthesis::IntNet::from_json(&c.hs[1]).unwrap()]) } /// The committed test codestream's SOZ, SORP and SORS payloads. @@ -2867,3 +2869,319 @@ fn wir1_random_layers_apply_alike() { assert!(alike * 2 > n, "the generator must produce decodable units: {alike} of {n}"); assert!(outcomes.len() >= 4, "too few kinds of outcome: {outcomes:?}"); } + +// ------------------------------------------------- jpegai's networks (M7b, §13.6.2) +// +// `wai.image.jpegai`'s hyper decoders, context stages and synthesis (integer-operators +// §13.6.2, lowered by `jpegai-int/1` to `rec_y`, `rec_uv`, `syn_y` and `syn_uv`) against +// the direct networks (`jpegai_synthesis`, `jpegai_pipeline`), on random networks with +// the shapes the direct networks read and random inputs. The direct networks refuse +// nothing. Where the operator set refuses, the refusal is a planned break: a network file +// that fails a load check (`model_mismatch`, from the files alone), or a value past `A32` +// (`field_range`) at a checked tensor, which the direct networks computed on. + +/// A random weight file in the export's form, member by member. +struct NetFile(serde_json::Map); + +impl NetFile { + fn new() -> NetFile { + NetFile(serde_json::Map::new()) + } + /// `m.weight` of `dims` with `taps` products per output, its multiplier scaled so that + /// the convolution keeps its input's magnitude, and `m.bias` of `bias` values when + /// given. `hot` makes one convolution in about 64 grow its input past `A32`. + fn conv(&mut self, r: &mut Rng, m: &str, dims: [u64; 4], taps: u64, bias: Option, hot: bool) { + let n: u64 = dims.iter().product(); + let a = [3i64, 255, 32767][r.below(3) as usize]; + let w: Vec = (0..n).map(|_| r.signed(a)).collect(); + // Most shifts 31; some others, from 24 to 40, with the multiplier scaled to match. + let shift: u64 = if r.below(4) == 0 { 24 + r.below(17) } else { 31 }; + let root = (taps as f64).sqrt().max(1.0); + let mut mult = ((1u128 << shift) as f64 / (a as f64 * root)) as i64; + mult = (mult as f64 * [0.5, 1.0, 1.5, 2.0][r.below(4) as usize]) as i64; + if hot && r.below(64) == 0 { + mult = mult.saturating_mul(1 << 12); + } + self.0.insert(format!("{m}.weight"), json!({ "kind": "conv", "dims": dims, "mult": mult.max(1), "shift": shift, "w": w })); + if let Some(b) = bias { + self.q16(&format!("{m}.bias"), (0..b).map(|_| r.signed(1 << 17)).collect()); + } + } + fn q16(&mut self, name: &str, v: Vec) { + self.0.insert(name.into(), json!({ "kind": "q16", "dims": [v.len()], "v": v })); + } + fn res(&mut self, r: &mut Rng, m: &str, c: u64, hot: bool) { + self.conv(r, &format!("{m}.conv1"), [c, c, 3, 3], 9 * c, Some(c), hot); + self.conv(r, &format!("{m}.conv2"), [c, c, 3, 3], 9 * c, Some(c), hot); + } + fn gate(&mut self, r: &mut Rng, m: &str, c: u64, hot: bool) { + self.conv(r, &format!("{m}.conv"), [c, c / 4, 3, 3], 9 * c / 4, None, hot); + self.conv(r, &format!("{m}.conv2"), [c, c, 1, 1], c, None, hot); + } + fn cab(&mut self, r: &mut Rng, c: u64, hot: bool) { + self.res(r, "CAB.residual_trunk.0", c, hot); + self.res(r, "CAB.residual_trunk.1", c, hot); + self.conv(r, "CAB.subscale", [c, c, 3, 3], 9 * c, Some(c), hot); + self.res(r, "CAB.residual_mask2.0", c, hot); + self.res(r, "CAB.residual_mask3.0", c, hot); + self.conv(r, "CAB.upscale", [c, c, 3, 3], 4 * c, Some(c), hot); + } + fn tab(&mut self, r: &mut Rng, m: &str, c: u64, hid: u64, hot: bool) { + let g: Vec = (0..c).map(|_| r.below(1 << 17) as i64).collect(); + self.q16(&format!("{m}.prep_data.norm1.weight"), g); + self.q16(&format!("{m}.prep_data.norm1.bias"), (0..c).map(|_| r.signed(1 << 15)).collect()); + self.conv(r, &format!("{m}.prep_data.conv1"), [3 * c, c, 1, 1], c, None, hot); + self.conv(r, &format!("{m}.prep_data.conv2"), [3 * c, 1, 3, 3], 9, None, hot); + self.q16(&format!("{m}.attn.temperature"), (0..4).map(|_| (1 << 16) + r.below(1 << 19) as i64).collect()); + self.conv(r, &format!("{m}.attn.project_out"), [c, c, 1, 1], c, None, hot); + let g: Vec = (0..c).map(|_| r.signed(1 << 17)).collect(); + self.q16(&format!("{m}.ffn.norm1.weight"), g); + self.q16(&format!("{m}.ffn.norm1.bias"), (0..c).map(|_| r.signed(1 << 15)).collect()); + self.conv(r, &format!("{m}.ffn.project_in"), [2 * hid, c, 1, 1], c, None, hot); + self.conv(r, &format!("{m}.ffn.dwconv"), [2 * hid, 1, 3, 3], 9, None, hot); + self.conv(r, &format!("{m}.ffn.project_out"), [c, hid, 1, 1], hid, None, hot); + } + fn value(self) -> Value { + Value::Object(self.0) + } +} + +/// A hyper decoder of internal width `w` over `cz` channels. +fn ptq_hyper(r: &mut Rng, cz: u64, w: u64, hot: bool) -> Value { + let mut f = NetFile::new(); + f.conv(r, "conv1", [w, cz, 1, 1], cz, None, hot); + f.conv(r, "conv2", [w, w, 4, 4], 4 * w, Some(w), hot); + f.conv(r, "conv3", [w, w, 3, 3], 9 * w, Some(w), hot); + f.conv(r, "conv4", [4 * cz, w, 3, 3], 9 * w, Some(4 * cz), hot); + f.value() +} + +/// Context stage `i` at the widths the direct stages read (160 throughout). +fn ptq_mcm(r: &mut Rng, i: u64, hot: bool) -> Value { + let mut f = NetFile::new(); + if i > 0 { + f.conv(r, "conv.0", [160, 160 * i, 1, 1], 160 * i, None, hot); + f.conv(r, "conv.1", [160, 32, 3, 3], 288, Some(160), hot); + } + f.conv(r, "fusion_pred_net.conv1", [160, if i == 0 { 160 } else { 320 }, 1, 1], 320, None, hot); + f.conv(r, "fusion_pred_net.conv2", [160, 160, 1, 1], 160, None, hot); + f.conv(r, "fusion_pred_net.conv3", [160, 160, 1, 1], 160, None, hot); + f.value() +} + +/// A synthesis network at the widths the direct networks read: luma 128 wide (its +/// feed-forward hidden width `hid`), chroma 64. +fn ptq_synth(r: &mut Rng, chroma: bool, hid: u64, hot: bool) -> Value { + let mut f = NetFile::new(); + if !chroma { + let w = 128; + f.res(r, "first_stage.0.0", 160, hot); + f.conv(r, "first_stage.1", [160, w, 3, 3], 4 * 160, Some(w), hot); + f.gate(r, "first_stage.2", w, hot); + f.conv(r, "conv2_t", [w, w, 3, 3], 4 * w, Some(w), hot); + f.cab(r, w, hot); + f.gate(r, "iact2", w, hot); + f.conv(r, "conv3_t", [4 * w, w, 1, 1], w, Some(4 * w), hot); + f.conv(r, "TAM.ds_conv", [w, w, 3, 3], 9 * w, Some(w), hot); + f.tab(r, "TAM.TABs.0", w, hid, hot); + f.tab(r, "TAM.TABs.1", w, hid, hot); + f.conv(r, "TAM.us_conv", [w, w, 3, 3], 4 * w, Some(w), hot); + f.gate(r, "iact3", w, hot); + f.conv(r, "conv4_t", [w, 1, 3, 3], 4 * w, Some(1), hot); + } else { + let w = 64; + f.conv(r, "first_stage.conv1", [48, 256, 3, 3], 9 * 256, Some(48), hot); + f.conv(r, "conv2_t", [144, w, 3, 3], 4 * 144, Some(w), hot); + f.cab(r, w, hot); + f.gate(r, "iact2", w, hot); + f.conv(r, "conv3_t", [4 * w, w, 1, 1], w, Some(4 * w), hot); + f.tab(r, "TAM.TABs.0", w, hid, hot); + f.tab(r, "TAM.TABs.1", w, hid, hot); + f.gate(r, "iact3", w, hot); + f.conv(r, "conv4_t", [w, 8, 3, 3], 4 * w, Some(8), hot); + } + f.value() +} + +/// The direct networks' weights, parsed as the decoder parses them. +fn ptq_weights(v: &Value) -> wai::jpegai_synthesis::Weights { + wai::jpegai_synthesis::Weights::from_json(v).unwrap() +} + +/// Break one load check of §13.6.2 in a network file; the name of the check, or `None` +/// (one call in six). +fn ptq_break(r: &mut Rng, v: &mut Value) -> Option<&'static str> { + let o = v.as_object_mut().unwrap(); + let convs: Vec = o.iter().filter(|(_, e)| e["kind"] == "conv").map(|(k, _)| k.clone()).collect(); + let k = convs[r.below(convs.len() as u64) as usize].clone(); + Some(match r.below(6) { + 0 => { o.remove(&k); "a member missing" } + 1 => { o[&k]["shift"] = json!(128); "a shift of 128" } + 2 => { o[&k]["w"].as_array_mut().unwrap().pop(); "a weight short" } + 3 => { let d = o[&k]["dims"][0].as_u64().unwrap(); o[&k]["dims"][0] = json!(d + 1); "dims" } + 4 => { + let b = k.replace(".weight", ".bias"); + match o.get_mut(&b) { + Some(e) => { e["v"].as_array_mut().unwrap().push(json!(0)); "a bias long" } + None => return None, + } + } + _ => return None, + }) +} + +/// A random Q16 tensor of `n` values, of magnitude about `2^bits`. +fn q16_values(r: &mut Rng, n: usize, bits: u32) -> Vec { + (0..n).map(|_| r.signed(1 << bits)).collect() +} + +/// The outcome of the networks through the operator set: equal to the direct networks', +/// or a refusal that is a planned break (checked here). +fn ptq_outcome(role: &str, new: Result, wai_ops::Refusal>, old: Option>, g: &wai_ops::Loaded, why: &dyn Fn() -> String) -> &'static str { + match (new, old) { + (Ok(a), Some(b)) => { + assert!(a == b, "{role}: the two decodes differ\n{}", why()); + "alike" + } + (Err(r), _) => { + // A value past A32, at an input or at a checked tensor's producer. + assert_eq!(r.code, wai_ops::Code::FieldRange, "{role}: refused with {:?}\n{}", r, why()); + let checked = match r.at { + wai_ops::Site::Input(k) => g.graph().tensors[g.graph().inputs[k as usize].tensor as usize].policy, + wai_ops::Site::Op(k) => g.graph().tensors[g.graph().ops[k as usize].outs[0] as usize].policy, + other => panic!("{role}: refused at {other:?}\n{}", why()), + }; + assert_eq!(checked, wai_ops::graph::Policy::Check, "{role}: refused at a tensor that is not checked\n{}", why()); + "past A32" + } + (Ok(_), None) => panic!("{role}: the direct network panicked where the operator set decodes\n{}", why()), + } +} + +/// Random hyper decoders and context stages, with random hyper-latents and residuals: +/// `ŷ` through `rec_y` and `rec_uv` is the direct networks', or the operator set refuses +/// a value past `A32` (where the direct networks computed on, or panicked with overflow +/// checks on); a network file that fails a load check is refused, from its bytes and its +/// parsed form alike. +#[test] +fn jpegai_random_networks_reconstruct_alike() { + use wai::jpegai_ops::Plane; + use wai::jpegai_pipeline::{reconstruct_yhat, reconstruct_yhat_uv}; + use wai::jpegai_synthesis::{decode_hyper, q16_from_symbols}; + let mut outcomes = std::collections::BTreeMap::<&str, u64>::new(); + let n = cases("jpegai_rec", 64, |r, seed| { + let hot = r.below(2) == 0; + let chroma = r.below(2) == 0; + let (plane, cz) = if chroma { (Plane::Chroma, 96u64) } else { (Plane::Luma, 160) }; + let width = 1 + r.below(4); + let mut hyp = ptq_hyper(r, cz, width, hot); + let mut mcm: Vec = (0..4).map(|i| ptq_mcm(r, i, hot)).collect(); + let broken = if r.below(8) == 0 { + if chroma || r.below(2) == 0 { ptq_break(r, &mut hyp) } else { let i = r.below(4) as usize; ptq_break(r, &mut mcm[i]) } + } else { + None + }; + let why = || format!("seed {seed}: {plane:?}, broken {broken:?}"); + let b = |v: &Value| serde_json::to_vec(v).unwrap(); + // This plane's graph alone: `rec_y` from the hyper decoder and the four stages, + // or `rec_uv` from the hyper decoder. + let hyp_net = wai_ops::lower::jpegai_nets::parse_ptq(&b(&hyp)); + let mcm_nets: Vec<_> = mcm.iter().map(|v| wai_ops::lower::jpegai_nets::parse_ptq(&b(v))).collect(); + let graph = (|| -> Result { + let mut h = hyp_net.clone()?; + if chroma { + wai_ops::lower::jpegai_nets::rec(&mut h, None, true) + } else { + let mut m: [wai_ops::lower::jpegai_nets::PtqNet; 4] = [mcm_nets[0].clone()?, mcm_nets[1].clone()?, mcm_nets[2].clone()?, mcm_nets[3].clone()?]; + wai_ops::lower::jpegai_nets::rec(&mut h, Some(&mut m), false) + } + })() + .and_then(|g| wai_ops::graph::load(&g.to_bytes(), wai_ops::Profile::Acc64)); + // The same, from the networks as this crate parses them, where its parser reads them. + let parsed = catch_unwind(AssertUnwindSafe(|| (ptq_weights(&hyp), mcm.iter().map(ptq_weights).collect::>()))).ok(); + if let Some((hw, mw)) = &parsed { + let g2 = (|| -> Result { + let mut h = hw.ptq()?; + if chroma { + wai_ops::lower::jpegai_nets::rec(&mut h, None, true) + } else { + let mut m = [mw[0].ptq()?, mw[1].ptq()?, mw[2].ptq()?, mw[3].ptq()?]; + wai_ops::lower::jpegai_nets::rec(&mut h, Some(&mut m), false) + } + })() + .and_then(|g| wai_ops::graph::load(&g.to_bytes(), wai_ops::Profile::Acc64)); + assert_eq!(g2.as_ref().map(|g| g.graph().clone()).map_err(|e| e.code), graph.as_ref().map(|g| g.graph().clone()).map_err(|e| e.code), "the parsed networks lower as their bytes\n{}", why()); + } + if let Some(k) = broken { + assert_eq!(graph.err().map(|e| e.code), Some(wai_ops::Code::ModelMismatch), "{k}: refused\n{}", why()); + *outcomes.entry(k).or_default() += 1; + return; + } + let g = graph.unwrap_or_else(|e| panic!("networks under no planned break are refused: {e:?}\n{}", why())); + let (hw, mw) = parsed.expect("well-formed networks parse"); + let c = cz as usize; + let (zh, zw) = ([1usize, 2, 4][r.below(3) as usize], [1usize, 2, 4][r.below(3) as usize]); + let z: Vec = (0..c * zh * zw).map(|_| r.below(64) as i64 - 31).collect(); + let bits = [12u32, 20, 26][r.below(3) as usize]; + let resi = q16_values(r, c * 16 * zh * zw, bits); + let new = wai_ops::run_with(&g, vec![wai_ops::Tensor::new(cz as u32, zh as u32, zw as u32, z.clone()), wai_ops::Tensor::new(cz as u32, 4 * zh as u32, 4 * zw as u32, resi.clone())], &[], &mut wai_ops::Sequence::new(), &wai::int_ops::Host) + .map(|mut o| o.swap_remove(0).data); + let old = catch_unwind(AssertUnwindSafe(|| { + let (psi, ..) = decode_hyper(&q16_from_symbols(&z), c, zh, zw, &hw); + if chroma { + reconstruct_yhat_uv(&resi, &psi, c, 4 * zh, 4 * zw) + } else { + reconstruct_yhat(&resi, &psi, c, 4 * zh, 4 * zw, [&mw[0], &mw[1], &mw[2], &mw[3]]) + } + })) + .ok(); + *outcomes.entry(ptq_outcome(if chroma { "rec_uv" } else { "rec_y" }, new, old, &g, &why)).or_default() += 1; + }); + eprintln!("jpegai networks, rec: {n} cases; outcomes {outcomes:?}"); + assert!(outcomes.get("alike").copied().unwrap_or(0) * 2 > n, "the generator must produce decodable cases: {outcomes:?}"); +} + +/// Random synthesis networks at the direct networks' widths, with random latents: the +/// planes through `syn_y` and `syn_uv` are the direct synthesis's, or the operator set +/// refuses a value past `A32`. These run at the whole picture's size, so the fixed count +/// is small; the nightly run gives them their time. +#[test] +fn jpegai_random_synthesis_networks_decode_alike() { + use wai::jpegai_synthesis::{decode_uv_f32, decode_y_f32}; + let mut outcomes = std::collections::BTreeMap::<&str, u64>::new(); + let n = cases("jpegai_syn", if cfg!(debug_assertions) { 2 } else { 8 }, |r, seed| { + let chroma = r.below(2) == 1; + let hot = r.below(2) == 0; + let hid = [32u64, 64, 256][r.below(3) as usize]; + let v = ptq_synth(r, chroma, hid, hot); + let why = || format!("seed {seed}: chroma {chroma}, hid {hid}, hot {hot}"); + let bytes = serde_json::to_vec(&v).unwrap(); + let mut net = wai_ops::lower::jpegai_nets::parse_ptq(&bytes).unwrap(); + let g = if chroma { wai_ops::lower::jpegai_nets::syn_uv(&mut net) } else { wai_ops::lower::jpegai_nets::syn_y(&mut net) } + .and_then(|g| wai_ops::graph::load(&g.to_bytes(), wai_ops::Profile::Acc64)) + .unwrap_or_else(|e| panic!("well-formed networks are refused: {e:?}\n{}", why())); + let w = ptq_weights(&v); + let bits = [12u32, 18, 22][r.below(3) as usize]; + let ly = q16_values(r, 160 * 256, bits); + let luv = q16_values(r, 96 * 256, 18); + let mut inputs = vec![wai_ops::Tensor::new(160, 16, 16, ly.clone())]; + if chroma { + inputs.push(wai_ops::Tensor::new(96, 16, 16, luv.clone())); + } + let new = wai_ops::run_with(&g, inputs, &[], &mut wai_ops::Sequence::new(), &wai::int_ops::Host).map(|mut o| o.swap_remove(0).data); + let old = catch_unwind(AssertUnwindSafe(|| { + let f = if chroma { + let mut cat = ly.clone(); + cat.extend_from_slice(&luv); + decode_uv_f32(&cat, &w) + } else { + decode_y_f32(&ly, &w) + }; + // Back to the Q16 integers the direct networks' denormalisation gave. + f.iter().map(|&x| (x as f64 * 65536.0) as i64).collect::>() + })) + .ok(); + *outcomes.entry(ptq_outcome(if chroma { "syn_uv" } else { "syn_y" }, new, old, &g, &why)).or_default() += 1; + }); + eprintln!("jpegai networks, synthesis: {n} cases; outcomes {outcomes:?}"); +} diff --git a/wai/wai-rs/tests/jpegai_cross_platform.rs b/wai/wai-rs/tests/jpegai_cross_platform.rs index b5e71a32c..382e3d999 100644 --- a/wai/wai-rs/tests/jpegai_cross_platform.rs +++ b/wai/wai-rs/tests/jpegai_cross_platform.rs @@ -146,9 +146,9 @@ fn decode_matches_pinned_hashes() { assert_eq!(hex(&Sha256::digest(&bytes)), want, "{} is not the pinned jpegai/v1 {name}", p.display()); } - let w = |n: &str| Weights::from_json(&jload(&dpath.join(n))); - let net = |n: &str| IntNet::from_json(&jload(&dpath.join(n))); - let icci = IcciNet::from_json(&jload(&dpath.join("icci.json"))); + let w = |n: &str| Weights::from_json(&jload(&dpath.join(n))).unwrap(); + let net = |n: &str| IntNet::from_json(&jload(&dpath.join(n))).unwrap(); + let icci = IcciNet::from_json(&jload(&dpath.join("icci.json"))).unwrap(); let nv = jload(Path::new(&nf)); let i64v = |k: &str| nv[k].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect::>(); let u8v = |k: &str| nv[k].as_array().unwrap().iter().map(|x| x.as_u64().unwrap() as u8).collect::>(); diff --git a/wai/wai-rs/tests/jpegai_decode_symbols.rs b/wai/wai-rs/tests/jpegai_decode_symbols.rs index 56257a539..b332b24bb 100644 --- a/wai/wai-rs/tests/jpegai_decode_symbols.rs +++ b/wai/wai-rs/tests/jpegai_decode_symbols.rs @@ -81,9 +81,9 @@ fn link_the_decoder() { black_box(jpegai_decode::check_scope as Check); black_box(jpegai_decode::check_codestream as Check); black_box(jpegai_decode::fp_env_is_default as fn() -> bool); - black_box(Weights::from_json as fn(&serde_json::Value) -> Weights); - black_box(IntNet::from_json as fn(&serde_json::Value) -> IntNet); - black_box(IcciNet::from_json as fn(&serde_json::Value) -> IcciNet); + black_box(Weights::from_json as fn(&serde_json::Value) -> Result); + black_box(IntNet::from_json as fn(&serde_json::Value) -> Result); + black_box(IcciNet::from_json as fn(&serde_json::Value) -> Result); } /// C99 `` functions, besides the allowed ones. Each is also checked with the diff --git a/wai/wai-rs/tests/jpegai_e2e_chain.rs b/wai/wai-rs/tests/jpegai_e2e_chain.rs index 50d1991d7..556e6f13d 100644 --- a/wai/wai-rs/tests/jpegai_e2e_chain.rs +++ b/wai/wai-rs/tests/jpegai_e2e_chain.rs @@ -52,7 +52,7 @@ fn codestream_to_scale_indices() { eprintln!("z from codestream: {} vals, {} non-zero", z.len(), z.iter().filter(|&&x| x != 0).count()); // 2. z → hyper-scale net → i_s - let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&wj).unwrap()).unwrap()); + let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&wj).unwrap()).unwrap()).unwrap(); let (i_s, co, ho, wo) = decode_hyper_scale(&z, c, zh, zw, &net); eprintln!("i_s: [{co},{ho},{wo}] = {} vals", i_s.len()); diff --git a/wai/wai-rs/tests/jpegai_e2e_chroma.rs b/wai/wai-rs/tests/jpegai_e2e_chroma.rs index 7a3fe8a5d..5cd40411e 100644 --- a/wai/wai-rs/tests/jpegai_e2e_chroma.rs +++ b/wai/wai-rs/tests/jpegai_e2e_chroma.rs @@ -48,7 +48,7 @@ fn env_path(k: &str) -> Option { std::env::var(k).ok().filter(|p| std::path::Path::new(p).exists()) } fn weights(p: &str) -> Weights { - Weights::from_json(&serde_json::from_slice(&std::fs::read(p).unwrap()).unwrap()) + Weights::from_json(&serde_json::from_slice(&std::fs::read(p).unwrap()).unwrap()).unwrap() } fn snr(got_q16: &[i64], expected: &[f32]) -> f64 { let (mut se, mut sig) = (0f64, 0f64); @@ -117,7 +117,7 @@ fn codestream_to_chroma_pixels() { let z: Vec = symbols.iter().map(|&s| s as i64 - Z_OFFSET).collect(); // 2. z → hyper-scale → i_s, then the derived entropy inputs (shared with luma) - let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&hs_uv).unwrap()).unwrap()); + let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&hs_uv).unwrap()).unwrap()).unwrap(); let (i_s, ..) = decode_hyper_scale(&z, zc, zh, zw, &net); assert_eq!(i_s.len(), channels * h * w, "i_s shape"); diff --git a/wai/wai-rs/tests/jpegai_e2e_frontend.rs b/wai/wai-rs/tests/jpegai_e2e_frontend.rs index f7479967d..8e2994a65 100644 --- a/wai/wai-rs/tests/jpegai_e2e_frontend.rs +++ b/wai/wai-rs/tests/jpegai_e2e_frontend.rs @@ -105,7 +105,7 @@ fn codestream_to_luma_pixels() { let z: Vec = symbols.iter().map(|&s| s as i64 - Z_OFFSET).collect(); // 2. z → hyper-scale net → i_s - let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&wj).unwrap()).unwrap()); + let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&wj).unwrap()).unwrap()).unwrap(); let (i_s, ..) = decode_hyper_scale(&z, zc, zh, zw, &net); assert_eq!(i_s.len(), channels * h * w, "i_s shape"); @@ -181,7 +181,7 @@ fn codestream_to_luma_pixels() { // correctly lifted one scores ~70. if let (Ok(hw), Some(psi_exp)) = (std::env::var("WAI_JPEGAI_HYPER_WEIGHTS"), v.get("psi_expected")) { if std::path::Path::new(&hw).exists() { - let wt = Weights::from_json(&serde_json::from_slice(&std::fs::read(&hw).unwrap()).unwrap()); + let wt = Weights::from_json(&serde_json::from_slice(&std::fs::read(&hw).unwrap()).unwrap()).unwrap(); let (psi, ph, pw) = decode_hyper(&q16_from_symbols(&z), zc, zh, zw, &wt); let exp: Vec = psi_exp.as_array().unwrap().iter() .map(|x| x.as_f64().unwrap() as f32).collect(); @@ -213,7 +213,7 @@ fn codestream_to_luma_pixels() { if let Some(mcm_dir) = std::env::var_os("WAI_JPEGAI_MCM_WEIGHTS_DIR") { let load = |i: usize| -> Weights { let p = std::path::Path::new(&mcm_dir).join(format!("mcm{i}_y.json")); - Weights::from_json(&serde_json::from_slice(&std::fs::read(p).unwrap()).unwrap()) + Weights::from_json(&serde_json::from_slice(&std::fs::read(p).unwrap()).unwrap()).unwrap() }; let (m0, m1, m2, m3) = (load(0), load(1), load(2), load(3)); let resi_q16: Vec = resi_full.iter().map(|&r| (r as f64 * 65536.0).round() as i64).collect(); @@ -261,7 +261,7 @@ fn codestream_to_luma_pixels() { // deviation of at most 1 LSB, on at most 0.1% of samples. if let (Ok(sw), Some(sy_exp)) = (std::env::var("WAI_JPEGAI_SYNTH_WEIGHTS"), v.get("synth_y_expected")) { if std::path::Path::new(&sw).exists() { - let swt = Weights::from_json(&serde_json::from_slice(&std::fs::read(&sw).unwrap()).unwrap()); + let swt = Weights::from_json(&serde_json::from_slice(&std::fs::read(&sw).unwrap()).unwrap()).unwrap(); let lat: Vec = y_lsbs.iter().map(|&f| (f as f64 * 65536.0).round() as i64).collect(); let y_plane = decode_y(&lat, &swt); let exp: Vec = sy_exp.as_array().unwrap().iter() diff --git a/wai/wai-rs/tests/jpegai_e2e_full.rs b/wai/wai-rs/tests/jpegai_e2e_full.rs index 70396f090..182e2512c 100644 --- a/wai/wai-rs/tests/jpegai_e2e_full.rs +++ b/wai/wai-rs/tests/jpegai_e2e_full.rs @@ -48,10 +48,10 @@ fn jload(p: &std::path::Path) -> serde_json::Value { serde_json::from_slice(&std::fs::read(p).unwrap()).unwrap() } fn w_of(dir: &str, name: &str) -> Weights { - Weights::from_json(&jload(&std::path::Path::new(dir).join(name))) + Weights::from_json(&jload(&std::path::Path::new(dir).join(name))).unwrap() } fn int_of(dir: &str, name: &str) -> IntNet { - IntNet::from_json(&jload(&std::path::Path::new(dir).join(name))) + IntNet::from_json(&jload(&std::path::Path::new(dir).join(name))).unwrap() } fn u8v(v: &serde_json::Value, k: &str) -> Vec { v[k].as_array().unwrap().iter().map(|x| x.as_u64().unwrap() as u8).collect() @@ -156,8 +156,8 @@ fn codestream_to_rgb_matches_reference_png() { } fn weights_from(get: &dyn Fn(&str) -> serde_json::Value) -> DecoderWeights { - let w = |n: &str| Weights::from_json(&get(n)); - let i = |n: &str| IntNet::from_json(&get(n)); + let w = |n: &str| Weights::from_json(&get(n)).unwrap(); + let i = |n: &str| IntNet::from_json(&get(n)).unwrap(); let iw = get("icci.json"); DecoderWeights { luma: PlaneWeights { hyper_scale: i("hs_y.json"), hyper_decoder: w("hyp_y.json"), synthesis: w("synth_y.json") }, diff --git a/wai/wai-rs/tests/jpegai_e2e_synthesis.rs b/wai/wai-rs/tests/jpegai_e2e_synthesis.rs index 3fbcf4522..e3329d49a 100644 --- a/wai/wai-rs/tests/jpegai_e2e_synthesis.rs +++ b/wai/wai-rs/tests/jpegai_e2e_synthesis.rs @@ -7,7 +7,7 @@ //! env: WAI_JPEGAI_E2E_CKPT = e2e_synth_checkpoint.json {yhat_y,yhat_uv,ypix,uvpix,y_lsbs} //! WAI_JPEGAI_Y_WEIGHTS = synth16_y_weights.json //! WAI_JPEGAI_UV_WEIGHTS = synth16_uv_weights.json -#![cfg(feature = "neural_int")] +#![cfg(all(feature = "neural_int", feature = "legacy_int"))] use wai::jpegai_synthesis::{decode_y, decode_uv, Weights}; @@ -38,8 +38,8 @@ fn synthesis_on_real_reference_latent() { _ => { eprintln!("skip: set WAI_JPEGAI_Y_WEIGHTS + WAI_JPEGAI_UV_WEIGHTS"); return; } }; let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&ckpt).unwrap()).unwrap(); - let wy = Weights::from_json(&serde_json::from_slice(&std::fs::read(&yw).unwrap()).unwrap()); - let wu = Weights::from_json(&serde_json::from_slice(&std::fs::read(&uw).unwrap()).unwrap()); + let wy = Weights::from_json(&serde_json::from_slice(&std::fs::read(&yw).unwrap()).unwrap()).unwrap(); + let wu = Weights::from_json(&serde_json::from_slice(&std::fs::read(&uw).unwrap()).unwrap()).unwrap(); // Y: decode_y(yhat_y) vs ypix. Try both the pre-lsbs (yhat_y) and post-lsbs // (y_lsbs) latent — whichever the synthesis actually consumes will hit ~58 dB. diff --git a/wai/wai-rs/tests/jpegai_hyper_calibration.rs b/wai/wai-rs/tests/jpegai_hyper_calibration.rs index a0c99c7de..825d6b286 100644 --- a/wai/wai-rs/tests/jpegai_hyper_calibration.rs +++ b/wai/wai-rs/tests/jpegai_hyper_calibration.rs @@ -6,7 +6,7 @@ //! //! env: WAI_JPEGAI_HYPERDEC = path to common_modules/hyper_decoder.onnx, //! WAI_JPEGAI_HYPERDEC_WEIGHTS = path to the exported 16-bit weights JSON. -#![cfg(feature = "neural")] +#![cfg(all(feature = "neural", feature = "legacy_int"))] use ort::session::{builder::GraphOptimizationLevel, Session}; use ort::value::Value; @@ -46,7 +46,7 @@ fn hyper_decoder_int_vs_float_snr() { let li: Vec = lf.iter().map(|&x| (x * 65536.0).round() as i64).collect(); let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&wjson).unwrap()).unwrap(); - let wt = Weights::from_json(&v); + let wt = Weights::from_json(&v).unwrap(); let (pi, ph, pw) = decode_hyper(&li, c, h, w, &wt); eprintln!("int hyper out = {} vals at [{},{}]", pi.len(), ph, pw); diff --git a/wai/wai-rs/tests/jpegai_hyperscale_calibration.rs b/wai/wai-rs/tests/jpegai_hyperscale_calibration.rs index e5a393e89..b328e8028 100644 --- a/wai/wai-rs/tests/jpegai_hyperscale_calibration.rs +++ b/wai/wai-rs/tests/jpegai_hyperscale_calibration.rs @@ -36,7 +36,7 @@ fn hyper_scale_byte_exact_vs_reference() { let zs: Vec = v["z_shape"].as_array().unwrap().iter().map(|x| x.as_u64().unwrap() as usize).collect(); let (c, h, w) = (zs[1], zs[2], zs[3]); - let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&wj).unwrap()).unwrap()); + let net = IntNet::from_json(&serde_json::from_slice(&std::fs::read(&wj).unwrap()).unwrap()).unwrap(); let (mine, co, ho, wo) = decode_hyper_scale(&z, c, h, w, &net); eprintln!("decode_hyper_scale(real z[{c},{h},{w}]) -> [{co},{ho},{wo}] = {} vals", mine.len()); diff --git a/wai/wai-rs/tests/jpegai_mcm_calibration.rs b/wai/wai-rs/tests/jpegai_mcm_calibration.rs index e21c4e049..937978a47 100644 --- a/wai/wai-rs/tests/jpegai_mcm_calibration.rs +++ b/wai/wai-rs/tests/jpegai_mcm_calibration.rs @@ -6,7 +6,7 @@ //! //! env: WAI_JPEGAI_MCM_DIR = dir with stage0..3.onnx, //! WAI_JPEGAI_MCM_WEIGHTS_DIR = dir with mcm_stage0..3_y.json -#![cfg(feature = "neural")] +#![cfg(all(feature = "neural", feature = "legacy_int"))] use ort::session::{builder::GraphOptimizationLevel, Session}; use ort::value::Value; @@ -56,7 +56,7 @@ fn mcm_stages_int_vs_float_snr() { let (h, w) = (16usize, 16usize); let load = |i: usize| -> Weights { let v: serde_json::Value = serde_json::from_slice(&std::fs::read(format!("{wdir}/mcm_stage{i}_y.json")).unwrap()).unwrap(); - Weights::from_json(&v) + Weights::from_json(&v).unwrap() }; let mut worst = f64::INFINITY; diff --git a/wai/wai-rs/tests/jpegai_memory.rs b/wai/wai-rs/tests/jpegai_memory.rs index b28aacd82..b65e4ef63 100644 --- a/wai/wai-rs/tests/jpegai_memory.rs +++ b/wai/wai-rs/tests/jpegai_memory.rs @@ -1,15 +1,16 @@ -//! What `wai.image.jpegai`'s exact decoder holds now that its scale path and entropy -//! decodes run through the integer operator set, against the direct decode it replaced +//! What `wai.image.jpegai`'s exact decoder holds now that every integer stage runs +//! through the integer operator set, against the direct decode it replaced //! (`jpegai_decode::legacy`, feature `legacy_int`), measured with a global allocator that //! tracks the bytes live and their peak. //! //! The capability declares no cost. So what the decode holds is held to the direct -//! decode: with the bundle's scale path loaded beforehand (`jpegai_decode::load`, once per -//! bundle, as the sink's store of loaded sets keeps it), a decode through the operator set -//! holds no more than the direct decode of the same codestream, on the reference kernels; -//! and so does each plane's front half (its integers through §13.6.1), measured alone. -//! The scale path itself (two graphs and the latent tables) is the set's, the same for -//! every codestream, and is reported. The inputs are the `jpegai/v1` bundle and the test +//! decode: with the bundle's scale path and networks loaded beforehand +//! (`jpegai_decode::load` and `jpegai_decode::load_networks`, once per bundle, as the +//! sink's store of loaded sets keeps them), a decode through the operator set holds no +//! more than the direct decode of the same codestream, on the reference kernels; and so +//! does each plane's front half (its integers through §13.6.1), measured alone. The +//! scale path (two graphs and the latent tables) and the networks (four graphs, §13.6.2) +//! are the set's, the same for every codestream, and are reported. The inputs are the `jpegai/v1` bundle and the test //! codestream (`WAI_JPEGAI_CODESTREAM`, `WAI_JPEGAI_WEIGHTS_DIR`, `WAI_JPEGAI_NORM`), so //! the test runs where they are fetched (`wai-jpegai-e2e.yml`) and skips loudly elsewhere. //! @@ -81,13 +82,13 @@ fn the_decode_holds_no_more_than_the_direct_decode() { return; }; let d = PathBuf::from(dir); - let w = |n: &str| Weights::from_json(&json(&d.join(n))); - let net = |n: &str| IntNet::from_json(&json(&d.join(n))); + let w = |n: &str| Weights::from_json(&json(&d.join(n))).unwrap(); + let net = |n: &str| IntNet::from_json(&json(&d.join(n))).unwrap(); let weights = DecoderWeights { luma: PlaneWeights { hyper_scale: net("hs_y.json"), hyper_decoder: w("hyp_y.json"), synthesis: w("synth_y.json") }, chroma: PlaneWeights { hyper_scale: net("hs_uv.json"), hyper_decoder: w("hyp_uv.json"), synthesis: w("synth_uv.json") }, mcm_y: [w("mcm0_y.json"), w("mcm1_y.json"), w("mcm2_y.json"), w("mcm3_y.json")], - icci: wai::jpegai_icci::IcciNet::from_json(&json(&d.join("icci.json"))), + icci: wai::jpegai_icci::IcciNet::from_json(&json(&d.join("icci.json"))).unwrap(), }; let nv = json(Path::new(&nf)); let ints = |k: &str| -> Vec { nv[k].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect() }; @@ -111,13 +112,15 @@ fn the_decode_holds_no_more_than_the_direct_decode() { let (direct, direct_peak) = peak_during(|| legacy::decode(&data, &weights, &norm).expect("the direct decode")); drop(direct); let (sp, set) = peak_during(|| jpegai_decode::load(&weights, &norm).expect("the scale path loads")); - let (img, held) = peak_during(|| jpegai_decode::decode_loaded(&data, &weights, &norm, &sp, &mut |_, _| {}).expect("the decode")); + let (nets, nets_load) = peak_during(|| jpegai_decode::load_networks(&weights).expect("the networks load")); + let (img, held) = peak_during(|| jpegai_decode::decode_loaded(&data, &weights.icci, &norm, &sp, &nets, &mut |_, _| {}).expect("the decode")); drop(img); let (img, whole) = peak_during(|| jpegai_decode::decode(&data, &weights, &norm).expect("the decode")); drop(img); eprintln!( - "jpegai/v1, reference kernels: the direct decode held {direct_peak} bytes; with the scale path loaded beforehand ({set} bytes to load, {} held), the decode through the operator set held {held}; loading and decoding in one call held {whole}", - sp.heap_bytes() + "jpegai/v1, reference kernels: the direct decode held {direct_peak} bytes; with the scale path ({set} bytes to load, {} held) and the networks ({nets_load} bytes to load, {} held) loaded beforehand, the decode through the operator set held {held}; loading and decoding in one call held {whole}", + sp.heap_bytes(), + nets.heap_bytes() ); assert!(held <= direct_peak, "the decode through the operator set held {held} bytes; the direct decode held {direct_peak}"); diff --git a/wai/wai-rs/tests/jpegai_nets_ops.rs b/wai/wai-rs/tests/jpegai_nets_ops.rs new file mode 100644 index 000000000..cb6031cd2 --- /dev/null +++ b/wai/wai-rs/tests/jpegai_nets_ops.rs @@ -0,0 +1,608 @@ +//! `wai.image.jpegai`'s other integer networks through the integer operator set: the +//! hyper decoder, the four context stages and the synthesis, as `jpegai-int/1` lowers +//! them (`extensions/integer-operators.md` §13.6.2) to the graphs `rec_y`, `rec_uv`, +//! `syn_y` and `syn_uv`, and as this crate loads them (`jpegai_ops::Networks`). +//! +//! The committed bundle (`ops-conformance/sets/jpegai`, synthetic, at small widths) has +//! its lowered graphs and certificate under `ops-conformance/certificates/`, where +//! `wai-verify` and the independent checker (`tools/wai_ops_check.py`) reproduce them +//! byte for byte. The `jpegai/v1` bundle of the models root is not committed; its +//! certificate is, by digest, and the tests that read it take its files and the test +//! codestream from `WAI_JPEGAI_WEIGHTS_DIR`, `WAI_JPEGAI_NORM` and +//! `WAI_JPEGAI_CODESTREAM` (`tools/wai_jpegai_fetch_e2e_inputs.sh`), with +//! `WAI_REQUIRE_SOTA_VECTORS` deciding whether their absence is a skip or a failure. +#![cfg(all(feature = "neural_int", feature = "legacy_int"))] + +#[path = "support/require_vectors.rs"] +mod require_vectors; + +use std::collections::BTreeMap; +use std::path::{Path, PathBuf}; + +use serde_json::Value; +use wai::jpegai_decode::{DecoderWeights, NormTables, PlaneWeights}; +use wai::jpegai_ops::{self, Networks, Plane}; +use wai::jpegai_synthesis::{IntNet, Weights}; +use wai_ops::lower::jpegai_nets::NET_MEMBERS; +use wai_ops::{Profile, Tensor}; + +const CAP: &str = "wai.image.jpegai"; +const SYNTHETIC: &str = "1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9"; +const V1: &str = "3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37"; +const PRODUCE: &str = "tools/wai_jpegai_fetch_e2e_inputs.sh (pinned by tools/jpegai-e2e-v1.sha256)"; +const ROLES: [&str; 4] = ["rec_y", "rec_uv", "syn_y", "syn_uv"]; + +fn wai() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("..") +} + +fn read(p: &Path) -> Vec { + std::fs::read(p).unwrap_or_else(|e| panic!("{}: {e}", p.display())) +} + +fn json(b: &[u8]) -> Value { + serde_json::from_slice(b).unwrap() +} + +fn sha256(b: &[u8]) -> String { + wai_ops::sha256::sha256(b).iter().map(|x| format!("{x:02x}")).collect() +} + +fn i64s(v: &Value) -> Vec { + v.as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect() +} + +/// A bundle's members as bytes, by their names in the set (`norm.json`, `weights/…`). +struct Members(BTreeMap>); + +impl Members { + fn synthetic() -> Members { + let d = wai().join("ops-conformance/sets/jpegai"); + let mut m = BTreeMap::new(); + for n in ["norm.json", "weights/hs_y.json", "weights/hs_uv.json"].into_iter().chain(NET_MEMBERS) { + m.insert(n.to_string(), read(&d.join(n))); + } + Members(m) + } + /// The `jpegai/v1` bundle: its twelve members, from the variables the whole-decode + /// tests read (a directory of `.json`, and `norm.json`). + fn pinned(test: &str) -> Option { + let [dir, norm] = require_vectors::env_paths(test, ["WAI_JPEGAI_WEIGHTS_DIR", "WAI_JPEGAI_NORM"], PRODUCE)?; + let d = PathBuf::from(dir); + let mut m = BTreeMap::new(); + m.insert("norm.json".to_string(), read(Path::new(&norm))); + for n in ["hs_y", "hs_uv", "hyp_y", "hyp_uv", "synth_y", "synth_uv", "mcm0_y", "mcm1_y", "mcm2_y", "mcm3_y", "icci"] { + m.insert(format!("weights/{n}.json"), read(&d.join(format!("{n}.json")))); + } + Some(Members(m)) + } + fn get(&self, n: &str) -> &[u8] { + &self.0[n] + } + fn bytes(&self) -> wai_ops::lower::JpegaiBytes<'_> { + wai_ops::lower::JpegaiBytes::from_members(|n| self.0.get(n).map(Vec::as_slice)).expect("every member the lowering reads") + } + fn nets(&self) -> [&[u8]; 8] { + NET_MEMBERS.map(|n| self.get(n)) + } + fn digest(&self) -> String { + let m: BTreeMap = self.0.iter().map(|(k, v)| (k.clone(), v.as_slice())).collect(); + wai::int_set_cache::SetKey::listing_digest(&m).unwrap().iter().map(|x| format!("{x:02x}")).collect() + } + /// The networks as this crate parses them (`Weights::from_json`). + fn weights(&self, n: &str) -> Weights { + Weights::from_json(&json(self.get(n))).unwrap() + } +} + +/// Gate 1, on one bundle: the lowering of its bytes writes `hs_y`, `hs_uv`, then the four +/// network graphs; the networks as this crate parses them, converted +/// (`jpegai_ops::load_networks`), are the graphs `wai-ops` lowers from the bytes; the +/// committed certificate `digest` is those six graphs', with the verdict `acc64`, and +/// `acc32` for the scale path alone (§11's `role_profiles`). +fn lowers_to_its_certificate(name: &str, m: &Members, digest: &str) { + let lowered = wai_ops::lower::jpegai(&m.bytes()).unwrap_or_else(|r| panic!("{name}: does not lower: {r:?}")); + let roles: Vec<&str> = lowered.roles.iter().map(|(r, _)| *r).collect(); + assert_eq!(roles, ["hs_y", "hs_uv", "rec_y", "rec_uv", "syn_y", "syn_uv"], "{name}: the roles, in §13.0's order"); + let w = |n: &str| m.weights(n); + let dw = DecoderWeights { + luma: PlaneWeights { hyper_scale: IntNet::from_json(&json(m.get("weights/hs_y.json"))).unwrap(), hyper_decoder: w("weights/hyp_y.json"), synthesis: w("weights/synth_y.json") }, + chroma: PlaneWeights { hyper_scale: IntNet::from_json(&json(m.get("weights/hs_uv.json"))).unwrap(), hyper_decoder: w("weights/hyp_uv.json"), synthesis: w("weights/synth_uv.json") }, + mcm_y: [w("weights/mcm0_y.json"), w("weights/mcm1_y.json"), w("weights/mcm2_y.json"), w("weights/mcm3_y.json")], + icci: wai::jpegai_icci::IcciNet { luma: empty_path(), chroma: empty_path(), conv_last_v: empty_conv(), scale_v: 0.0 }, + }; + let parsed = jpegai_ops::nets_of(&dw).unwrap_or_else(|r| panic!("{name}: does not convert: {r:?}")); + assert!(parsed == wai_ops::lower::jpegai_nets::parse_nets(m.nets()).unwrap(), "{name}: the converted networks are the ones wai-ops parses from the bytes"); + let nets = jpegai_ops::load_networks(&dw).unwrap_or_else(|r| panic!("{name}: refused under acc64: {r:?}")); + let from_bytes = jpegai_ops::load_networks_bytes(m.nets()).unwrap(); + let cert = json(&read(&wai().join(format!("ops-conformance/certificates/{CAP}/{digest}.json")))); + assert_eq!(cert["set_sha256"].as_str(), Some(digest), "{name}"); + for (i, role) in ROLES.iter().enumerate() { + let g = lowered.get(role).unwrap(); + assert!(*nets.graph(role).unwrap().graph() == *g, "{name}: {role} as loaded from the parsed networks"); + assert!(*from_bytes.graph(role).unwrap().graph() == *g, "{name}: {role} as loaded from the bytes"); + assert!(!nets.graph(role).unwrap().meets(Profile::Acc32), "{name}: {role} meets acc64 and not acc32"); + let c = &cert["graphs"][i + 2]; + assert_eq!(c["name"], *role, "{name}"); + assert_eq!(c["graph_sha256"].as_str(), Some(sha256(&g.to_bytes()).as_str()), "{name}: the certificate is {role}'s"); + let lo = (i32::MIN as i64).to_string(); + let hi = (i32::MAX as i64).to_string(); + for x in c["inputs"].as_array().unwrap() { + let range = (x["lo"].as_str().unwrap(), x["hi"].as_str().unwrap()); + assert!(x["policy"] == "check" && (range == ("-31", "32") || range == (lo.as_str(), hi.as_str())), "{name}: {role}'s input ranges: {range:?}"); + } + } + for (i, role) in ["hs_y", "hs_uv"].iter().enumerate() { + let c = &cert["graphs"][i]; + assert_eq!(c["name"], *role); + assert!(c["nodes"].as_array().unwrap().iter().all(|n| n["fits"].as_array().unwrap().iter().any(|p| p == "acc32")), "{name}: every node of {role} fits acc32"); + } + let v = &cert["verdict"]; + assert_eq!((v["acc64"].as_bool(), v["acc32"].as_bool()), (Some(true), Some(false)), "{name}: the set meets acc64 and not acc32"); + assert_eq!(v["acc32_first_failure"]["graph"], "rec_y", "{name}: the first acc32 failure lies past the scale path"); +} + +fn empty_conv() -> wai::jpegai_icci::Conv { + wai::jpegai_icci::Conv { w: vec![], b: vec![], cin: 0, cout: 0, kh: 0, kw: 0, ph: 0, pw: 0 } +} +fn empty_path() -> wai::jpegai_icci::IcciPath { + wai::jpegai_icci::IcciPath { conv_first: empty_conv(), blocks: vec![], conv_last: empty_conv(), scale: 0.0 } +} + +/// The committed synthetic bundle: its four network graphs are the committed ones, and +/// its set digest is the listing of its eleven members. +#[test] +fn the_committed_bundle_lowers_to_its_committed_networks() { + let m = Members::synthetic(); + assert_eq!(m.digest(), SYNTHETIC, "the set's digest"); + let dir = wai().join(format!("ops-conformance/certificates/{CAP}/{SYNTHETIC}")); + let lowered = wai_ops::lower::jpegai(&m.bytes()).unwrap(); + for role in ROLES { + assert!(lowered.get(role).unwrap().to_bytes() == read(&dir.join(format!("{role}.whg1"))), "the lowering of the bytes differs from the committed {role}.whg1"); + } + lowers_to_its_certificate("synthetic", &m, SYNTHETIC); +} + +/// The `jpegai/v1` bundle: its networks lower to its committed certificate's graphs. +#[test] +fn the_pinned_bundle_lowers_its_networks_to_its_certificate() { + let Some(m) = Members::pinned("jpegai_nets_ops::the_pinned_bundle_lowers_its_networks_to_its_certificate") else { + return; + }; + assert_eq!(m.digest(), V1, "the set's digest"); + lowers_to_its_certificate("jpegai/v1", &m, V1); + eprintln!("jpegai/v1: rec_y, rec_uv, syn_y and syn_uv lower to the committed certificate {V1} and meet acc64"); +} + +/// The whole `jpegai/v1` bundle and the test codestream, as the decoders parse them. +struct Whole { + data: Vec, + weights: DecoderWeights, + norm: NormTables, +} + +impl Whole { + fn pinned(test: &str) -> Option { + let [cs, dir, nf] = require_vectors::env_paths(test, ["WAI_JPEGAI_CODESTREAM", "WAI_JPEGAI_WEIGHTS_DIR", "WAI_JPEGAI_NORM"], PRODUCE)?; + let d = PathBuf::from(dir); + let j = |n: &str| json(&read(&d.join(n))); + let w = |n: &str| Weights::from_json(&j(n)).unwrap(); + let net = |n: &str| IntNet::from_json(&j(n)).unwrap(); + let weights = DecoderWeights { + luma: PlaneWeights { hyper_scale: net("hs_y.json"), hyper_decoder: w("hyp_y.json"), synthesis: w("synth_y.json") }, + chroma: PlaneWeights { hyper_scale: net("hs_uv.json"), hyper_decoder: w("hyp_uv.json"), synthesis: w("synth_uv.json") }, + mcm_y: [w("mcm0_y.json"), w("mcm1_y.json"), w("mcm2_y.json"), w("mcm3_y.json")], + icci: wai::jpegai_icci::IcciNet::from_json(&j("icci.json")).unwrap(), + }; + let nv = json(&read(Path::new(&nf))); + let three = |k: &str| -> [f64; 3] { std::array::from_fn(|i| nv[k][i].as_f64().unwrap()) }; + let norm = NormTables { + pmf: nv["pmf"].as_array().unwrap().iter().map(i64s).collect(), + bounds: i64s(&nv["bounds"]), + per_channel: nv["per_channel"].as_u64().unwrap() as usize, + cdfs_y: i64s(&nv["cdfs_y"]), + cdfs_uv: i64s(&nv["cdfs_uv"]), + gain_y: i64s(&nv["gain_y"]), + gain_uv: i64s(&nv["gain_uv"]), + lsbs_t0: i64s(&nv["lsbs_t0"]).iter().map(|&x| x as i32).collect(), + lsbs_t1: i64s(&nv["lsbs_t1"]).iter().map(|&x| x as i32).collect(), + lef_thr: three("lef_thr0").map(|x| x as i64), + lef_mag: three("lef_mag0").map(|x| x as f32), + }; + Some(Whole { data: read(Path::new(&cs)), weights, norm }) + } +} + +/// What the networks of §13.6.2 read from the test codestream, and what the direct +/// decode makes of it: for each plane `z`, the dequantised residual in Q16 (the input +/// the float stages hand `rec_*`), the direct decode's `ŷ`, and the LSBS-refined latent +/// in Q16 (the input of `syn_*`); then the direct synthesis's planes, as the float +/// values the decode reports. +struct Inputs { + z: [Vec; 2], + resi: [Vec; 2], + yhat: [Vec; 2], + latent: [Vec; 2], + syn_y: Vec, + syn_uv: Vec, +} + +fn q16(f: &[f32]) -> Vec { + f.iter().map(|&x| wai::float_repro::round_half_away(x as f64 * 65536.0) as i64).collect() +} + +/// The decode's own steps up to each network (`jpegai_decode`'s, restated), with the +/// direct networks (`jpegai_synthesis`, `jpegai_pipeline`). +fn inputs(wh: &Whole) -> Inputs { + use wai::jpegai_bitstream::{find_segment, parse_container, parse_picture_header, Marker}; + use wai::jpegai_pipeline::{dequantize_resi, gain_unit_scaler_vec, lsbs_refine, reconstruct_yhat, reconstruct_yhat_uv}; + use wai::jpegai_synthesis::{decode_hyper, decode_uv_f32, decode_y_f32, q16_from_symbols}; + let sp = wai::jpegai_decode::load(&wh.weights, &wh.norm).unwrap(); + let segs = parse_container(&wh.data); + let pay = |m| { + let s = find_segment(&segs, m).unwrap(); + wh.data[s.start..s.start + s.len].to_vec() + }; + let ph = parse_picture_header(&wh.data, find_segment(&segs, Marker::Pih).unwrap().start_bit()); + let mut out: Vec<(Vec, Vec, Vec, Vec)> = vec![]; + for (plane, lat_m, pw, gain) in [(Plane::Luma, Marker::Sorp, &wh.weights.luma, &wh.norm.gain_y), (Plane::Chroma, Marker::Sors, &wh.weights.chroma, &wh.norm.gain_uv)] { + let c = plane.channels(); + let mut grfs = ph.components[plane as usize].grfs_channel_flags.clone(); + grfs.resize(c, false); + let ints = jpegai_ops::plane(&sp, plane, &pay(Marker::Soz), &pay(lat_m), &grfs).unwrap(); + let y_q: Vec = ints.y_q.iter().map(|&q| q as i16).collect(); + let resi = dequantize_resi(&y_q, &ints.likely, &grfs, &gain_unit_scaler_vec(gain, 0), c); + let resi_q = q16(&resi); + let (psi, ..) = decode_hyper(&q16_from_symbols(&ints.z), c, 4, 4, &pw.hyper_decoder); + let yhat = if plane == Plane::Luma { + let m = &wh.weights.mcm_y; + reconstruct_yhat(&resi_q, &psi, c, 16, 16, [&m[0], &m[1], &m[2], &m[3]]) + } else { + reconstruct_yhat_uv(&resi_q, &psi, c, 16, 16) + }; + let yf: Vec = yhat.iter().map(|&v| v as f64 as f32 / 65536.0).collect(); + let lat = lsbs_refine(&yf, &resi, &ints.likely, &wh.norm.lsbs_t0, &wh.norm.lsbs_t1, c, 16, 16); + out.push((ints.z, resi_q, yhat, q16(&lat))); + } + let [(zy, ry, yy, ly), (zuv, ruv, yuv, luv)]: [_; 2] = out.try_into().unwrap(); + let syn_y = decode_y_f32(&ly, &wh.weights.luma.synthesis); + let mut cat = ly.clone(); + cat.extend_from_slice(&luv); + let syn_uv = decode_uv_f32(&cat, &wh.weights.chroma.synthesis); + Inputs { z: [zy, zuv], resi: [ry, ruv], yhat: [yy, yuv], latent: [ly, luv], syn_y, syn_uv } +} + +fn floats(q: &[i64]) -> Vec { + q.iter().map(|&v| v as f32 / 65536.0).collect() +} + +/// Gate 2, the networks: on the test codestream, each plane's `ŷ` through `rec_y` and +/// `rec_uv` is the direct hyper decoder's and context stages', every value, and the +/// planes through `syn_y` and `syn_uv` are the direct synthesis's, bit for bit as the +/// float values the decode reports. +#[test] +fn the_networks_decode_through_the_lowering_as_directly() { + let Some(wh) = Whole::pinned("jpegai_nets_ops::the_networks_decode_through_the_lowering_as_directly") else { + return; + }; + let i = inputs(&wh); + let nets = jpegai_ops::load_networks(&wh.weights).unwrap(); + for (k, plane) in [Plane::Luma, Plane::Chroma].into_iter().enumerate() { + let yhat = jpegai_ops::reconstruct(&nets, plane, i.z[k].clone(), i.resi[k].clone()).unwrap(); + assert!(yhat == i.yhat[k], "{plane:?}: ŷ through the lowering differs from the direct hyper decoder and context stages"); + eprintln!("{plane:?}: ŷ ({} values) equals the direct decode's", yhat.len()); + } + let y = floats(&jpegai_ops::synthesize_y(&nets, i.latent[0].clone()).unwrap()); + assert!(y.iter().map(|v| v.to_bits()).eq(i.syn_y.iter().map(|v| v.to_bits())), "Y through syn_y differs from the direct synthesis"); + let uv = floats(&jpegai_ops::synthesize_uv(&nets, i.latent[0].clone(), i.latent[1].clone()).unwrap()); + assert!(uv.iter().map(|v| v.to_bits()).eq(i.syn_uv.iter().map(|v| v.to_bits())), "U, V through syn_uv differ from the direct synthesis"); + eprintln!("Y ({}) and U, V ({}) through the synthesis graphs equal the direct synthesis's", y.len(), uv.len()); +} + +/// The pinned decode's stage hashes (`tests/jpegai_cross_platform.rs`' `PINNED`): the +/// float values after each stage, and the RGB bytes, of the `jpegai/v1` decode. +const PINNED: [(&str, &str); 8] = [ + ("latent_y", "5889f3806308496c64850aee04f3706178f92d1e0edcda1e6975fe256779061e"), + ("latent_uv", "be89a76f726ef362f267aba3dee8f61594cc512576a3864f52f665cc5b6ab77b"), + ("synthesis", "d56695726bb6ebed403199f60a79a5698734eef1e5ca2813859d490c0882d2a4"), + ("efl", "1783ea77bd4f6b0ac6a599137577a18db2a86753aa3eb3d79ca987e1cf25792e"), + ("icci", "3566c51c4042a749d7826df812663c4e3ff7a9e807cbd0c3bb0545c9dbd79f2b"), + ("efn", "09dc833c7a6b91ce08da20adb8bbc55e2eeedba7d8a2dc4b133ab0915b267de7"), + ("lef", "e2b20c72ac6a59dd12067f75562c82715061f6d7a3444ca075fc0b11e3f56468"), + ("rgb", "dbc494a5a670914edf55c07c48afc0dd348cd05d3a82fff293bf384b2bb69ea3"), +]; + +/// Gate 2, the decode: the whole decode with every integer stage through the operator +/// set (the scale path, the entropy decodes and the four network graphs) gives the +/// direct decode's float values after every stage, bit for bit, and its RGB bytes; and +/// those are the pinned decode's: the `Synthesis` stage hash and the RGB SHA-256 are +/// unchanged. +#[test] +fn the_whole_decode_through_the_networks_is_the_pinned_decode() { + let Some(wh) = Whole::pinned("jpegai_nets_ops::the_whole_decode_through_the_networks_is_the_pinned_decode") else { + return; + }; + let bits = |planes: &[&[f32]]| -> String { sha256(&planes.iter().flat_map(|p| p.iter().flat_map(|v| v.to_bits().to_le_bytes())).collect::>()) }; + let mut direct = vec![]; + let a = wai::jpegai_decode::legacy::decode_with_stages(&wh.data, &wh.weights, &wh.norm, &mut |s, p| direct.push((s.name(), bits(p)))).expect("the direct decode"); + direct.push(("rgb", sha256(&a.data))); + let sp = wai::jpegai_decode::load(&wh.weights, &wh.norm).unwrap(); + let nets = jpegai_ops::load_networks(&wh.weights).unwrap(); + let mut ops = vec![]; + let b = wai::jpegai_decode::decode_loaded(&wh.data, &wh.weights.icci, &wh.norm, &sp, &nets, &mut |s, p| ops.push((s.name(), bits(p)))).expect("the decode through the operator set"); + // The decode a sink makes, which loads the bundle itself, is the same. + let c = wai::jpegai_decode::decode(&wh.data, &wh.weights, &wh.norm).expect("the decode"); + assert!(c.data == b.data, "jpegai_decode::decode"); + ops.push(("rgb", sha256(&b.data))); + assert_eq!(ops, direct, "the stages through the networks' graphs"); + let pinned: Vec<(&str, String)> = PINNED.iter().map(|(n, h)| (*n, h.to_string())).collect(); + assert_eq!(ops, pinned, "the decode through the networks' graphs is not the pinned decode"); + eprintln!("every stage hash ({}) through the networks' graphs is the pinned decode's, the synthesis {} and the RGB {} among them", ops.len(), PINNED[2].1, PINNED[7].1); +} + +/// The accumulator class, measured (§13.6.2's table): the four graphs run on the test +/// codestream's inputs through the interpreter alone, with every value each operator +/// forms held to its certificate's interval (`wai_ops::bounds::Within`), and the largest +/// magnitude each kind of sum reaches, per graph, printed beside the certificate's bound. +/// Nothing a decode forms leaves its interval, and no sum passes `2^63`. +#[test] +fn the_networks_keep_to_their_certificate_on_the_test_codestream() { + let Some(wh) = Whole::pinned("jpegai_nets_ops::the_networks_keep_to_their_certificate_on_the_test_codestream") else { + return; + }; + let i = inputs(&wh); + let nets = jpegai_ops::load_networks(&wh.weights).unwrap(); + let runs: [(&str, Vec); 4] = [ + ("rec_y", vec![Tensor::new(160, 4, 4, i.z[0].clone()), Tensor::new(160, 16, 16, i.resi[0].clone())]), + ("rec_uv", vec![Tensor::new(96, 4, 4, i.z[1].clone()), Tensor::new(96, 16, 16, i.resi[1].clone())]), + ("syn_y", vec![Tensor::new(160, 16, 16, i.latent[0].clone())]), + ("syn_uv", vec![Tensor::new(160, 16, 16, i.latent[0].clone()), Tensor::new(96, 16, 16, i.latent[1].clone())]), + ]; + const SUMS: [&str; 9] = ["conv.acc", "convT.acc", "rq.t", "rq.p", "mul.p", "gram.acc", "apply.acc", "ln.T", "l2.T"]; + for (role, x) in runs { + let g = nets.graph(role).unwrap(); + let sizes = wai_ops::plan::load_plan(g.graph()).unwrap(); + let b = wai_ops::bounds::pass(g.graph(), sizes.as_deref()).unwrap(); + let mut w = wai_ops::bounds::Within::new(&b); + wai_ops::interp::run_observed(g, &x, &[], &mut wai_ops::Sequence::new(), &mut w).unwrap_or_else(|r| panic!("{role}: {r:?}")); + assert!(w.outside.is_empty(), "{role}: values outside the certificate: {:?}", w.outside); + assert!(w.unrecorded.is_empty(), "{role}: keys the certificate does not record: {:?}", w.unrecorded); + // The largest magnitude seen under each sum, over the graph's nodes, with the + // certificate's bound for the same key over the same nodes. + for key in SUMS { + let mut seen: Option<(u128, u32)> = None; + let mut bound: u128 = 0; + for (k, n) in b.nodes.iter().enumerate() { + if let Some((lo, hi)) = w.extreme(k as u32, key) { + let m = lo.unsigned_abs().max(hi.unsigned_abs()); + if seen.is_none_or(|(s, _)| m > s) { + seen = Some((m, k as u32)); + } + if let Some(iv) = n.inter.iter().find(|x| x.key == key) { + bound = bound.max(iv.iv.bits() as u128); + } + } + } + if let Some((m, at)) = seen { + let bits = 128 - m.leading_zeros(); + assert!(m < 1u128 << 63 || key.starts_with("rq.p") || key.starts_with("ln.") || key.starts_with("l2."), "{role}: {key} reaches {m} at node {at}"); + eprintln!("{role:7} {key:10} largest |value| {m:>22} ({bits:>2} bits) at node {at:>3}; certified within {bound} bits"); + } + } + // Every activation the graph writes (each producer result), and its inputs. + let mut act: u128 = 0; + for k in 0..b.nodes.len() as u32 { + if let Some((lo, hi)) = w.extreme(k, "out.0") { + act = act.max(lo.unsigned_abs()).max(hi.unsigned_abs()); + } + } + let inp = x.iter().flat_map(|t| t.data.iter()).map(|v| v.unsigned_abs() as u128).max().unwrap_or(0); + assert!(act < 1 << 31 && inp < 1 << 31, "{role}: an activation or an input reaches 2^31"); + eprintln!("{role:7} largest |input| {inp} ({} bits), largest |activation| {act} ({} bits); every one within i32", 128 - inp.leading_zeros(), 128 - act.leading_zeros()); + eprintln!("{role:7} {} values held to the certificate", w.seen); + } +} + +/// Gate 5, the fast kernels: under every kernel policy, each of the four graphs gives the +/// interpreter's values, on the committed synthetic networks with inputs over their +/// ranges at small sizes (in the fast-kernel steps) and, where the bundle is supplied, on +/// the test codestream's inputs. (`jpegai_ops`' own test counts the convolutions that +/// ran on the fast kernel.) +#[test] +fn every_kernel_policy_runs_the_networks_alike() { + use wai::int_kernels::{with_policy, Policy}; + const POLICIES: [Policy; 5] = [Policy::reference(), Policy::fast(1), Policy::fast(2), Policy::fast(5), Policy::fast(0)]; + let m = Members::synthetic(); + let syn = jpegai_ops::load_networks_bytes(m.nets()).unwrap(); + let mut s: u64 = 0x0D2C_007B; + let mut range = |n: usize, lo: i64, hi: i64| -> Vec { + (0..n).map(|_| { + s = s.wrapping_mul(6364136223846793005).wrapping_add(1442695040888963407); + lo + ((s >> 11) % (hi - lo + 1) as u64) as i64 + }).collect() + }; + let mut cases: Vec<(&Networks, &str, Vec)> = vec![]; + for k in 0..3 { + let a = 1i64 << (16 + 4 * k); + cases.push((&syn, "rec_y", vec![Tensor::new(160, 1, 1, range(160, -31, 32)), Tensor::new(160, 4, 4, range(160 * 16, -a, a))])); + cases.push((&syn, "rec_uv", vec![Tensor::new(96, 2, 1, range(192, -31, 32)), Tensor::new(96, 8, 4, range(96 * 32, -a, a))])); + cases.push((&syn, "syn_y", vec![Tensor::new(160, 2, 2, range(640, -a, a))])); + cases.push((&syn, "syn_uv", vec![Tensor::new(160, 2, 2, range(640, -a, a)), Tensor::new(96, 2, 2, range(384, -a, a))])); + } + let pinned = Whole::pinned("jpegai_nets_ops::every_kernel_policy_runs_the_networks_alike"); + let real = pinned.as_ref().map(|wh| (inputs(wh), jpegai_ops::load_networks(&wh.weights).unwrap())); + if let Some((i, n)) = &real { + cases.push((n, "rec_y", vec![Tensor::new(160, 4, 4, i.z[0].clone()), Tensor::new(160, 16, 16, i.resi[0].clone())])); + cases.push((n, "rec_uv", vec![Tensor::new(96, 4, 4, i.z[1].clone()), Tensor::new(96, 16, 16, i.resi[1].clone())])); + cases.push((n, "syn_y", vec![Tensor::new(160, 16, 16, i.latent[0].clone())])); + cases.push((n, "syn_uv", vec![Tensor::new(160, 16, 16, i.latent[0].clone()), Tensor::new(96, 16, 16, i.latent[1].clone())])); + } + let (mut ran, mut refused) = (0, 0); + for (n, role, x) in &cases { + let g = n.graph(role).unwrap(); + let run = || wai_ops::run_with(g, x.clone(), &[], &mut wai_ops::Sequence::new(), &wai::int_ops::Host).map(|mut o| o.swap_remove(0).data); + let want = with_policy(POLICIES[0], run); + for p in &POLICIES[1..] { + assert!(with_policy(*p, run) == want, "{role} {p:?}: the outputs differ from the interpreter alone"); + } + ran += 1; + refused += want.is_err() as usize; + } + eprintln!("{ran} runs of the four graphs alike under every policy ({refused} refused alike){}", if real.is_some() { ", the test codestream's among them" } else { "" }); +} + +/// One network file of the committed synthetic bundle changed by `edit` (the file's JSON +/// object, its members by name), as bytes; and whether this crate's parser +/// (`Weights::from_json`) reads it, which it does only where every member of kind `conv` +/// or `q16` has its fields of their types (and otherwise refuses it). +fn edited_net(file: &str, edit: impl Fn(&mut serde_json::Map)) -> (Vec, bool) { + let m = Members::synthetic(); + let mut v = json(m.get(file)); + edit(v.as_object_mut().unwrap()); + let typed = v.as_object().unwrap().values().all(|e| match e.get("kind").and_then(Value::as_str) { + Some("conv") => e["w"].as_array().is_some_and(|a| a.iter().all(Value::is_i64)) && e["dims"].as_array().is_some_and(|a| a.iter().all(Value::is_u64)) && e["mult"].is_i64() && e["shift"].is_u64(), + Some("q16") => e["v"].as_array().is_some_and(|a| a.iter().all(Value::is_i64)), + _ => true, + }); + (serde_json::to_vec(&v).unwrap(), typed) +} + +/// The eight network files of the committed bundle with `file` replaced by `b`. +fn nets_with<'a>(m: &'a Members, file: &str, b: &'a [u8]) -> [&'a [u8]; 8] { + NET_MEMBERS.map(|n| if n == file { b } else { m.get(n) }) +} + +/// Gate 3, the bundle: each load check of §13.6.2, broken one change at a time in the +/// committed bundle's network files, is refused `model_mismatch` by the load from the +/// files' bytes, and by this crate's parser or the load from the networks as it parses +/// them. The direct decoder made none of these checks (integer-operators §15.3 item 4): +/// its loaders panicked on a mistyped member, and it computed with whatever shapes, shifts +/// and values the files held. +#[test] +fn every_load_check_of_the_networks_refuses_model_mismatch() { + use serde_json::json as j; + let m = Members::synthetic(); + let conv = |o: &mut serde_json::Map, k: &str| -> serde_json::Map { o[k].as_object().unwrap().clone() }; + let cases: Vec<(&str, &str, (Vec, bool))> = vec![ + ("a weight member missing", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o.remove("iact2.conv2.weight"); })), + ("a layer norm's γ missing", "weights/synth_uv.json", edited_net("weights/synth_uv.json", |o| { o.remove("TAM.TABs.1.ffn.norm1.weight"); })), + ("a weight member of kind q16", "weights/hyp_y.json", edited_net("weights/hyp_y.json", |o| { let mut c = conv(o, "conv3.weight"); c.insert("kind".into(), j!("q16")); c.insert("v".into(), j!([1])); o.insert("conv3.weight".into(), Value::Object(c)); })), + ("weights of other dims", "weights/hyp_uv.json", edited_net("weights/hyp_uv.json", |o| { o["conv1.weight"]["dims"] = j!([2, 95, 1, 1]); })), + ("one weight too few", "weights/mcm1_y.json", edited_net("weights/mcm1_y.json", |o| { o["conv.0.weight"]["w"].as_array_mut().unwrap().pop(); })), + ("a kernel that is not the topology's", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o["TAM.ds_conv.weight"]["dims"] = j!([4, 4, 1, 1]); o["TAM.ds_conv.weight"]["w"] = j!(vec![1; 16]); })), + ("a gate convolution whose groups are not 4", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o["iact3.conv.weight"]["dims"] = j!([4, 2, 3, 3]); o["iact3.conv.weight"]["w"] = j!(vec![1; 72]); })), + ("a context convolution whose groups are not 5", "weights/mcm2_y.json", edited_net("weights/mcm2_y.json", |o| { o["conv.1.weight"]["dims"] = j!([5, 5, 3, 3]); o["conv.1.weight"]["w"] = j!(vec![1; 225]); })), + ("a bias one value short", "weights/synth_uv.json", edited_net("weights/synth_uv.json", |o| { o["conv3_t.bias"]["v"].as_array_mut().unwrap().pop(); })), + ("a shift of 128", "weights/mcm3_y.json", edited_net("weights/mcm3_y.json", |o| { o["fusion_pred_net.conv2.weight"]["shift"] = j!(128); })), + ("a shift of -1", "weights/mcm0_y.json", edited_net("weights/mcm0_y.json", |o| { o["fusion_pred_net.conv1.weight"]["shift"] = j!(-1); })), + ("a weight that is not an integer", "weights/hyp_y.json", edited_net("weights/hyp_y.json", |o| { o["conv2.weight"]["w"][0] = j!(0.5); })), + ("a multiplier past i64", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o["conv2_t.weight"]["mult"] = j!(9223372036854775808u64); })), + ("three temperatures", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o["TAM.TABs.0.attn.temperature"]["v"].as_array_mut().unwrap().pop(); })), + ("ψ of other than 4C channels", "weights/hyp_uv.json", edited_net("weights/hyp_uv.json", |o| { o["conv4.weight"]["dims"] = j!([380, 2, 3, 3]); o["conv4.weight"]["w"] = j!(vec![1; 380 * 18]); o["conv4.bias"]["v"] = j!(vec![0; 380]); })), + ("a luma synthesis of two planes", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o["conv4_t.weight"]["dims"] = j!([4, 2, 3, 3]); o["conv4_t.weight"]["w"] = j!(vec![1; 72]); o["conv4_t.bias"]["v"] = j!([0, 0]); })), + ("an odd feed-forward width", "weights/synth_uv.json", edited_net("weights/synth_uv.json", |o| { + o["TAM.TABs.0.ffn.project_in.weight"]["dims"] = j!([3, 4, 1, 1]); o["TAM.TABs.0.ffn.project_in.weight"]["w"] = j!(vec![1; 12]); + o["TAM.TABs.0.ffn.dwconv.weight"]["dims"] = j!([3, 1, 3, 3]); o["TAM.TABs.0.ffn.dwconv.weight"]["w"] = j!(vec![1; 27]); + })), + ("a member that is not an object of its kind", "weights/mcm1_y.json", edited_net("weights/mcm1_y.json", |o| { o["conv.1.bias"] = j!({ "kind": "q16", "v": "1" }); })), + // Past acc64: one weight of 2^40 makes a sum that no i64 holds under A32. + ("a sum past i64", "weights/synth_y.json", edited_net("weights/synth_y.json", |o| { o["CAB.subscale.weight"]["w"][0] = j!(1i64 << 40); })), + ]; + let mut parsed_too = 0; + for (what, file, (b, typed)) in &cases { + let r = jpegai_ops::load_networks_bytes(nets_with(&m, file, b)); + assert_eq!(r.as_ref().err().map(|r| r.code), Some(wai_ops::Code::ModelMismatch), "{what}: the load from the bytes"); + let parsed = Weights::from_json(&json(b)); + assert_eq!(parsed.is_ok(), *typed, "{what}: this crate's parser reads exactly the typed files"); + if !*typed { + parsed_too += 1; + } else { + let mut dw = synthetic_weights(&m); + let w = parsed.unwrap(); + match *file { + "weights/hyp_y.json" => dw.luma.hyper_decoder = w, + "weights/hyp_uv.json" => dw.chroma.hyper_decoder = w, + "weights/synth_y.json" => dw.luma.synthesis = w, + "weights/synth_uv.json" => dw.chroma.synthesis = w, + f => dw.mcm_y[f.as_bytes()["weights/mcm".len()] as usize - b'0' as usize] = w, + } + let r = jpegai_ops::load_networks(&dw); + assert_eq!(r.as_ref().err().map(|r| r.code), Some(wai_ops::Code::ModelMismatch), "{what}: the load from the parsed networks"); + parsed_too += 1; + } + } + // Two members of one name: JSON this crate's parser reads as one member; the bytes are + // refused. + let file = "weights/hyp_y.json"; + let text = String::from_utf8(m.get(file).to_vec()).unwrap(); + let dup = text.replacen('{', "{\"conv3.bias\":{\"kind\":\"q16\",\"v\":[0,0]},", 1).into_bytes(); + assert_eq!(jpegai_ops::load_networks_bytes(nets_with(&m, file, &dup)).err().map(|r| r.code), Some(wai_ops::Code::ModelMismatch), "two members of one name"); + // The committed bundle itself loads, from either form. + assert!(jpegai_ops::load_networks_bytes(m.nets()).is_ok() && jpegai_ops::load_networks(&synthetic_weights(&m)).is_ok()); + assert_eq!(parsed_too, cases.len(), "every case is refused by the parser or the load from its result"); + eprintln!("{} load checks refused model_mismatch from the bytes and from the parsed networks, and two members of one name", cases.len()); +} + +/// The committed synthetic bundle's networks as this crate parses them (with empty scale +/// networks and eICCI, which the networks' load does not read). +fn synthetic_weights(m: &Members) -> DecoderWeights { + let w = |n: &str| m.weights(n); + DecoderWeights { + luma: PlaneWeights { hyper_scale: IntNet::from_json(&json(m.get("weights/hs_y.json"))).unwrap(), hyper_decoder: w("weights/hyp_y.json"), synthesis: w("weights/synth_y.json") }, + chroma: PlaneWeights { hyper_scale: IntNet::from_json(&json(m.get("weights/hs_uv.json"))).unwrap(), hyper_decoder: w("weights/hyp_uv.json"), synthesis: w("weights/synth_uv.json") }, + mcm_y: [w("weights/mcm0_y.json"), w("weights/mcm1_y.json"), w("weights/mcm2_y.json"), w("weights/mcm3_y.json")], + icci: wai::jpegai_icci::IcciNet { luma: empty_path(), chroma: empty_path(), conv_last_v: empty_conv(), scale_v: 0.0 }, + } +} + +/// Gate 3, the ranges: a dequantised residual or a latent one past `A32`, at either end, +/// is refused `field_range` at its input, before any operator runs, by every graph that +/// reads it (on the committed networks); and, on the test codestream, a residual at the +/// range's end where the context stages' mean keeps the sum within it decodes, through +/// `rec_y` and `rec_uv`, to the direct decode's values, while one past it is refused +/// where the direct decode computed on (integer-operators §15.3 item 4). +#[test] +fn a_value_past_its_range_is_refused_field_range() { + use wai_ops::{Code, Site}; + let m = Members::synthetic(); + let syn = jpegai_ops::load_networks_bytes(m.nets()).unwrap(); + let past = [i32::MAX as i64 + 1, i32::MIN as i64 - 1]; + let fill = |n: usize, at: usize, v: i64| -> Vec { (0..n).map(|i| if i == at { v } else { 0 }).collect() }; + let mut refused = 0; + for v in past { + for (role, inputs, k) in [ + ("rec_y", vec![Tensor::new(160, 1, 1, vec![0; 160]), Tensor::new(160, 4, 4, fill(160 * 16, 7, v))], 1u32), + ("rec_uv", vec![Tensor::new(96, 1, 1, vec![0; 96]), Tensor::new(96, 4, 4, fill(96 * 16, 95, v))], 1), + ("syn_y", vec![Tensor::new(160, 2, 2, fill(640, 3, v))], 0), + ("syn_uv", vec![Tensor::new(160, 2, 2, vec![0; 640]), Tensor::new(96, 2, 2, fill(384, 0, v))], 1), + ] { + let r = wai_ops::run_with(syn.graph(role).unwrap(), inputs, &[], &mut wai_ops::Sequence::new(), &wai::int_ops::Host); + assert_eq!(r.err(), Some(wai_ops::Refusal::new(Code::FieldRange, Site::Input(k))), "{role}: input {k} holding {v}"); + refused += 1; + } + } + eprintln!("{refused} inputs one past A32 refused at their input"); + let Some(wh) = Whole::pinned("jpegai_nets_ops::a_value_past_its_range_is_refused_field_range") else { + return; + }; + let i = inputs(&wh); + let nets = jpegai_ops::load_networks(&wh.weights).unwrap(); + for (k, plane) in [Plane::Luma, Plane::Chroma].into_iter().enumerate() { + // The mean each position gets: ŷ − r. A luma position is taken from the last + // sub-lattice, `(1, 0)`, which no context stage reads, so the other means stay. + let mu: Vec = i.yhat[k].iter().zip(&i.resi[k]).map(|(y, r)| y - r).collect(); + let last = |p: usize| plane == Plane::Chroma || ((p % 256) / 16 % 2, p % 16 % 2) == (1, 0); + let lo_at = (0..mu.len()).find(|&p| last(p) && mu[p] >= 0).unwrap(); + let hi_at = (0..mu.len()).find(|&p| last(p) && mu[p] <= 0).unwrap(); + for (at, edge, one_past) in [(lo_at, i32::MIN as i64, i32::MIN as i64 - 1), (hi_at, i32::MAX as i64, i32::MAX as i64 + 1)] { + let mut r = i.resi[k].clone(); + r[at] = edge; + let got = jpegai_ops::reconstruct(&nets, plane, i.z[k].clone(), r.clone()).unwrap_or_else(|e| panic!("{plane:?}: a residual of {edge} where the mean is {}: {e:?}", mu[at])); + let want: Vec = r.iter().zip(&mu).map(|(a, b)| a + b).collect(); + assert!(got == want, "{plane:?}: a residual at {edge} decodes as the direct decode would"); + r[at] = one_past; + assert_eq!(jpegai_ops::reconstruct(&nets, plane, i.z[k].clone(), r).err(), Some(wai_ops::Refusal::new(Code::FieldRange, Site::Input(1))), "{plane:?}: a residual of {one_past}"); + } + } + eprintln!("on the test codestream: a residual at either end of A32 decodes as directly, one past it is refused field_range"); +} diff --git a/wai/wai-rs/tests/jpegai_ops.rs b/wai/wai-rs/tests/jpegai_ops.rs index 44d50fa70..a14f7b4b0 100644 --- a/wai/wai-rs/tests/jpegai_ops.rs +++ b/wai/wai-rs/tests/jpegai_ops.rs @@ -24,7 +24,7 @@ use wai::jpegai_synthesis::IntNet; use wai_ops::Profile; const CAP: &str = "wai.image.jpegai"; -const SYNTHETIC: &str = "60020d0657c4561db336a42f2d359b254a3f12348e8122aeb7bbb91d63b180ad"; +const SYNTHETIC: &str = "1bc0daae512797a8817f2e77e57d009ace0d22acf4fe6945af8f4e0ee95244b9"; const V1: &str = "3e243dc11566922f5cb7f4c628afd440b18d56a08b99b07cc33d5c8522aeec37"; const PRODUCE: &str = "tools/wai_jpegai_fetch_e2e_inputs.sh (pinned by tools/jpegai-e2e-v1.sha256)"; @@ -91,7 +91,7 @@ impl Bundle { Some((Bundle { norm: read(Path::new(&norm)), hs_y: read(&d.join("hs_y.json")), hs_uv: read(&d.join("hs_uv.json")) }, d)) } fn parsed(&self) -> (NormTables, IntNet, IntNet) { - (norm_tables(&json(&self.norm)), IntNet::from_json(&json(&self.hs_y)), IntNet::from_json(&json(&self.hs_uv))) + (norm_tables(&json(&self.norm)), IntNet::from_json(&json(&self.hs_y)).unwrap(), IntNet::from_json(&json(&self.hs_uv)).unwrap()) } } @@ -99,9 +99,10 @@ impl Bundle { /// converted (`jpegai_ops::net`), is the bundle `wai-ops` parses from those bytes and /// lowers to the same graphs; the scale path this crate loads (`jpegai_ops::load`) holds /// those graphs and meets `acc32`; and the committed certificate `digest` is those graphs', -/// with the verdict Appendix C predicts (`acc32`, in the accelerator subset, no flags). +/// each of whose nodes meets `acc32` with no accelerator flag (the scale path's +/// `role_profiles`, §11). fn lowers_to_its_certificate(name: &str, b: &Bundle, digest: &str) { - let lowered = wai_ops::lower::jpegai(&b.norm, &b.hs_y, &b.hs_uv).unwrap_or_else(|r| panic!("{name}: does not lower: {r:?}")); + let lowered = wai_ops::lower::jpegai_scale(&b.norm, &b.hs_y, &b.hs_uv).unwrap_or_else(|r| panic!("{name}: does not lower: {r:?}")); let roles: Vec<&str> = lowered.roles.iter().map(|(r, _)| *r).collect(); assert_eq!(roles, ["hs_y", "hs_uv"], "{name}"); let (n, y, uv) = b.parsed(); @@ -121,23 +122,32 @@ fn lowers_to_its_certificate(name: &str, b: &Bundle, digest: &str) { let x = &cert["graphs"][i]["inputs"][0]; assert_eq!((x["policy"].as_str(), x["lo"].as_str(), x["hi"].as_str()), (Some("check"), Some("-31"), Some("32")), "{name}: z's range"); } - let v = &cert["verdict"]; - assert_eq!((v["acc64"].as_bool(), v["acc32"].as_bool(), v["npu"].as_bool()), (Some(true), Some(true), Some(true)), "{name}: the certificate's verdict"); - assert_eq!(v["npu_flags"].as_array().map(Vec::len), Some(0), "{name}: no accelerator flags"); + // The set's verdict covers its other networks too (§13.6.2), which meet acc64 only; + // the scale path's two graphs meet acc32, in the accelerator subset, with no flags + // (§11's `role_profiles`). + assert_eq!(cert["verdict"]["acc64"].as_bool(), Some(true), "{name}: the certificate's verdict"); + for i in 0..2 { + for n in cert["graphs"][i]["nodes"].as_array().unwrap() { + assert!(n["fits"].as_array().unwrap().iter().any(|p| p == "acc32"), "{name}: node {} of the scale path fits acc32", n["index"]); + assert_eq!(n["npu_flags"].as_array().map(Vec::len), Some(0), "{name}: no accelerator flags"); + } + } } -/// The committed synthetic bundle: its lowered graphs are the committed ones, and its -/// set digest is the listing of its three members. +/// The committed synthetic bundle: its lowered scale graphs are the committed ones, and +/// its set digest is the listing of its eleven members. #[test] fn the_committed_bundle_lowers_to_its_committed_graphs_and_verdict() { let b = Bundle::synthetic(); let dir = wai().join(format!("ops-conformance/certificates/{CAP}/{SYNTHETIC}")); - let lowered = wai_ops::lower::jpegai(&b.norm, &b.hs_y, &b.hs_uv).unwrap(); + let lowered = wai_ops::lower::jpegai_scale(&b.norm, &b.hs_y, &b.hs_uv).unwrap(); for role in ["hs_y", "hs_uv"] { assert!(lowered.get(role).unwrap().to_bytes() == read(&dir.join(format!("{role}.whg1"))), "the lowering of the bytes differs from the committed {role}.whg1"); } - let members: BTreeMap = + let nets: Vec<(String, Vec)> = wai_ops::lower::jpegai_nets::NET_MEMBERS.iter().map(|n| (n.to_string(), read(&wai().join("ops-conformance/sets/jpegai").join(n)))).collect(); + let mut members: BTreeMap = [("norm.json", &b.norm), ("weights/hs_y.json", &b.hs_y), ("weights/hs_uv.json", &b.hs_uv)].into_iter().map(|(k, v)| (k.to_string(), v.as_slice())).collect(); + members.extend(nets.iter().map(|(k, v)| (k.clone(), v.as_slice()))); let digest = wai::int_set_cache::SetKey::listing_digest(&members).unwrap(); assert_eq!(digest.iter().map(|x| format!("{x:02x}")).collect::(), SYNTHETIC, "the set's digest"); lowers_to_its_certificate("synthetic", &b, SYNTHETIC); @@ -174,13 +184,13 @@ impl Whole { let [cs, dir, nf] = require_vectors::env_paths(test, ["WAI_JPEGAI_CODESTREAM", "WAI_JPEGAI_WEIGHTS_DIR", "WAI_JPEGAI_NORM"], PRODUCE)?; let d = PathBuf::from(dir); let j = |n: &str| json(&read(&d.join(n))); - let w = |n: &str| Weights::from_json(&j(n)); - let net = |n: &str| IntNet::from_json(&j(n)); + let w = |n: &str| Weights::from_json(&j(n)).unwrap(); + let net = |n: &str| IntNet::from_json(&j(n)).unwrap(); let weights = DecoderWeights { luma: PlaneWeights { hyper_scale: net("hs_y.json"), hyper_decoder: w("hyp_y.json"), synthesis: w("synth_y.json") }, chroma: PlaneWeights { hyper_scale: net("hs_uv.json"), hyper_decoder: w("hyp_uv.json"), synthesis: w("synth_uv.json") }, mcm_y: [w("mcm0_y.json"), w("mcm1_y.json"), w("mcm2_y.json"), w("mcm3_y.json")], - icci: wai::jpegai_icci::IcciNet::from_json(&j("icci.json")), + icci: wai::jpegai_icci::IcciNet::from_json(&j("icci.json")).unwrap(), }; Some(Whole { data: read(Path::new(&cs)), weights, norm: norm_tables(&json(&read(Path::new(&nf)))) }) } @@ -296,7 +306,7 @@ fn every_load_check_of_the_bundle_refuses_model_mismatch() { // Past acc32 and within acc64: block 3's sums exceed i32 with one weight of 2^30 over // inputs in [0, 127]. let big = edited(|_, y| { y["pointwise.weight"]["v"][0] = Value::from(1i64 << 30); }); - let g = wai_ops::lower::jpegai(&big.0.norm, &big.0.hs_y, &big.0.hs_uv).expect("the bundle lowers"); + let g = wai_ops::lower::jpegai_scale(&big.0.norm, &big.0.hs_y, &big.0.hs_uv).expect("the bundle lowers"); assert!(wai_ops::graph::load(&g.get("hs_y").unwrap().to_bytes(), Profile::Acc64).is_ok(), "it meets acc64"); assert!(wai_ops::graph::load(&g.get("hs_y").unwrap().to_bytes(), Profile::Acc32).is_err(), "and not acc32"); cases.push(("hs_y: a sum past i32 (acc64, not acc32)", big)); diff --git a/wai/wai-rs/tests/jpegai_reconstruct_calibration.rs b/wai/wai-rs/tests/jpegai_reconstruct_calibration.rs index 10ab75983..22e564f8b 100644 --- a/wai/wai-rs/tests/jpegai_reconstruct_calibration.rs +++ b/wai/wai-rs/tests/jpegai_reconstruct_calibration.rs @@ -10,7 +10,7 @@ //! //! env: WAI_JPEGAI_RECON_FIXTURE = recon_fixture.json {resi_dq_y, psi_y, yhat_y, c, h2, w2} //! WAI_JPEGAI_MCM_WEIGHTS_DIR = dir with mcm_stage0..3_y.json -#![cfg(feature = "neural_int")] +#![cfg(all(feature = "neural_int", feature = "legacy_int"))] use wai::jpegai_pipeline::reconstruct_yhat; use wai::jpegai_synthesis::Weights; @@ -41,7 +41,7 @@ fn reconstruct_yhat_on_real_reference_data() { let load = |i: usize| -> Weights { let raw = std::fs::read(format!("{wdir}/mcm_stage{i}_y.json")).unwrap(); - Weights::from_json(&serde_json::from_slice(&raw).unwrap()) + Weights::from_json(&serde_json::from_slice(&raw).unwrap()).unwrap() }; let (w0, w1, w2w, w3) = (load(0), load(1), load(2), load(3)); diff --git a/wai/wai-rs/tests/jpegai_reconstruction_binding.rs b/wai/wai-rs/tests/jpegai_reconstruction_binding.rs index 4a198325e..b97543691 100644 --- a/wai/wai-rs/tests/jpegai_reconstruction_binding.rs +++ b/wai/wai-rs/tests/jpegai_reconstruction_binding.rs @@ -58,13 +58,13 @@ fn real_decode_to_reconstruction_binding() { // --- load the model bundle (same shape as jpegai_e2e_full) --- let dpath = std::path::Path::new(&dir); - let w = |n: &str| Weights::from_json(&jload(&dpath.join(n))); - let net = |n: &str| IntNet::from_json(&jload(&dpath.join(n))); + let w = |n: &str| Weights::from_json(&jload(&dpath.join(n))).unwrap(); + let net = |n: &str| IntNet::from_json(&jload(&dpath.join(n))).unwrap(); let weights = DecoderWeights { luma: PlaneWeights { hyper_scale: net("hs_y.json"), hyper_decoder: w("hyp_y.json"), synthesis: w("synth_y.json") }, chroma: PlaneWeights { hyper_scale: net("hs_uv.json"), hyper_decoder: w("hyp_uv.json"), synthesis: w("synth_uv.json") }, mcm_y: [w("mcm0_y.json"), w("mcm1_y.json"), w("mcm2_y.json"), w("mcm3_y.json")], - icci: IcciNet::from_json(&jload(&dpath.join("icci.json"))), + icci: IcciNet::from_json(&jload(&dpath.join("icci.json"))).unwrap(), }; let nv = jload(std::path::Path::new(&nf)); let i64v = |k: &str| nv[k].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect::>(); diff --git a/wai/wai-rs/tests/jpegai_synthesis_calibration.rs b/wai/wai-rs/tests/jpegai_synthesis_calibration.rs index 684bfe4fc..fe581f928 100644 --- a/wai/wai-rs/tests/jpegai_synthesis_calibration.rs +++ b/wai/wai-rs/tests/jpegai_synthesis_calibration.rs @@ -6,7 +6,7 @@ //! //! env: WAI_JPEGAI_SYNTH16_Y = path to synthesis16.onnx (model_y), //! WAI_JPEGAI_Y_WEIGHTS = path to the exported 16-bit weights JSON. -#![cfg(feature = "neural")] +#![cfg(all(feature = "neural", feature = "legacy_int"))] use ort::session::{builder::GraphOptimizationLevel, Session}; use ort::value::Value; @@ -46,7 +46,7 @@ fn synthesis_int_vs_float_psnr() { let li: Vec = lf.iter().map(|&x| (x * 65536.0).round() as i64).collect(); let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&wjson).unwrap()).unwrap(); - let wt = Weights::from_json(&v); + let wt = Weights::from_json(&v).unwrap(); let yi = decode_y(&li, &wt); assert_eq!(yi.len(), yf.len(), "output size mismatch"); diff --git a/wai/wai-rs/tests/jpegai_uv_calibration.rs b/wai/wai-rs/tests/jpegai_uv_calibration.rs index d82c4b07e..2b63be4db 100644 --- a/wai/wai-rs/tests/jpegai_uv_calibration.rs +++ b/wai/wai-rs/tests/jpegai_uv_calibration.rs @@ -5,7 +5,7 @@ //! //! env: WAI_JPEGAI_SYNTH16_UV = path to model_uv/synthesis16.onnx, //! WAI_JPEGAI_UV_WEIGHTS = path to the exported 16-bit uv weights JSON. -#![cfg(feature = "neural")] +#![cfg(all(feature = "neural", feature = "legacy_int"))] use ort::session::{builder::GraphOptimizationLevel, Session}; use ort::value::Value; @@ -45,7 +45,7 @@ fn synthesis_uv_int_vs_float_psnr() { let li: Vec = lf.iter().map(|&x| (x * 65536.0).round() as i64).collect(); let v: serde_json::Value = serde_json::from_slice(&std::fs::read(&wjson).unwrap()).unwrap(); - let wt = Weights::from_json(&v); + let wt = Weights::from_json(&v).unwrap(); let uvi = decode_uv(&li, &wt); assert_eq!(uvi.len(), uvf.len(), "output size mismatch (2×256×256 expected)"); diff --git a/wai/wai-verify/src/bin/wai-verify/corpus.rs b/wai/wai-verify/src/bin/wai-verify/corpus.rs index 4a92c4ded..6b5233044 100644 --- a/wai/wai-verify/src/bin/wai-verify/corpus.rs +++ b/wai/wai-verify/src/bin/wai-verify/corpus.rs @@ -265,6 +265,25 @@ fn check_external(s: &json::Value, root: &Path) -> Result<(), String> { if verdict.get(profile.as_str()).and_then(|x| x.as_bool()) != Some(true) { return Err(format!("{path}: its verdict does not meet {}", profile.as_str())); } + // A role held to a stronger profile (§11, `role_profiles`): that graph's inputs and + // scalars meet the profile's tensor width, and each of its nodes fits it (§8.5). + if let Some(roles) = s.get("role_profiles").and_then(|x| x.as_obj()) { + let graphs = v.get("graphs").and_then(|x| x.as_arr()).ok_or("graphs")?; + for (role, p) in roles { + let p = p.as_str().and_then(Profile::parse).ok_or("role_profiles")?; + let g = graphs.iter().find(|g| g.get("name").and_then(|x| x.as_str()) == Some(role)).ok_or_else(|| format!("{path} has no graph {role}"))?; + let width = if p == Profile::Acc32 { 32 } else { 64 }; + let fits = |r: &json::Value| -> bool { + let n = |k: &str| r.get(k).and_then(|x| x.as_dec_i128()); + matches!((n("lo"), n("hi")), (Some(lo), Some(hi)) if lo >= -(1i128 << (width - 1)) && hi < 1i128 << (width - 1)) + }; + let ranges = ["inputs", "scalars"].iter().all(|k| g.get(k).and_then(|x| x.as_arr()).is_some_and(|a| a.iter().all(fits))); + let nodes = g.get("nodes").and_then(|x| x.as_arr()).is_some_and(|a| a.iter().all(|n| n.get("fits").and_then(|f| f.as_arr()).is_some_and(|f| f.iter().any(|x| x.as_str() == Some(p.as_str()))))); + if !(ranges && nodes) { + return Err(format!("{path}: its graph {role} does not meet {}", p.as_str())); + } + } + } Ok(()) } diff --git a/wai/wai-verify/src/bin/wai-verify/main.rs b/wai/wai-verify/src/bin/wai-verify/main.rs index f953f1a71..690e621d8 100644 --- a/wai/wai-verify/src/bin/wai-verify/main.rs +++ b/wai/wai-verify/src/bin/wai-verify/main.rs @@ -4,6 +4,7 @@ //! ```text //! wai-verify bounds ... | [--capability ] [--lowering ] //! [--member =]... [--c ] [--profile acc32|acc64] +//! [--role-profile =acc32|acc64]... //! [--out ] [--check ] //! [--advise acc32|acc64] [--witness ] //! wai-verify lower --capability [--member =]... [--c ] @@ -19,12 +20,16 @@ //! every lowering of §13; `--c` is `world/1`'s latent channel count. `WHG1` graphs //! are certified on their own, in the order given, with the lowering `"whg1"`. //! +//! `--role-profile` holds one graph of the set, by its role, to a profile of its own +//! (§11, `role_profiles`): the graph's inputs, scalars and nodes must meet it. +//! //! The certificate (§8.5) goes to `--out`, or to stdout. The verdict, the first //! failure, the witnesses' paths and the advice go to stderr. //! //! Exit status: //! - 0: the certificate was written and its verdict meets the profile; -//! - 1: the verdict fails the profile (the certificate is still written); +//! - 1: the verdict fails the profile, or a graph `--role-profile` names fails its +//! profile (the certificate is still written); //! - 2: malformed input: a graph refused at load steps 1–7, an empty `check` //! intersection or a `lut16` range past `[−32767, 32767]`, or an unreadable file; //! - 3: `--check` found a difference, printed as the first differing JSON path; @@ -46,6 +51,7 @@ use wai_ops::json::{self, C, Value}; const USAGE: &str = "usage: wai-verify bounds ... | [--capability ] [--lowering ] [--member =]... [--c ] [--profile acc32|acc64] + [--role-profile =acc32|acc64]... [--out ] [--check ] [--advise acc32|acc64] [--witness ] wai-verify lower --capability [--member =]... [--c ] --out @@ -92,6 +98,7 @@ struct Args { members: Vec<(String, String)>, c: Option, profile: Option, + role_profiles: Vec<(String, Profile)>, out: Option, check: Option, advise: Option, @@ -114,6 +121,11 @@ fn parse_args(a: &[String]) -> Result { } "--c" => r.c = Some(val(k)?.parse().map_err(|_| "--c takes a channel count")?), "--profile" => r.profile = Some(Profile::parse(&val(k)?).ok_or("--profile is acc32 or acc64")?), + "--role-profile" => { + let v = val(k)?; + let (n, p) = v.split_once('=').ok_or("--role-profile takes =acc32|acc64")?; + r.role_profiles.push((n.to_string(), Profile::parse(p).ok_or("--role-profile takes =acc32|acc64")?)); + } "--advise" => r.advise = Some(Profile::parse(&val(k)?).ok_or("--advise is acc32 or acc64")?), "--out" => r.out = Some(val(k)?), "--check" => r.check = Some(val(k)?), @@ -328,6 +340,19 @@ fn cmd_bounds(args: &Args) -> ExitCode { } eprintln!("npu: {} (reasons {:?}, flags {:?})", v.npu(), v.npu_reasons, v.npu_flags); let mut code = if v.meets(profile) { 0 } else { 1 }; + for (role, p) in &args.role_profiles { + match cert.graphs.iter().find(|cg| cg.name == *role) { + Some(cg) if cg.bounds.meets(&cg.graph, *p) => eprintln!("{role}: meets {}", p.as_str()), + Some(_) => { + eprintln!("{role}: fails {}", p.as_str()); + code = 1; + } + None => { + eprintln!("wai-verify bounds: the set has no graph {role}"); + return ExitCode::from(5); + } + } + } if let Some(dir) = &args.witness && !v.meets(profile) { diff --git a/wai/wai-web/src/neural_int.rs b/wai/wai-web/src/neural_int.rs index 614f44b5a..a550de1fb 100644 --- a/wai/wai-web/src/neural_int.rs +++ b/wai/wai-web/src/neural_int.rs @@ -263,14 +263,15 @@ pub fn decode_jpegai_full( let parse = |b: &[u8]| -> Result { serde_json::from_slice(b).map_err(|e| JsError::new(&e.to_string())) }; - let w = |b: &[u8]| -> Result { Ok(Weights::from_json(&parse(b)?)) }; - let net = |b: &[u8]| -> Result { Ok(IntNet::from_json(&parse(b)?)) }; + let bad = |e: wai::jpegai_synthesis::BadMember| JsError::new(&format!("wai.image.jpegai: {e}")); + let w = |b: &[u8]| -> Result { Weights::from_json(&parse(b)?).map_err(bad) }; + let net = |b: &[u8]| -> Result { IntNet::from_json(&parse(b)?).map_err(bad) }; let weights = DecoderWeights { luma: PlaneWeights { hyper_scale: net(hs_y)?, hyper_decoder: w(hyp_y)?, synthesis: w(synth_y)? }, chroma: PlaneWeights { hyper_scale: net(hs_uv)?, hyper_decoder: w(hyp_uv)?, synthesis: w(synth_uv)? }, mcm_y: [w(mcm0)?, w(mcm1)?, w(mcm2)?, w(mcm3)?], - icci: IcciNet::from_json(&parse(icci)?), + icci: IcciNet::from_json(&parse(icci)?).map_err(bad)?, }; let nv = parse(norm)?;