diff --git a/.scratch/tcp-reassembler/issues/01-handshake-and-in-order-data.md b/.scratch/tcp-reassembler/issues/01-handshake-and-in-order-data.md new file mode 100644 index 00000000..55ea60f8 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/01-handshake-and-in-order-data.md @@ -0,0 +1,48 @@ +# 01: Handshake and in-order data reach the reader + +Parent: ../spec.md + +**What to build:** A user creates a `TcpReassemblyPool` with the default `TcpReassemblyConfig` and feeds it, through `process_segment`, the segments of a connection whose handshake was captured. The pool groups both directions under one connection and returns it in `TcpProcessed::active`, together with the role of the sender. The connection has: +- a sorted connection key; +- a pool-assigned connection id, starting at 0; +- observed initiator and responder roles; +- first-seen and last-seen timestamps. + +Each stream delivers its in-order bytes as one contiguous slice through `read_received()`, and `consume()` accepts partial amounts. Sequence numbers map to 64-bit offsets that keep growing across 2^32 wrap-around. Window scale options in the SYN and SYN-ACK are parsed and stored for later tickets. Data in the SYN (TCP Fast Open) is delivered at offset 0. + +Segments of connections whose handshake was not seen are ignored with `NoConnection` for now; ticket 07 changes that. + +This slice also lays the groundwork: +- the `std`-gated `tcp_reassembly` module; +- the value types this slice needs; +- the config with the spec's defaults; +- a test-only builder that writes connections as scripts and produces segments for both directions; +- the reference model, starting with in-order random streams; +- the `AGENTS.md` allocation rule extended to name the new module. + +Rules: S1, S2, A1, A3 (parsing only), A7 (observed roles), P4, P7. + +**Blocked by:** None (can start immediately) + +**Status:** ready-for-agent + +- [x] A handshake followed by in-order data in both directions delivers both streams byte-exact through `read_received`/`consume`, including partial consumes +- [x] Proptest against the reference model: random ISNs (including ISNs within 2^16 of 2^32) and random in-order segmentation +- [x] Offsets keep growing across several full 2^32 wraps +- [x] TCP Fast Open data in the SYN is delivered at offset 0 +- [x] `TcpConnectionKey::new(a, b)` and `TcpConnectionKey::new(b, a)` are equal and hash equally; the config defaults are pinned; the derived traits are tested +- [x] Connection ids start at 0 and increase per connection; `first_seen`/`last_seen` follow the timestamps fed in +- [x] Segments with a different key create a separate connection +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — implemented** on `tcp-reassembler` in three commits: `3a0ffea` (value types + generators), `b9ff8f1` (pool, connection, stream, connection script, reference model), `495c44d` (AGENTS.md allocation rule). Full suite, the documented `cargo test --no-default-features`, the bare-metal no_std build and `cargo +1.83.0 check` pass; module tests stay green at `PROPTEST_CASES=3000` (~2 s). Library code in the module has 100% line/region coverage. + +Decisions made while implementing: +- `TcpConnectionKey` keeps its fields private with getters, so the sorted-endpoint invariant can't be broken. +- `read_received()` takes `&mut self` (it records the length for the `consume` clamp), so both streams of a connection can't be borrowed for reading at the same time. +- `TcpProcessed`, `TcpIgnoreReason` and `TcpRead` only have the fields/variants this ticket needs; later tickets add `ended`, the other ignore reasons, `Gap` and `End`. +- The window scale is parsed and stored on `TcpStream` behind `#[allow(dead_code)]`. Its value can't be observed through the public API yet (see ticket 04). +- Overlapping retransmissions are already trimmed (first wins, no conflict counting). Without that, a re-cut segment would lose its new bytes. Wrap handling only shows up for overlaps that cross 2^32, so the proptest re-sends overlapping bytes. A naive `seq > end_seq` comparison is caught by both the unit test and the proptest. +- The spec never defines simultaneous open. The code anchors the responder stream on any SYN from it, but no test pins this. diff --git a/.scratch/tcp-reassembler/issues/02-clean-connection-end.md b/.scratch/tcp-reassembler/issues/02-clean-connection-end.md new file mode 100644 index 00000000..5e4ce46d --- /dev/null +++ b/.scratch/tcp-reassembler/issues/02-clean-connection-end.md @@ -0,0 +1,51 @@ +# 02: Connections end cleanly and late packets are absorbed + +Parent: ../spec.md + +**What to build:** +- The first FIN of a stream sets its FIN offset. Data beyond it is never readable and is counted as out-of-window. +- Once all bytes up to the FIN have been read, reading returns `End(Fin)`. +- When both FINs are ACKed, the connection is finished: the pool hands it over as an owned value in `TcpProcessed::ended`, with the end `Finished`. +- `is_finished()` and `is_complete()` work. +- `recycle()` takes an ended connection back. +- A tombstone keeps the key, so late segments of the ended connection are ignored with `AfterEnd` instead of creating a new connection. + +Checking a FIN against the window is added in ticket 04. + +Rules: F1 (first FIN wins), F2, F3, F6 (`End(Fin)`), D5, P3. + +**Blocked by:** 01 + +**Status:** ready-for-agent + +- [x] Full lifecycle (handshake, data, both FINs, final ACKs): the connection is handed over as `Finished`, both streams read `End(Fin)`, and `is_complete()` is true +- [x] If the last ACK is missing, the connection stays open while both streams report finished +- [x] Every FIN order is tested (initiator first, responder first, simultaneous) +- [x] Data after the FIN is never readable and is counted in `out_of_window_segments`; a second FIN at another offset is ignored +- [x] A late retransmission after the end is ignored with `AfterEnd` and creates no connection +- [x] `recycle()` accepts an ended connection +- [x] The reference model is extended with FIN and close +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — implemented** on `tcp-reassembler` in six commits: +- `2091cec`: value types `TcpStreamEnd`, `TcpConnectionEnd` and `TcpStreamStatus`, plus a generator; +- `1ec455c`: refactor that maps sequence numbers to offsets in one place; +- `b750bce`: test-only refactor of `ConnectionScript` (`segment()` + `push(segment)`), and the reference model state grouped per stream; +- `6f013fc`: FIN handling (F1, F2, D5, `End(Fin)`); +- `6102349`: hand-over as `Finished`, tombstone, `AfterEnd`; +- `35c2b2b`: `recycle()`. + +The full suite, the documented `cargo test --no-default-features`, the bare-metal no_std build and `cargo +1.83.0 check` pass. The module tests stay green at `PROPTEST_CASES=3000` (~2.4 s). Every library line and region of the module is covered in the merged `cargo cov show` view. The summary report still lists misses for single instantiations of the generic pool. A review on both axes (standards and spec) ran, and its fixes are folded into the commits above. + +Decisions made while implementing: +- **A FIN that lies before bytes already received is ignored**, and not counted. Downside, from the spec review: bytes injected beyond the real FIN, before that FIN arrives, block it. The stream then never finishes, and the injected bytes stay readable. The alternative is to accept such a FIN as long as it lies at or after `read_offset`, and to drop and count the unread bytes beyond it. But that lets an injected FIN cut off real bytes that were received and not read yet, which goes against user story 44. **The user decided on 2026-10-10 to keep ignoring it.** +- Only segments with payload bytes after the FIN count as out-of-window. Pure ACKs and FIN-only segments after the FIN don't count. A second FIN at another offset is ignored without counting; ticket 04 adds counting for FINs beyond the window. +- `status()` and `TcpStreamStatus` (so far with only `out_of_window_segments`) were pulled forward from ticket 03, so that the counter is observable. +- Each stream keeps a private seen ACK (`TcpStream::seen_ack`): the highest ACKed offset, mapped relative to the end of the received bytes, with no plausibility check yet. This way an ACK captured before its FIN still counts. The ACK of a FIN is `fin_offset + 1`. +- **The tombstone is a `TcpConnection`** with `end` set and empty streams. `TcpConnection::hand_over` leaves it in the same map. It keeps the key, id and timestamps. An enum entry would have needed unreachable match arms: the borrow checker doesn't allow conditionally returning `&mut` into the entry and then replacing the entry (NLL problem case 3). +- A segment that finishes the connection returns `active: None` and the connection in `ended`. +- Every segment on a tombstone returns `AfterEnd`, SYNs included; C1 is ticket 10. Late segments don't refresh the tombstone's `last_seen`. +- `recycle()` puts the emptied buffers in an unbounded free list, and new connections take their buffers from it. The tests only check that no old bytes leak into a new connection. Whether a buffer is actually re-used can't be observed yet. +- `is_complete()` equals `is_finished()` for now. diff --git a/.scratch/tcp-reassembler/issues/03-out-of-order-retransmissions-holes.md b/.scratch/tcp-reassembler/issues/03-out-of-order-retransmissions-holes.md new file mode 100644 index 00000000..568fff08 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/03-out-of-order-retransmissions-holes.md @@ -0,0 +1,56 @@ +# 03: Out-of-order data, retransmissions and holes + +Parent: ../spec.md + +**What to build:** +- Segments that arrive out of order, duplicated, or re-cut with overlaps are put back in order and delivered exactly once. +- Missing ranges are holes. `holes()` lists them, and reading returns `Pending` at a hole until it is filled. +- For overlapping bytes, the first received content wins. A retransmission with differing bytes increments `conflicting_retransmissions` once per segment. All bytes count as not ACKed until ticket 04. +- `highest_offset()`, `status()` and `is_clean()` report the stream state. +- A stream with a hole before its FIN is not finished. + +Rules: D1, D2, F2 (holes), Q1. + +**Blocked by:** 01 + +**Status:** ready-for-agent + +- [x] Proptest against the reference model: random segmentation, reordering within a bounded distance, duplicates, and overlapping retransmissions that are cut differently; the result is byte-exact +- [x] Corrupted retransmissions: the first received bytes are delivered, and the counter equals the number of conflicting segments +- [x] `read_received` returns `Pending` at a hole and continues once the hole is filled; `holes()` and `highest_offset()` are checked exactly +- [x] A stream with a FIN but a hole before it becomes finished only once the hole is filled +- [x] A long stream that is consumed in small steps is delivered correctly (exercises buffer compaction) +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 01:** `TcpStream::add_data` maps sequence numbers relative to the end of the contiguous received bytes, and drops data that lies behind missing bytes. S2 asks for mapping relative to the highest offset. This ticket has to switch to that, otherwise one lost segment stalls the stream. Overlap trimming (first wins) already exists; conflict counting (D2) does not. The test block "reading stops at missing bytes" in `tcp_stream.rs` covers today's hole path. + +**2026-10-10 — carry-over from ticket 02:** three places rely on data behind missing bytes not being stored: +- `TcpStream::add_segment` checks a new FIN against `received_end()`; +- `is_finished()` compares `received_end()` with the FIN offset; +- `offset()` maps relative to `received_end()`. + +Switch them to the highest offset, and to "no holes before the FIN" (F2). The reference model's `ModelStream::add_segment` uses `received.len()` for the FIN check too. `is_complete()` is still just `is_finished()`, so it has to add `is_clean()`. Until then, a stream whose retransmissions carried different bytes (dropped by first-wins) still reports complete. + +**2026-10-10 — user decision:** a FIN that arrives before the bytes in front of it is recorded, and the stream finishes as soon as those bytes arrive. A FIN without payload already does this: see "FIN behind missing bytes finishes once they arrive" in `tcp_stream.rs`, and "both FINs are ACKed, but bytes before a FIN are missing" in `tcp_connection.rs`. A FIN segment that carries its own payload behind a hole still loses that payload, because the payload is not stored. This ticket must keep that payload, and test the case at connection level too: the connection ends as `Finished` once the hole is filled. + +**2026-10-10 — user decision:** a FIN that lies before bytes already received is ignored (F1). Example: bytes 0..10 are received and a FIN arrives at offset 6; the FIN is dropped and bytes 6..10 stay readable. A real sender never moves its FIN, so either the FIN or the bytes are forged or corrupted. Accepting the FIN would let a forged FIN cut off real bytes that haven't been read yet (user story 44). When the FIN check moves to the highest offset, keep this rule: a FIN before the highest received offset is ignored, even if the bytes in front of it have holes. + +**2026-10-10 — implemented** on `tcp-reassembler` in three commits: +- `1993162`: test-only refactor. The reference model tracks the read offsets, and the feed-and-check loop and the interleaved segment cutting move into helpers. +- `823cdbc`: holes. Sequence numbers map relative to the highest offset, bytes behind missing bytes are stored, and `holes()` and `highest_offset()` are added. A FIN behind missing bytes moves the highest offset to it, F2 applies, and the proptest `reordered_streams` covers reordering, duplicates and re-cut retransmissions. +- `5f8cae5`: `conflicting_retransmissions`, `is_clean()`, and `is_complete()` = clean and finished. Corrupted retransmissions are added to `reordered_streams`, and the new proptest `conflicting_retransmissions` checks the counter against an independent count. The regression seeds are committed. + +The full suite, the documented `cargo test --no-default-features`, the bare-metal no_std build and `cargo +1.83.0 check` pass. Each commit passes the module tests on its own. With `PROPTEST_CASES=3000` the module tests take about 8.5 s; `reordered_streams` is the slowest at about 6.6 s. Every library line and region of the module is covered in the merged `cargo cov show` view. Hand-made mutants were each caught: no split of a hole, `>` instead of `>=` in the FIN check, no hole before the FIN, broken compaction, and conflict comparison skipping or including hole bytes. A two-axis review ran (standards and spec), and its fixes are folded into the commits above. + +Decisions made while implementing: +- **Bytes the user already consumed are not compared for conflicts.** They are no longer buffered. The user decided this on 2026-10-10. D2 in spec.md and "Conflicting retransmission" in CONTEXT.md now say so. For `read_acked()` users nothing changes: their consumed bytes are ACKed, and D3 skips those anyway. +- A FIN behind missing bytes moves the highest offset to the FIN offset, and the missing range is a hole listed by `holes()`. Once the FIN is set, nothing lies beyond it, so `is_finished()` is just "FIN seen and no holes". CONTEXT.md's "Hole" ("with later bytes already received behind them") doesn't quite cover a FIN without payload behind the hole. It was left unchanged. +- Segments without payload (pure ACKs) don't move the highest offset. Otherwise a single injected empty segment could open a large hole. +- `holes()` returns `impl Iterator> + '_`. +- Holes are zero-filled placeholders in the contiguous buffer (ADR-0001). The buffer only reaches the furthest received byte; a hole up to a FIN beyond it allocates nothing. +- Mapping relative to the highest offset (S2) differs from mapping relative to the end of the contiguous bytes only for distances near 2^31. No test pins it directly. +- `TcpStreamStatus` is now 128 bits, which is the coding-style limit for `Copy`. The spec requires `Copy`, but the counters added by tickets 05, 08 and 11 push it past 128 bits. That conflicts with the coding style, so the user needs to decide. + +**2026-10-11 — user decision:** `TcpStreamStatus` no longer derives `Copy`, and `status()` returns `&TcpStreamStatus`. Commit `f9db588`. spec.md is updated. diff --git a/.scratch/tcp-reassembler/issues/04-acked-reads-and-window.md b/.scratch/tcp-reassembler/issues/04-acked-reads-and-window.md new file mode 100644 index 00000000..3651df96 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/04-acked-reads-and-window.md @@ -0,0 +1,81 @@ +# 04: Reading only ACKed data, and the receiver window + +Parent: ../spec.md + +**What to build:** +- ACKs from the other direction set a stream's seen ACK. Implausible ACKs (beyond highest offset + window) are ignored. +- `read_acked()` and `acked_offset()` deliver only ACKed bytes. The implied ACK stays 0 until ticket 06. +- The receiver window is tracked from the advertised window and the negotiated scale. The scale is known only if both SYN and SYN-ACK were seen, and a missing option means scale 0. `fallback_window` is used whenever the window is unknown. +- Data and FINs beyond `max(seen ACK, highest offset) + k × window` are not stored and are counted in `out_of_window_segments`. +- An ACK beyond the captured data, but within the window, turns the uncaptured bytes into a hole. +- Retransmissions of ACKed bytes are ignored without comparison (keep-alives), so conflicts only count for un-ACKed bytes. + +Rules: K1, K3 (seen ACK only), S3, A3, S4, F1 (window check), D2 (refined), D3. + +**Blocked by:** 03 + +**Status:** ready-for-agent + +- [x] Proptest with random ACKs: `read_acked` never returns bytes beyond `acked_offset`, and `read_received` is unaffected +- [x] A Windows-style keep-alive (1 garbage byte at seen ACK − 1) leaves the stream clean +- [x] Regression test (old branch): an injected FIN beyond the window does not block the real FIN +- [x] Out-of-window data is counted and never readable, with exact tests at the window boundary +- [x] Window scale: both options present gives a scaled window; one missing gives scale 0; no handshake uses the fallback window +- [x] An ACK beyond highest offset + window is ignored; an ACK beyond the highest offset but within the window creates a hole +- [x] The reference model is extended with ACK generation +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 01:** `TcpStream::window_scale` is parsed from SYN/SYN-ACK (the first window scale option before any malformed option) and sits behind `#[allow(dead_code)]`. Remove the allow when the window is tracked. Also add tests that check the parsed value through window behaviour, since ticket 01 could only check that SYNs with options still start their streams. RFC 7323's clamp of shifts above 14 to 14 is not implemented yet. + +**2026-10-10 — carry-over from ticket 02:** the seen ACK already exists privately as `TcpStream::seen_ack`, updated by `add_ack`. It is used only to detect that a FIN was ACKed. Add the K1 plausibility check. An ACK of `fin_offset + 1` must neither create a hole nor move `acked_offset()` past the FIN. ACKs beyond `fin_offset + 1` are accepted today, and the reference-model proptest relies on that: late bytes beyond the FIN move the script's ACKs past the FIN. + +**2026-10-10 — carry-over from ticket 03:** +- Since ticket 03, a segment far ahead (up to 2^31 bytes) is stored, and the hole before it is zero-filled in the buffer. Memory use is unbounded until S4 (here) and D4 (ticket 11). Add an explicit test: a forged segment far beyond the window is counted as out-of-window and allocates nothing. +- `TcpStream::extend_to` pushes a new hole without merging it with a last hole that ends at the highest offset. That can't happen in ticket 03, because only a FIN moves the highest offset without data, and nothing lies beyond a FIN. K1 ("an ACK beyond the highest offset turns the uncaptured bytes into a hole") makes it reachable, so merge then. +- D2 compares every buffered byte from the read offset on (`TcpStream::differs_from_received`). D3 must skip the bytes before the ACKed offset. Update the doc of `TcpStreamStatus::conflicting_retransmissions` to match. + +**2026-10-10 — implemented** on `tcp-reassembler` in four commits: +- `de69b3f`: `read_acked()` and `acked_offset()`. `acked_offset()` is `min(seen ACK, highest offset)`, so an ACK of the FIN ACKs all bytes but nothing after them. The reference model checks both reads after every segment and consumes after either one. The new proptest `random_acks` adds pure ACKs of random offsets at random positions. +- `cb2a718`: the receiver window (S3, A3) and out-of-window data and FINs (S4, F1). The `#[allow(dead_code)]` on `window_scale` is gone, and shifts above 14 count as 14. The model tracks the advertised windows (unscaled: the proptests send no window scale options). The new proptest `out_of_window_segments` injects bytes and FINs after the end of the streams into connections with random windows. +- `d3d81f0`: K1. Implausible ACKs are ignored, an ACK after the highest offset adds a hole (merged with a hole at the end, the ticket-03 carry-over), and a FIN cuts the holes an ACK of it created. `random_acks` gets random windows. +- `c9177e5`: D3. Bytes before the ACKed offset are not compared; the doc of `conflicting_retransmissions` is updated. + +The full suite, the documented `cargo test --no-default-features`, the bare-metal no_std build, `cargo +1.83.0 check` and `cargo fmt --check` pass. Each commit passes the module tests on its own. With `PROPTEST_CASES=3000` the module tests finish in about 8.3 s; the tests run in parallel. Run alone, the slowest is `reordered_streams` (~8 s, was ~6.6 s), then `random_acks` (~4 s) and `out_of_window_segments` (~4 s). To get there, the reference model keeps the highest offset apart from its per-byte vector, so trailing missing bytes cost nothing. Every library line and region of the module is covered in the merged `cargo cov show` view. Hand-made mutants were each caught: +- no FIN position in the ACK limit; +- `>=` instead of `>` at the ACK and window limits; +- no hole merging, no FIN truncation, and no cut of the last hole; +- the FIN checked against the highest offset; +- no FIN clamp for ACK holes; +- a wrong window factor; +- the window starting at the highest offset only; +- the last window scale option instead of the first; +- ACKed bytes compared again. + +Exact window boundaries are pinned only by unit tests; the proptests rarely hit them. A two-axis review (standards and spec) ran, and its fixes are folded into the commits above. + +Decisions made while implementing (please confirm; spec.md is unchanged): +- **ACK limit includes the FIN position.** An ACK counts if it is at most `highest offset + window`, plus 1 once the FIN is known (K1 says `highest offset + window`). This way the ACK of the FIN counts even with a window of 0. ACKs after `fin + 1` within that limit count, but never move `acked_offset()` past the FIN or add holes after it. +- **The window used for an ACK is the one advertised before the ACK's segment.** S3 says "the receiver's last advertised window". The window in the ACK's own segment can already have shrunk (to 0 when the receiver's buffer is full), while the sender could send up to the previous window. Data (S4) is checked against the receiver's last window, as written. +- **S4 boundary.** "Starts beyond" means `start > max(seen ACK, highest offset) + k × window`. A segment starting exactly at the limit is stored, so a window of 0 doesn't reject in-order bytes. FIN-only segments after the window count as out-of-window; pure ACKs never count. +- **An ACK never blocks a FIN.** FINs are now checked against the received bytes (the end of the buffer), not the highest offset, which ACK holes can move. When the ACK of a FIN arrives before the FIN, the FIN's position first counts as a missing byte: `highest_offset()` grows by 1 and `holes()` lists it. The FIN then removes it, and `highest_offset()` moves back by 1. A FIN inside an ACK hole is accepted and cuts the hole. Example: bytes 0..3 received, ACK of 10, FIN at 6. The FIN is accepted, the hole becomes 3..6, and the FIN counts as ACKed, because 10 > 6, although that ACK contradicts the FIN. The spec review asked the user to confirm this. The alternative (FINs can't lie before the seen ACK − 1) lets one forged ACK within the window block the real FIN forever. +- **Holes before the ACKed offset can still be filled (D3 vs K4(b)).** Only bytes that were already received are skipped without comparison. Known limit: if the last data segment wasn't captured but was ACKed, a Windows keep-alive's garbage byte at seen ACK − 1 lands in that hole and is stored as data. +- **Each accepted ACK can move the highest offset by up to one window, without data.** Forged ACKs can walk it forward. This allocates nothing (holes after the buffer are not stored), but it widens the S4 limit and will feed the implied ACK of ticket 06 (see ADR-0002's consequences). +- **The ACK of a segment is applied before its data** in `TcpConnection::add_segment`, because the ACK check needs the sender's window from before the segment. +- `hole_give_up_window_factor`'s doc now also says that it limits which bytes are accepted (2 windows with `None`). +- **The "allocates nothing" test is implicit.** A forged segment 1 GiB ahead must leave `highest_offset()` and `holes()` unchanged; before this ticket the test zero-filled 1 GiB. Nothing public counts allocations yet. +- **"No handshake uses the fallback window"** is tested as "SYN-ACK not captured", because a stream without a SYN can't carry data before ticket 07. +- Review findings left as they are (judgement calls): + - `advertised_window(&self, other)` reads the other stream's SYN option. Window-scale negotiation is a connection-level property, but the fields are private to `TcpStream`. + - The three-state `window_scale: Option>` and `window: Option<(u16, bool)>`. + - Some repetition between the proptests `random_acks` and `out_of_window_segments`. + - The window tests live in `status()`, because `out_of_window_segments` is where the window is observable. + +**2026-10-11 — user confirmed** the four open decisions: +- the ACK limit is one higher once the FIN is known; +- an ACK is checked against the window from before its segment; +- an ACK never blocks a FIN; +- holes before the ACKed offset can still be filled. + +spec.md S1, S3, D3, K1 and F1 are updated. The doc of `highest_offset()` now says it moves back to the FIN offset, and `acked_offset()` with it, when a FIN arrives inside bytes that an earlier ACK covered. diff --git a/.scratch/tcp-reassembler/issues/05-user-gives-up-holes-and-discards.md b/.scratch/tcp-reassembler/issues/05-user-gives-up-holes-and-discards.md new file mode 100644 index 00000000..2f8506f0 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/05-user-gives-up-holes-and-discards.md @@ -0,0 +1,113 @@ +# 05: Users give up holes and discard data + +Parent: ../spec.md + +**What to build:** Users decide themselves when data gets dropped: +- `give_up_hole()` turns the hole at the read position into a gap. +- Reading returns `Gap { len: Some(n) }` until the user steps over it with `consume_gap()`. +- `discard_until(offset)` drops unread bytes and gives up holes before `offset`. +- `discard_all()` drops everything buffered, and the stream continues with the next new bytes. +- The status counts gaps and gap bytes. +- Discarding bytes that are present keeps the stream clean; giving up holes does not. + +Rules: Q1, Q3, the gap half of F6. + +**Blocked by:** 03 + +**Status:** ready-for-agent + +- [x] `Gap` is returned until `consume_gap()` is called; the bytes after the gap are then delivered +- [x] `give_up_hole()` returns false when there is no hole at the read position; `consume_gap()` does nothing when the read position is not at a gap +- [x] `discard_until` is tested with an offset inside the buffer, beyond the highest offset, and before the read offset (no-op) +- [x] After `discard_all()`, new segments continue the stream +- [x] Discarding present bytes keeps `is_clean()` true; giving up a hole makes it false; `gaps`/`gap_bytes` are checked exactly +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-11 — implemented** on `tcp-reassembler` in three commits: +- `826cc69`: refactor, no behaviour change. `truncate_to` cuts the holes with the new function `truncate_ranges`. +- `9da916f`: giving up holes: + - `give_up_hole()`, `consume_gap()` and `TcpRead::Gap { len: Option }`; + - `TcpStreamStatus::gaps` and `gap_bytes`; + - `is_clean()` checks gaps; + - the reference model learns gaps, and the new proptest `reader_actions` loses and delays segments, adds ACKs after the sent bytes, and lets the reader give up holes and step over gaps. Afterwards, giving up every hole must let both streams be read to their highest offset, and a captured FIN must end its stream. +- `fca3f9d`: `discard_until()` and `discard_all()`. The model and `reader_actions` learn discarding, at offsets shortly or far after the read position. + +Checks: +- The full suite, the documented `cargo test --no-default-features`, the bare-metal no_std build, `cargo +1.83.0 check` and `cargo fmt --check` pass. +- Each commit passes the module tests and `cargo fmt --check` on its own (checked in a scratch worktree). +- With `PROPTEST_CASES=3000` the module tests take about 10 s. Run alone, `reordered_streams` takes 9.5–10 s; at `f9db588` it took 7.9–9.2 s on the same machine, so the model's per-byte gap checks cost at most about 10%. `reader_actions` takes about 6 s. +- Every library line and region of the module is covered in the merged `cargo cov show` view. + +Hand-made mutants were each caught. The ones in the gap code: +- no gap bytes counted; +- no cutting of gaps at a FIN; +- no clamp in `discard_until`; +- gaps not removed by discards; +- `discard_all` one byte short; +- holes and gaps merged in the wrong order. + +The ones in the review fixes: +- empty holes left behind (this one hung the drain loop until it got a step limit); +- `head` not clamped to the end of the buffer; +- the FIN checked against the end of the buffer instead of the received bytes; +- no move back of the read position; +- bytes in a gap not skipped. + +Equivalent mutants in this ticket, because a gap only ever exists at the read position: +- `read_until` ignoring gaps: a gap at the read position is returned first; +- `differs_from_received` comparing gap bytes: bytes in the gap at the read position are skipped before the comparison; +- the sort in `give_up_holes_before`: new gaps always lie after the only gap; +- `give_up_holes_before` giving up whole holes instead of the parts before the offset: since discards no longer count gaps, `give_up_hole()` is its only caller, and it always passes the end of the first hole. F5 (ticket 09) is the next caller. + +A two-axis review (standards and spec) ran, and its fixes are folded into the commits above: +- the field doc of `Gap.len`; +- "discard" instead of "drop" (CONTEXT.md avoids "dropped bytes"); +- one helper `give_up_holes_before` instead of duplicated counting; +- the test-side `ReaderAction` enum, generated directly; +- the refactor in its own commit; +- the model tests in the commits of the code they test; +- a FIN lost after a give-up (decision 2); +- bytes in a gap no longer appended to the buffer; +- an accurate `gap_bytes` doc; +- a strict FIN check in `reader_actions`, which used to pass vacuously. + +Decisions made while implementing (please confirm; spec.md is unchanged): +1. **`discard_until(offset)` clamps `offset` to `highest_offset()`.** It never discards bytes that haven't arrived yet; `discard_until(u64::MAX)` equals `discard_all()`. This keeps the read position at or before the highest offset, which the holes, the ACK holes and the window checks are based on. Users who want to skip bytes that haven't arrived yet (e.g. the rest of a long message body) call it again once they arrived. The alternative, a read position after the highest offset, would need the highest offset moved with it (widening the window checks), or holes that start at the read position. +2. **F1 refined: a FIN only has to lie at or after the received bytes.** If it lies before the read position, the read position moves back to it. This happens when the user gave up or discarded bytes up to an ACK after the FIN. The bytes in between never existed. S1 says offsets only grow, so it needs this as a second exception, next to the highest offset that moves back to the FIN. + - Found by the spec review: the ACK of a FIN arrives before the FIN (ticket 04 makes the FIN's position a 1-byte hole), and the user calls `discard_all()`, or `give_up_hole()` plus `consume_gap()`. The real FIN then lay before the read position and was ignored, so the stream never finished. + - Test: "a FIN before the read position, ..." in `fin_offset()`, and at connection level in `end()`. +3. **Bytes that arrive after they were consumed or given up are ignored entirely.** They are not stored, not compared for conflicts, and they don't count as received bytes in the F1 check. Example: a gap 3..10 from an ACK, then bytes 3..8 arrive. A FIN at 6 is still accepted. +4. **The counters never decrease.** + - `gaps` counts each hole that was given up; a hole given up in parts (first partly discarded, then given up) counts once per part. + - `gap_bytes` counts the bytes when they were given up. A FIN that later cuts a gap doesn't reduce it; the doc says "Number of bytes in the holes that were given up". + - Consequence: giving up the 1-byte hole at a FIN's position, whose ACK arrived first, counts a gap and makes the stream unclean, although no byte was missing. +5. **`read_acked()` returns the gap at the read position whatever the ACKed offset is.** A gap is a permanent break, so there's nothing to wait for. +6. **The connection only notices a give-up with its next segment.** Giving up the last hole can finish a stream, and with both FINs ACKed the connection too. The pool only notices with the connection's next segment (pinned in `end()`). In real captures that segment often never comes, so the connection stays in the pool until it is evicted, as `Evicted` once ticket 12 lands. See the carry-over on ticket 12. +7. **Gaps are kept in their own sorted `Vec>` next to the holes.** + - `missing()` merges holes and gaps; + - `give_up_holes_before(offset)` moves the parts of holes before an offset into the gaps and counts them; + - both already work for gaps anywhere, which tickets 06 and 09 need. +8. `consume_gap()` doesn't need a read before it, and it clears the last read like `discard_until()` does. + +Review findings left as they are (judgement calls): +- No doc tests on the new methods; ticket 16 adds the examples. +- `feed_and_check(pool, segments, consume_lens, acked_reads, actions)` has a long parameter list, and four proptests pass `&[None]`. +- Repeated `(status.gaps, status.gap_bytes)` tuple asserts in the tests. +- `TcpStream::gaps` (the ranges) next to `TcpStreamStatus::gaps` (the count). + +**2026-10-11 — user confirmed** the decisions: +- `discard_until` clamps to the highest offset (1); +- a FIN before the read position moves the read position back to it (2); S1 gets this as a second exception; +- the counters never decrease (4); +- `read_acked()` returns a gap whatever the ACKed offset (5); +- for decision 6, eviction checks F3 first, so a connection the user finished ends as `Finished` (P6, ticket 12). + +spec.md is updated: API (reading and dropping data), S1, F1, P6 and the new Q4. The doc of `read_offset()` now says it can move back, folded into `9da916f`. + +**2026-10-11 — user decisions on reordering** (the core target: the reassembler does the heavy lifting when segments arrive out of order, so readers reconstruct streams easily): +- **Discards don't count as gaps.** `discard_until()` and `discard_all()` drop the holes before the offset without counting them, so the stream stays clean (Q3 in spec.md). Otherwise a parser that skips data while it still arrives out of order would turn a merely late segment into a gap. This replaces decision 4's "a hole given up in parts counts once per part": parts can't be given up through the API any more. Folded into `fca3f9d` (was `2bd3e2a`), with a reworded commit message. +- **Gaps from the K4 rules are lazy** (ticket 06): a hole that K4 may give up stays fillable until the read position reaches it. Recorded in spec.md K4 and F2, and on ticket 06. +- `give_up_hole()` stays immediate and final: the user gives up the hole they are waiting at. + diff --git a/.scratch/tcp-reassembler/issues/06-capture-loss-does-not-stall.md b/.scratch/tcp-reassembler/issues/06-capture-loss-does-not-stall.md new file mode 100644 index 00000000..f9553208 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/06-capture-loss-does-not-stall.md @@ -0,0 +1,118 @@ +# 06: Capture loss no longer stalls streams + +Parent: ../spec.md + +**What to build:** Streams keep flowing after packets were lost in the capture, without dropping bytes the reader hasn't reached: +- The implied ACK is `highest offset − k × window`, and the ACKed offset becomes the maximum of the seen and implied ACK. +- A hole becomes **overdue** once its end lies at or before the implied ACK (window rule) or the seen ACK as it was `ack_reorder_tolerance` packets ago (ACK rule). The ACK rule tolerates directions reordered against each other in merged captures. +- Gaps are lazy: late segments still fill overdue holes. The overdue hole at the read position becomes one gap, over its whole length, as soon as it is overdue. +- A connection whose two FINs are ACKed ends as `Finished` once all its remaining holes are overdue, and these holes become counted gaps at hand-over. +- In an overdue hole, a 1-byte keep-alive that ends at the seen ACK is ignored. +- `hole_give_up_window_factor = None` switches the window rule off. + +Rules: K2, K3, K4, D3, F2, F3, F5, ADR-0002. + +**Blocked by:** 04, 05 + +**Status:** ready-for-agent + +- [x] Regression test (old branch stall): in a one-direction capture with lost segments, the implied ACK alone eventually delivers all bytes up to `highest offset − k × window` through `read_acked`, with one gap per lost range +- [x] A late segment fills an overdue hole that the read position hasn't reached; its bytes are delivered as data and no gap is counted +- [x] An ACK-covered hole at the read position becomes a gap after exactly N further packets and not after N − 1; a hole filled within the tolerance never becomes a gap +- [x] A hole that lies only partly before the implied ACK stays a hole; once it is overdue as a whole, it is read as one `Gap` with its full length +- [x] The overdue hole at the read position is a gap without any read call: `holes()`, `status()`, `give_up_hole()` and `consume_gap()` agree right after the packet or read-position move that made it one +- [x] `is_finished()` and `is_complete()` stay false while an overdue hole remains before the FIN +- [x] A connection with both FINs ACKed and only overdue holes left ends as `Finished`; its holes are handed over as counted gaps, and reads end in `End(Fin)` +- [x] A 1-byte keep-alive ending at the seen ACK doesn't fill an overdue hole; the same segment still fills a hole that isn't overdue yet (D3 known limit); a 1-byte segment with FIN, or a 2-byte segment, still fills an overdue hole +- [x] With the factor set to `None`, only the ACK rule makes holes overdue +- [x] The reference model is extended with dropped segments and lazy gaps, giving the expected gaps. It states K4 itself instead of mirroring the code +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 04:** +- `TcpStream::acked_offset()` is `min(seen ACK, highest offset)`. Add the implied ACK there (K3). `read_acked()` and the D3 comparison in `differs_from_received` both go through `acked_offset()`, so they pick it up. Update the doc of `acked_offset()` to mention it. +- `TcpStream::window_end` already uses `hole_give_up_window_factor.unwrap_or(2)` × window; the implied ACK applies only for `Some(k)` (K2). The window comes from `TcpConnection::window(role, config)`. +- ACKs after the highest offset now add holes (K1). These are exactly the ACK-covered holes that K4(b) gives up after `ack_reorder_tolerance` packets, and they can be filled until then (D3 only skips bytes that were already received). +- Each accepted ACK can move the highest offset by one window without data, so forged ACKs can walk it, and with it the implied ACK, forward. + +**2026-10-11 — carry-over from ticket 05:** +- `TcpStream::give_up_holes_before(offset)` turns the parts of all holes before an offset into gaps and counts them. It fits K4(a). K4(b) gives up single holes that need not be first, so it needs a variant that gives up one hole. +- So far a gap only ever exists at the read position. These places already handle gaps anywhere, so 06 makes them observable (they are equivalent mutants today): + - `read_until` stops bytes at the first hole or gap (`missing()`); + - `differs_from_received` skips gaps; + - `give_up_holes_before` sorts the gaps. +- `add_data` skips only the bytes in the gap *at the read position*. Inside the buffer, bytes of other gaps are not written, because only holes are filled. But bytes of a gap after the end of the buffer that is not at the read position would be appended, and they would move `received_end`, the end of the received bytes that the FIN check (F1) uses. Skip the bytes of every gap. +- Reference model: + - `received` extends over gaps with placeholders and stops at the first hole; + - `holes()` assumes that gaps lie inside `received`, which is only true while gaps start at the read offset; + - `read` stops at the next gap. + - With gaps behind holes, `holes()` must leave out the gap offsets, and `extend_received` stays correct. +- The ticket-04 "hole" at a FIN's position (the ACK of the FIN arrived first) becomes a gap under K4(b) if the FIN is delayed by more than `ack_reorder_tolerance` packets. The FIN still finishes the stream (ticket 05, decision 2: the read position moves back to it), but the stream counts a gap and is no longer clean. + +**2026-10-11 — user decision (from ticket 05): lazy gaps.** A hole that K4 may give up stays a hole, and late segments still fill it, until the read position reaches it. Only then does it become a gap: it is read as `Gap` and counted (Q4: the counters never decrease). The reassembler must never drop bytes that the reader hasn't reached yet. See spec.md K4 and F2. +- This replaces the first bullet of the carry-over above. K4 doesn't call `give_up_holes_before`; instead, reading at a hole checks K4 and turns that hole into a gap. Ticket 09's F5 still uses `give_up_holes_before(highest_offset)`. +- `is_finished()` (F2) and the connection end (F3) must treat holes that K4 may give up as given up, so connections with capture loss still end as `Finished`. Decide how `holes()` reports them, e.g. still as holes. +- `read_acked()` should present the gap even when the hole lies before the ACKed offset (ticket 05 decision 5). +- The 1-byte hole at a FIN's position whose ACK came first: if the FIN arrives before the reader reaches it, it is cut and never counted. This mostly removes the false gap noted above. +- Check whether the wording of ADR-0002 ("Holes before X − k×window become gaps") and of "Gap" in CONTEXT.md needs to say "once the reader reaches them". +- Reference model: holes that K4 may give up stay in `bytes` as missing and become gaps in `read` when the read offset reaches them. + +**2026-10-11 — grilling decisions (lazy gaps), confirmed by the user.** They are in spec.md (K4, D3, F2, F3, F5, P6, API), `CONTEXT.md` (**Overdue hole**, plus the reworded **Hole**, **Gap**, **Finished connection**) and ADR-0002: +1. The term is **overdue hole**. It replaces "holes that K4 may give up" in the comments above. +2. A hole is overdue as a whole: its end lies at or before max(implied ACK, seen ACK as it was N packets ago). There are no partial gaps, so one lost range gives one gap. +3. N counts every packet applied to the connection, in either direction, as for `last_seen` (P7). The packet whose ACK covers the hole doesn't count. +4. The overdue hole at the read position becomes a gap as soon as it is overdue, not on the next `read_*()` call. Check this: + - after every packet, for both streams, because packets of either direction advance the count; + - after every move of the read position (`consume`, `consume_gap`, `discard_until`, `discard_all`). +5. `is_finished()` stays strict (no holes, overdue ones included), so `is_complete()` never turns from true to false because of a gap. This replaces the bullet above that has F2 treat these holes as given up. +6. F3: both FINs seen and ACKed and every remaining hole overdue → `Finished`. F5 now applies to every end, including `Finished`: all holes become gaps and are counted at hand-over (`give_up_holes_before(highest_offset)`). +7. At eviction, every ACK-covered hole counts as overdue (P6, carried over to ticket 12). +8. Keep-alive filter (D3): in an overdue hole, ignore a segment without SYN, FIN or RST that carries exactly 1 byte and ends at the seen ACK. It touches no counter. +9. `holes()` keeps its API and lists overdue holes. Its doc says that they may be overdue. + +Implementation notes: +- While a connection is open, gaps exist only at the read position (apart from ticket 08's resync marker), and after an end the tombstone absorbs all segments. So the ticket-05 carry-over "skip the bytes of every gap in `add_data`" is moot. +- Tracking K4(b): N is a user-set `u32`, so a per-stream history of up to N ACK advances is unbounded in practice. A stamp per hole is bounded by `max_holes_per_stream`: the connection's packet number when the seen ACK first reached the hole's end, renewed when an ACK hole grows. But stamps are conservative for the front part of a hole that a fill splits. The seen ACK may have reached that part's end earlier than the stamp says, so the part becomes overdue later than K4(b) states. Example: ACK 70 at packet 1 and ACK 100 at packet 10 stamp hole [0, 100) with 10; a fill of [60, 100) leaves [0, 60), which K4(b) makes overdue at 1 + N, but the stamp only at 10 + N. Either keep K4(b) exact or change the spec to match the stamps; check with the user before changing the spec. +- Docs to reword in the code: + - `hole_give_up_window_factor` ("after which a hole is given up") and `ack_reorder_tolerance` ("during which … can still be filled"): the hole becomes overdue; + - `holes()` and `is_finished()`; + - `give_up_hole()`: it returns false at an overdue hole at the read position, which is already a gap; + - `read_received()`. +- The 1-byte hole at a FIN's position whose ACK came first becomes a gap only if it is at the read position and overdue before the FIN arrives. The FIN then moves the read position back (ticket 05), and the gap stays counted (Q4). +- Reference model: overdue holes stay missing in `bytes`. After each step, if the read offset is at a missing range that is overdue as a whole, record a gap there. Compute the implied ACK and the seen ACK of N packets ago from the model's own state, in separate fields as with the highest offset. + +**2026-10-11 — implemented** (commits `b1078c1` through `418aee0`). Decisions taken while implementing, for the user to confirm: +1. **The implied ACK never moves back.** It is the running maximum of `highest offset − k × window`, because bytes sent earlier still prove what the receiver had ACKed then. K2's formula alone would let it fall when the window grows. Once confirmed, add this to K2. +2. **K4 timing within a packet.** The bytes of a packet are applied before that packet's overdue check. So a hole is overdue *after* the N-th further packet, and the N-th packet's own bytes still fill it (a keep-alive in it too). This matches the acceptance criterion ("after exactly N further packets"). K4 says "overdue on the N-th packet", so only its wording needs a fix. +3. **The implied ACK's timing.** It is updated after every packet, with the receiver's current window. D2/D3 checks inside a packet use the implied ACK from before that packet. + +**Open, needs a user decision (review finding): zero or shrinking windows.** +- The implied ACK uses the receiver's last advertised window. An ACK segment that advertises window 0 sets the implied ACK to the highest offset in the same packet. +- So the hole that this ACK created (K1) is overdue at once, and `ack_reorder_tolerance` is skipped. That is the merged-capture case K4(b) should tolerate. +- S3 already checks an ACK against the window from before its segment. For K2, using the window from before the packet only delays the problem by one packet. +- Options: + - (a) use the largest window the receiver advertised, which is conservative and robust to shrinking; + - (b) use the window from before the packet; + - (c) accept it and document it. + +Implementation notes: +- K4(b) is exact: each stream keeps a queue of `(packet number, seen ACK)` for the last N packets, but only while it has holes. The per-hole stamps from the grilling comment were not needed, so spec.md stays as it is. +- F3/F5: `TcpStream::can_finish()` and `TcpStream::give_up_all_holes()`. Tickets 09, 10 and 12 can reuse the latter for F5. +- Equivalent mutants: + - clearing `recent_acks` when there are no holes, and recording ACKs only while there are holes. Both only bound memory, because later holes lie after the seen ACK; + - `hole.start <= offset` in `in_overdue_hole`. A keep-alive byte that was already received lies before the ACKed offset, so it is neither stored nor compared either way. +- Proptests: + - `random_acks` and `out_of_window_segments` now check the received bytes outside the gaps only, because their ACKs run ahead of the data. + - `reordered_streams` switches the ACK rule off (`ack_reorder_tolerance = u32::MAX`), because its retransmissions at random positions ACK bytes sent much later. + - The new `capture_loss` test uses a random factor and tolerance (`tcp_overdue_config_any`), small windows, lost or late segments and keep-alives. On its own it kills every non-equivalent mutant tried. +- Known: a connection whose last hole was covered fewer than N packets before its last packet stays open until eviction. Ticket 12 makes it end as `Finished` there. +- Review judgement calls left as they are: + - the docs of `acked_offset()` and `ack_reorder_tolerance` explain the implied ACK and the memory cost to users; + - the `(u64, u64)` tuple in `recent_acks` is private and documented; + - `first_hole()` in the reference model came with the behaviour commit that needed it. + +**2026-10-11 — user decisions on the points above.** All three follow the recommendation: +1. The implied ACK never moves back. Confirmed, and now in K2. +2. A hole is overdue *after* the N-th packet, and that packet's bytes still fill it. Confirmed; K4's wording is fixed. +3. Zero or shrinking windows: the implied ACK uses the **largest window the receiver advertised**. The fallback window applies only while no window is known: if it counted towards the maximum, the 4 MiB assumed before the SYN-ACK would stick for the whole connection. This is implemented in `ed0ac57` and recorded in K2 and ADR-0002. The regression test in `read_received()` covers an ACK with window 0 that arrives before its data. diff --git a/.scratch/tcp-reassembler/issues/07-mid-stream-pickup.md b/.scratch/tcp-reassembler/issues/07-mid-stream-pickup.md new file mode 100644 index 00000000..4e96b858 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/07-mid-stream-pickup.md @@ -0,0 +1,96 @@ +# 07: Mid-stream pickup + +Parent: ../spec.md + +**What to build:** Connections whose handshake was not captured are reassembled too. +- The first data segment of a stream sets its offset 0. The stream reports `MidStreamPickup`. +- Roles are guessed: the lower port is the responder; with equal ports, the sender of the first packet is the initiator. `roles_guessed()` reports this. +- A SYN-ACK without its SYN still gives both streams an observed start. +- Until the first consume or discard, earlier bytes within the window are prepended (offsets shift), and a late SYN upgrades the stream to an observed start. +- Pure ACKs, FIN-only segments and RSTs of unknown connections stay ignored with `NoConnection`. + +Rules: A2, A4, A5, A6, A7. + +**Blocked by:** 03, 04 + +**Status:** ready-for-agent + +- [x] Role guessing has exact tests: lower port, equal ports, and the handshake case +- [x] A late SYN before the first consume upgrades the stream to an observed start; after a consume the same SYN only counts as out-of-window +- [x] Earlier data arriving before the first consume is prepended +- [x] Regression test (old branch): a keep-alive probe that is the first segment of a stream behaves as documented by A4 +- [x] A pure ACK of an unknown connection creates no entry +- [x] The reference model is extended with random pickup points +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 01:** two tests pin ticket-01 behaviour and need replacing: +- the block "data of a stream whose start was not seen is ignored" in `tcp_stream.rs` `read_received`; +- the first block of `process_segment` in `tcp_reassembly_pool.rs`, which expects `NoConnection` for every non-SYN segment, including the SYN-ACK. + +Any SYN from a stream that isn't anchored yet currently anchors it, including a SYN without ACK from the responder. The spec leaves that case open. + +**2026-10-10 — carry-over from ticket 04:** +- Add the "no handshake uses the fallback window" test from ticket 04: so far it is only tested with the SYN-ACK missing. +- `TcpStream::window_scale` is `Some(..)` only once the sender's SYN was seen; keep it tied to the SYN, not to `start_seq`. When A2 anchors the initiator stream from the SYN-ACK's ACK number, the initiator's SYN was still not seen, so the fallback window applies (A3). +- `TcpConnection::add_segment` applies a segment's ACK before its data, and `add_ack` ignores ACKs of streams without `start_seq`. A2's anchoring by the SYN-ACK's ACK number has to happen before `add_ack`, or that ACK is lost. +- `add_segment` records the sender's advertised window even when its stream isn't anchored yet; A5's "within the window" can use the `window` parameter. + +**2026-10-11 — carry-over from ticket 05:** A5 says "until the first consume or discard". `discard_until()`, `discard_all()` and `consume_gap()` also move the read position, so they presumably end the prepend window like `consume()`. Also decide whether `give_up_hole()` alone ends it: it doesn't move the read position, but it gives up bytes at offset 0 that prepended bytes could precede. + +**2026-10-11 — carry-over from ticket 06:** +- When A5 prepends bytes and shifts the offsets, shift the overdue state of `TcpStream` with them: + - `implied_ack` and `settled_ack`; + - the ACK values in `recent_acks`; + - the seen ACK, holes and gaps, as before. +- A mid-stream pickup has no known window scale, so `largest_window` stays `None` and the implied ACK uses `fallback_window` (2 × 4 MiB by default). A late SYN upgrade (A5) still doesn't make the scale known unless both SYNs are seen (A3). + +**2026-10-11 — user decisions (asked before implementing):** +1. **Late handshake and guessed roles:** a late SYN from the guessed initiator, or a late SYN-ACK from the guessed responder, that gives a stream an observed start confirms the roles: `roles_guessed()` becomes false. A late handshake that contradicts the guess leaves the roles as they are, and they stay guessed; the streams still get their observed starts (as the illustration of the chosen option showed). Roles never change after the connection was created. +2. **Keep-alive as the first segment:** if the other side's ACK was seen while the stream had no start, a 1-byte segment without SYN, FIN or RST that ends at that ACK is a keep-alive. It is ignored and doesn't start the stream, as in D3. A keep-alive that is the connection's very first packet starts the stream with its filler byte (A4, documented limit). +3. **FIN without bytes:** on an existing connection, a FIN without bytes starts a stream that has no start yet, with offset 0 at the FIN. The stream is empty and finished, so the connection can end as `Finished`. It takes no earlier bytes and no late SYN afterwards (A5 is closed), because a reader may already have read `End(Fin)`. + +**2026-10-11 — implemented** (commits `5a06b67` through `eef6fdd`): +- `5a06b67`: the implied ACK is kept as an `Option`, not cut off at 0, so it stays exact when offset 0 moves. +- `93d1989`: `TcpStreamStart` and `TcpStreamStatus::start`. +- `fd2d41d`: A2, a SYN-ACK starts a connection; its ACK starts the initiator's stream. +- `5484104`: A4, A6, A7 guess, `roles_guessed()`, keep-alive and FIN-only starts, pending ACKs before the start. +- `3ea7d47`: A5, prepending, late SYNs, out-of-window before offset 0. +- `266f9d9`: A7, a late handshake confirms guessed roles. +- `eef6fdd`: reference model with pickups, proptest `mid_stream_pickups` (green at 3000 cases). + +The reassembly code of this ticket is fully covered (merged view of `cargo cov`). Manual mutants of every new condition are killed, apart from the equivalent ones listed below. A two-axis review (standards and spec) ran, and its fixes are folded into the commits above. Each rebuilt commit passed the module tests. + +Decisions taken while implementing, for the user to confirm (spec.md is unchanged for these): +1. **A stream without a start reports `MidStreamPickup`.** The value only ever changes to `Observed`, e.g. for the responder's stream between SYN and SYN-ACK. +2. **"Within the window" (A5):** the bytes' first byte, or the SYN's ISN + 1, lies at most one receiver window before offset 0. The window is the one used for S4, so the fallback window on a pickup. +3. **"The first consume or discard" (A5) is the first forward move of the read position:** `consume` of at least 1 byte, `consume_gap`, or `discard_until`/`discard_all` that move it. `consume(0)` and `discard_until(0)` don't end it. `give_up_hole()` can't, because byte 0 of a pickup is always a received byte (until ticket 11, see its carry-over). +4. **A2 + A5:** the ACK number of a late SYN-ACK acts as a late SYN of the other stream if that stream is a pickup. +5. **Bytes before offset 0** of a pickup that can't take them count as out-of-window, once per segment (also with bytes after the FIN), and the segment's bytes from the read position on are still stored. On an observed start they stay ignored without counting, because the filler byte of a keep-alive of a stream without bytes lies there. +6. **A SYN that a pickup can't take** (after the read position moved, more than one window before offset 0, after offset 0, or on a pickup that started at its FIN) counts as out-of-window and is ignored, its TCP Fast Open bytes included, until ticket 10 looks at it (C4 → C2). +7. **Pending ACK (found by the spec review):** the last ACK that a stream couldn't apply is kept and applied after every packet until it counts. That is an ACK seen before the stream had a start, or one of offset 0 or before it while bytes can still be prepended. Without it, a pickup that started at its FIN never finished when the FIN's ACK was captured first. An ACK of a pickup's first byte was also lost when earlier bytes were prepended. It is the *last* such ACK, not the highest, because ACKs before a start can't be compared. +8. **`consume()` after a prepend consumes nothing until the next read.** The bytes the last read returned are no longer at the read position. A reader that copied them, fed more packets and only then consumed sees the prepended bytes in front of them on the next read, so it handles them again. The alternative, consuming the prepended bytes, would drop bytes the reader never saw. +9. **ACK history while prepending is possible:** the K4(b) queue of `(packet, seen ACK)` is kept also without holes while the stream can still prepend, because a prepend adds a hole before the seen ACK. The proptest found this. +10. **RSTs of unknown keys** start no connection, also with bytes or a SYN. A 1-byte segment with RST is not a keep-alive. + +Equivalent mutants: +- `start <= 0` instead of `start < 0` before `prepend` in `move_start_back`: the empty hole that `prepend(0)` inserts is dropped by the overdue check after the packet. +- `can_prepend()` in `add_ack`'s pending condition, and the pickup check in `can_prepend()` where it guards the ACK history: without them, ACKs that can never count stay pending, or ACKs are recorded without holes. Both only cost memory. + +Known limits (documentation for ticket 16): +- A keep-alive that is a connection's very first packet starts the stream with its filler byte. +- A SYN with TCP Fast Open bytes that its SYN-ACK ACKs: if the SYN is captured after the SYN-ACK, the SYN-ACK's ACK starts the initiator's stream after the TFO bytes as an observed start. The late SYN can't move it back, so the TFO bytes are lost. +- Contradicting late handshakes give observed starts to streams whose roles stay wrongly guessed. `is_complete()` judges the stream, not the role labels. + +Review judgement calls left as they are: +- The reference model comes in its own commit after the behaviour commits (as in tickets 03–06); the per-method unit tests come with the code. +- "a SYN-ACK is sent by the responder" is written out in the pool (endpoint) and in the connection (role); they pick different things. +- `(initiator, roles_guessed)` travel together into `TcpConnection::new` only. +- `observe_start` keeps its name; its doc says when it refuses. + +**2026-10-11 — user decisions on the points above.** The user went through all of them, with illustrated scenarios. Everything follows the recommendation, except decision 2: +- **Decision 2 changed:** earlier bytes and late SYNs may lie up to k windows before offset 0, the same range that limits bytes after the stream (S4, k = `hole_give_up_window_factor`, 2 without one), instead of one window. Implemented in `9612fc5`. +- Decisions 1, 3–10 are confirmed as implemented, and so is accepting the TCP Fast Open limit as documented. +- spec.md is updated: the API (`start` of a stream without a start), A2 (late SYN-ACK, TFO limit), A5 (what ends prepending, the k-window range, out-of-window counting, `consume` after a prepend), A6 (RSTs with bytes or SYN), K1 (pending ACKs), and K4 (ACK history for prepended holes). + diff --git a/.scratch/tcp-reassembler/issues/08-resync.md b/.scratch/tcp-reassembler/issues/08-resync.md new file mode 100644 index 00000000..14b92974 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/08-resync.md @@ -0,0 +1,108 @@ +# 08: Resync after large sequence jumps + +Parent: ../spec.md + +**What to build:** A stream that jumps far beyond any plausible window without a SYN recovers: +- Out-of-window data records a candidate position. +- An ACK from the other direction within one window of the candidate triggers a resync. The stream continues behind a `Gap { len: None }`, and `resyncs` is incremented. +- `resync_after_segments = Some(n)` opts in to resyncing after n consecutive agreeing segments, for one-direction captures. +- `force_resync()` makes the next data segment the new anchor. + +Rules: R1–R4, S2 (unmappable distances), ADR-0002. + +**Blocked by:** 04, 05 + +**Status:** ready-for-agent + +- [x] Without confirmation the stream never resyncs; random out-of-window segments are only counted +- [x] An ACK-confirmed resync delivers the following bytes exactly, after `Gap { len: None }` +- [x] `resync_after_segments` has exact tests at n − 1 and n; the count resets when a segment doesn't fit +- [x] `force_resync()` anchors the stream at the next segment +- [x] Distances of 2^31 or more are counted as out-of-window, with exact tests at the boundary +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 04:** +- R1: out-of-window data returns early in `TcpStream::add_segment`, right after `status.out_of_window_segments += 1`. That is where the candidate is recorded. +- R2: implausible ACKs return early in `TcpStream::add_ack` (`ack > sent_end + window`). They have to be kept as resync evidence there. The window is the one the receiver advertised before the ACK's segment. + +**2026-10-11 — carry-over from ticket 05:** `TcpRead::Gap { len: Option }` exists, but only `Some` is produced so far. +- Gaps are stored as `Range` in `TcpStream::gaps`. A resync gap takes no offsets (the stream continues right after the highest offset), so it needs a marker, e.g. an empty range plus a flag. `read_until`, `consume_gap()` and `gap_at_read_offset()` have to handle it. +- Decide what `gap_bytes` counts for a gap of unknown length (probably nothing). + +**2026-10-11 — carry-over from ticket 07:** +- A resync before the first read of a mid-stream pickup: prepending afterwards would move the offsets under the resync's gap. A resync (R2, R4) should end prepending (`TcpStream::can_prepend`), or `prepend` has to move the resync gap too. The same goes for `force_resync()` before the first read. +- Bytes before offset 0 of a pickup that can't take them count as out-of-window (ticket 07, decision 5). Decide whether only S4's forward out-of-window data records a resync candidate (R1), not bytes before offset 0 or after the FIN. +- `pending_ack` is applied again after every packet. If R2 keeps implausible ACKs as evidence, a pending ACK must not count as new evidence each time. + +**2026-10-11 — user decisions (asked before implementing):** +1. **Where an ACK-confirmed resync continues:** right after the candidate's bytes. They are not stored (S4) and are part of `Gap { len: None }`, so reading doesn't stall and no extra memory is needed. That one segment is lost. Rejected: continuing at the candidate's first byte (its bytes become a hole that stalls reading until it is overdue, then a second gap), and keeping a copy of the candidate's bytes (a copy of every out-of-window segment, plus one segment of memory per stream). +2. **An ACK before the data confirms it too:** the last ACK beyond the window is kept as evidence. Out-of-window data within one window of it resyncs at once, and that segment becomes the stream's new start, with its bytes stored. A resync, or the stream moving forward, clears the kept ACK. +3. **Forward jumps only:** only data after the window (S4) or at an unmappable distance (S2) becomes a candidate. A new ISN that maps behind the stream (half of all ISN changes) is not detected: bytes before offset 0 stay ignored on an observed start (counted on a pickup), and ACKs behind the seen ACK stay ignored. `force_resync()` recovers such streams. Known limit for the docs (ticket 16). + +spec.md R1 and R2 are updated. + +**2026-10-11 — user decisions after the review (asked before fixing):** +4. **Decision 1 corrected:** with the ACK after the data, not one segment but all out-of-window data before the first confirming ACK is lost, up to about one window (one round trip). The illustration of decision 1 showed only one segment. The user keeps the decision: these bytes are part of `Gap { len: None }`, and no copies are kept (rejected: copies of the agreeing out-of-window segments, up to one window per stream). A FIN in the candidate's segment, or a FIN without bytes right after it, ends the stream at the resync point, so the stream still finishes (the review found that the FIN was lost and its ACK left a 1-byte hole that never closed). +5. **The ACK that confirms a jump ACKs the bytes before it:** also when it maps before the resync point (it ACKs bytes that fell into the gap). Otherwise `read_acked()` stalls in front of the gap if no later ACK comes. + +spec.md R2 is updated. + +**2026-10-11 — implemented** (commits `a98d09f` through `1d47c20`): +- `a98d09f`: S2, a sequence number exactly 2^31 from the highest offset can't be mapped. Its bytes or FIN count as out-of-window, an ACK there is kept as resync evidence, and a pickup refuses a SYN there. "2^31 or more" is only this one distance, because serial arithmetic maps every other one before or after the highest offset. +- `7db6015`: `TcpStreamStatus::resyncs`, part of `is_clean()`. +- `16c6c2c`: R1/R2 with the decisions above: + - `Gap { len: None }` is an empty range in `TcpStream::gaps`; + - resyncing gives up the holes before the jump; + - a floor (`resync_offset`) for bytes and FINs from before the jump; + - a resync ends prepending (A5); + - the reference model follows R2, because the existing proptests produce such resyncs with their small windows. +- `58d203c`: R3, plus the ACK floor that a resync without a confirming ACK needs. +- `8ba954d`: R4, `force_resync()`. +- `1d47c20`: the model for R3/R4 and the proptest `resyncs`. It covers jumps with and without ACKs, pickups, loss, reordering, injected segments after the window that don't agree, `resync_after_segments` and forced resyncs, and is green at 3000 cases. + +The module is fully covered (merged view of `cargo cov`). Manual mutants of every new condition are killed, apart from the equivalent one below. A two-axis review (standards and spec) ran. Its spec review found four real problems; two of them led to the user decisions 4 and 5 above: +- a lost FIN of the candidate; +- an ACK that arrived first and was dropped; +- `read_acked()` stalling in front of the gap; +- more than one lost segment. + +The fixes are folded into the commits above, and so are its standards points (commit structure, glossary, a candidate type instead of a tuple). Each rewritten commit passed the module tests. + +Decisions taken while implementing, for the user to confirm (spec.md is unchanged for these): +1. **The candidate** is the latest data segment after the window: one with bytes that is not a SYN, while the FIN is unknown. Any other data segment clears it, as does any forward move of the highest offset (data, an ACK or a FIN) and a resync. So with reordering, an earlier segment arriving after the jump's first one clears it; the next bytes after the jump (or an ACK that was kept) restore it. +2. **"Within one window"**: an ACK, or the next segment's first byte (R3), lies at most one receive window before the candidate's first byte or after its last byte. The window is the one S4 uses, i.e. the one advertised before the segment. +3. **The kept ACK** is the latest ACK more than one window after the bytes sent, or one that can't be mapped. ACKs before offset 0 are old ones and don't replace it. Only a resync or a forward move clears it: plausible ACKs that don't move the stream leave it. +4. **At a resync, all holes before the resync point become gaps** and are counted in `gaps`/`gap_bytes`, as nothing can fill them anymore (their sequence numbers map elsewhere). +5. **The resync's gap counts only in `resyncs`**, not in `gaps`/`gap_bytes` (Q4). Resyncs without bytes between them leave one `Gap { len: None }` but count each, unless the reader stepped over the first gap. +6. **After a resync, bytes and FINs before the resync point are ignored without counting**, and are not compared for conflicts. ACKs before it don't count either; this only matters after R3/R4, since a confirming ACK ACKs everything before the jump. +7. **The segment that becomes the new start doesn't count as out-of-window** (its bytes are stored); candidates do. +8. **An ACK that arrived first counts after the new start's bytes**, like the confirming ACK (it ACKs everything before the jump). +9. **FIN without bytes after the window:** it is the candidate's FIN if it starts at the candidate's end. Otherwise it is only counted: it neither counts towards R3 nor clears the candidate. +10. **R3:** other bytes reset the count, `Some(0)` works like `Some(1)`, and the n-th segment becomes the new start with its bytes stored. +11. **`force_resync()`:** the next segment with bytes that isn't a SYN becomes the new start, wherever it lies (in the window, a retransmission, before offset 0). It does nothing before the stream started or after its FIN. While pending, it ends prepending. A keep-alive's filler byte would become data. +12. **`discard_until(offset)` / `discard_all()` keep a resync's gap at `offset`**; discarding past it removes it. +13. **A late SYN after its stream resynced doesn't make the window scale known**, as its ISN no longer lies before the stream's first byte; the fallback window applies. +14. **No resync once the FIN is known**, also not for a candidate recorded before the FIN. +15. **SYNs are never candidates or new starts** (reconnects are C2, ticket 10). + +Equivalent mutant: +- Sorting the gaps by start only instead of `(start, end)` in `give_up_holes_before`. Holes are given up from the front and always pushed after the existing gaps, so the sort never reorders anything. The key keeps the order right for any sort algorithm. + +Known limits (documentation for ticket 16): +- A jump to a new ISN that maps behind the stream (half of all ISN changes) isn't detected; `force_resync()` recovers it. Streams past 2 GiB can't even tell such a jump from consumed bytes. +- With the ACK after the data, all out-of-window data before the first confirming ACK is lost, up to about one window. +- Spoofed ACKs plus data after the window can force a resync (ADR-0002). +- A FIN without bytes after the window and without a candidate before it is lost. + +**2026-10-11 — user decisions on the points above.** The user went through all 15 implementation decisions as illustrated questions, and confirmed every one as implemented: +- Decision 2 was discussed first. The user leaned towards the largest advertised window for "within one window", and asked for pros and cons: + - pro: busy receivers that advertise window 0 still confirm a jump, as K2 argues; + - con: the range never shrinks again, so stray or forged ACKs confirm junk more easily, and a false resync makes the real bytes be ignored; + - con: R3 lets unrelated segments agree. + + The user then kept the last window. +- spec.md now records all of them in R1–R4, A3 and the API (`discard_until`). + +Side finding of that discussion, left as it is (known limit for ticket 16): S4 and K1 judge data and ACKs with the receiver's last window. A receiver that shrinks its window's right edge, which RFC 9293 discourages, can make data that was sent into the earlier, larger window count as out-of-window. Such data can then even become a resync candidate. diff --git a/.scratch/tcp-reassembler/issues/09-connection-resets.md b/.scratch/tcp-reassembler/issues/09-connection-resets.md new file mode 100644 index 00000000..bacec2e0 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/09-connection-resets.md @@ -0,0 +1,86 @@ +# 09: Connection resets + +Parent: ../spec.md + +**What to build:** +- An RST whose sequence number lies within one window of the sender stream's highest offset ends the connection. So does an RST from a direction never seen. +- The connection is handed over in `ended` with `Reset { by }`. Its remaining holes become gaps, so every buffered byte can still be read, and reading then returns `End(Reset)`. +- A tombstone absorbs late segments. +- Out-of-window RSTs are ignored. + +Rules: F4, F5, F6 (`End(Reset)`), P3. + +**Blocked by:** 02, 04, 05 + +**Status:** ready-for-agent + +- [x] An in-window RST hands the connection over as `Reset { by }`; leftover bytes and gaps are readable, followed by `End(Reset)` +- [x] Regression test (old branch): an injected out-of-window RST is ignored and the connection stays open +- [x] An RST from a direction never seen is accepted +- [x] Late segments after a reset are ignored with `AfterEnd` +- [x] The reference model is extended with RSTs, both real and injected +- [x] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 02:** a connection ends by setting `TcpConnection::end` in `add_segment`. The pool hands over every connection whose `end()` is set, through `hand_over()`, which leaves the tombstone. `TcpStreamEnd` and `TcpConnectionEnd` only have `Fin` and `Finished` so far. For `End(Reset)`, the streams also need to know how the connection ended. + +**2026-10-11 — carry-over from ticket 05:** for F5 (all holes become gaps), use `TcpStream::give_up_holes_before(highest_offset)`. It counts the gaps and keeps them sorted. Reading then returns `Gap { len: Some(n) }` at each of them, and `consume_gap()` steps over it. + +**2026-10-11 — carry-over from ticket 06:** +- F5 can use `TcpStream::give_up_all_holes()`, which the `Finished` end already calls. +- The keep-alive filter test in `TcpStream::holes()` feeds a 1-byte segment with the RST flag and expects it to fill the hole, because RSTs are not handled yet. Adapt it once an in-window RST ends the connection. + +**2026-10-11 — carry-over from ticket 07:** +- F4 accepts an RST "if that stream has never been seen". A stream can now have been seen (pure ACKs) without a start (`start_seq` is `None`). Decide which one F4 means. +- The `read_received` test block "other segments at the position of a keep-alive" pins that a 1-byte segment with RST starts a stream with its byte as data. Adapt it when RSTs end connections. +- RSTs of unknown keys start no connection, also with bytes or a SYN (`process_segment` test). + +**2026-10-11 — carry-over from ticket 08:** +- RSTs are still handled like other segments, so an RST with bytes after the window can become a resync candidate or a new start, and an RST with bytes in the window clears the candidate. F4 should keep RSTs out of the resync rules (`TcpStream::add_segment`, the block before the S4 count). +- After a resync, the sender stream's sequence numbers map relative to the new start (`start_seq`), so an RST from before the jump maps far away and is ignored as out-of-window; that is presumably right. +- F5 (`give_up_all_holes`) keeps the resync's gap, an empty range in `TcpStream::gaps`, so reads show `Gap { len: None }` before `End(Reset)`. + +**2026-10-11 — user decisions (asked before implementing):** +1. **Which RSTs are in the window:** from the seen ACK of the sender's stream up to one window after the bytes it is known to have sent (highest offset, plus 1 once the FIN is known), with the receiver's last window (S3). These are exactly the RSTs the receiver can accept (RFC 9293: RCV.NXT ≤ seq ≤ RCV.NXT + RCV.WND, where RCV.NXT lies between the receiver's ACK and the bytes sent). It works with a window of 0: Linux then sends its RST at SND.UNA, which is the receiver's ACK. Rejected: the highest offset ± one window, the literal F4. It accepts RSTs before the receiver's ACK, which the receiver rejects, and with a window of 0 it ignores an RST at SND.UNA or at the ACK of the FIN. Also rejected: the union of both ranges. +2. **"Never seen" means no reference point:** a stream without a start is checked against the last ACK the other side sent for it (the pending ACK), from that ACK up to one window after it. Only without a start and without such an ACK is any RST accepted, e.g. SYN → RST/ACK on a closed port. Rejected: any RST on a stream without a start (a pickup whose client only ACKs could be reset by a blind RST), and "no packet from that direction". +3. **Ignored RSTs count in `out_of_window_segments`** of the sender's stream, like injected FINs and data after the window. +4. **End reason after a reset:** `End(Fin)` once the read position reaches the FIN, otherwise `End(Reset)`, also when `read_acked()` stops before un-ACKed bytes (F6). Streams without a FIN end with `End(Reset)`. Rejected: always `End(Reset)`, and `End(Fin)` whenever the FIN was seen. + +spec.md F4 and F6 are updated. + +**2026-10-11 — user decisions after the review (asked before fixing):** +5. **No ACK blocks an RST at or after the received bytes:** the lower bound is min(seen ACK, end of the received bytes). The spec review found that one forged in-window ACK otherwise keeps every real RST below it from counting, for good. After a FIN that cut the forged ACK's hole, with a window of 0, no RST could count at all. F1 prevents the same for FINs. Rejected: the seen ACK as decided in 1. +6. **An ACK that a pickup keeps before offset 0 counts** as the receiver's ACK, so an RST at it resets the connection (e.g. Linux sends its RST at SND.UNA with a window of 0). Rejected: offset 0 as the floor. +7. **After a resync, RSTs before the resync point are ignored** and counted, as R2 ignores bytes, FINs and ACKs there. This holds also after R3/R4, where no ACK raised the seen ACK to the resync point. Rejected: accepting them from the seen ACK on. +8. **An RST stores nothing but the reset:** its bytes are diagnostic (RFC 9293 3.5.3, RFC 1122 4.2.2.12) and its SYN and FIN flags are ignored, so the stream ends with `End(Reset)`. Rejected: storing its bytes and FIN first. +9. **An RST's ACK counts only if the RST is accepted.** An ignored RST is dropped with its ACK and its window (RSTs often carry a window of 0). Rejected: never, and always. +10. **Reset wins over Finished:** an RST whose ACK ACKs the last FIN ends the connection as `Reset { by }`. Both streams are still read to `End(Fin)`. +11. **Ignored RSTs count as packets** for `last_seen` (P7) and `ack_reorder_tolerance` (K4(b)), like out-of-window data. + +spec.md F4 is updated. + +**2026-10-11 — implemented** (commits `b0e95f4`, `af7de5a`, `4afb99d`): +- `b0e95f4` (refactor): `TcpConnection::add_segment` applies a segment's ACK (`add_ack`) and the rest of it (`add_data_segment`) in their own functions. +- `af7de5a`: F4–F6 with all decisions above. + - `TcpConnection::add_reset` checks an RST with `TcpStream::add_reset`, which counts ignored ones, then applies its ACK and sets `end`. + - Every end then goes through `TcpStream::connection_ended(TcpStreamEnd)`, which replaces `give_up_all_holes()`. It gives up all holes (F5) and stores the end that reads return away from the FIN (F6). + - New variants `TcpConnectionEnd::Reset { by }` and `TcpStreamEnd::Reset`. + - RSTs never reach `TcpStream::add_segment`, so `is_keep_alive_shaped` no longer looks at the RST flag. The two keep-alive tests lost their RST rows (carry-overs of tickets 06 and 07). +- `4afb99d`: the model ends connections by F4. The proptest `resets` adds an endpoint's RST (from the SYN on, with or without an ACK) and injected RSTs, with loss, one-direction captures and pickups. It is green at 3000 cases. + +The module is fully covered (merged view of `cargo cov`). Manual mutants of every new condition are killed by the module tests, apart from two equivalent ones: +- `TcpConnectionEnd::Finished => TcpStreamEnd::Fin` → `Reset`: a finished connection has both FINs ACKed and no holes, so reading always reaches the FIN before the stored end matters. +- The kept ACK before offset 0 was first `min`'d with the seen ACK. That `min` was equivalent, as such an ACK always maps at or before offset 0, so it was removed. + +Run against `resets` alone, the proptest misses the boundary mutants: an RST exactly one window after the bytes, the +1 after a FIN with a window of 0, an RST exactly one window after a kept ACK, and the guard that keeps `Reset` from becoming `Finished`. The unit tests in `TcpConnection::end()` pin them all. + +Standards review: +- The RFC reference lists and the changelog are ticket 16. +- The stream field `end` was renamed to `connection_end`. +- Not changed (judgement calls): the `Finished → Fin` match repeated in the model (it is the oracle), the `(sender, tcp, config)` parameters, repeated test assertion blocks, and positional tuples in the proptest. +- Glossary gap for /domain-modeling: "an RST the receiver can accept" and "injected RST" have no term in CONTEXT.md. + +Known limits (documentation for ticket 16): +- A blind RST inside the window resets the connection. RFC 5961's challenge ACK can't be observed passively. +- On a pickup without any ACK of the receiver, RSTs before the first byte captured are ignored. diff --git a/.scratch/tcp-reassembler/issues/10-reconnects.md b/.scratch/tcp-reassembler/issues/10-reconnects.md new file mode 100644 index 00000000..9a7d7e6e --- /dev/null +++ b/.scratch/tcp-reassembler/issues/10-reconnects.md @@ -0,0 +1,49 @@ +# 10: Reconnects + +Parent: ../spec.md + +**What to build:** +- A SYN on a tombstone starts a new connection with a new connection id. +- A SYN with a new ISN on an open connection is kept as pending. The connection is replaced only when a SYN-ACK ACKs the new ISN + 1: + - the old connection is handed over as `Reconnect`, with its holes turned into gaps and its reads ending in `End(Reconnect)`; + - the new connection becomes `active` with a new id. +- A retransmitted SYN with the same ISN changes nothing. +- A SYN on a mid-stream pickup follows A5 if it qualifies, and the pending-SYN rule otherwise. + +Rules: C1–C4, F5, F6 (`End(Reconnect)`). + +**Blocked by:** 02, 05, 07 + +**Status:** ready-for-agent + +- [ ] SYN on a tombstone: new connection with a new id +- [ ] Regression test (old branch): a new-ISN SYN plus the confirming SYN-ACK always hands over the old connection as `Reconnect` and starts a new id, even when the caller drained everything eagerly +- [ ] A new-ISN SYN without a SYN-ACK has no effect (a spoofed SYN can't split a live connection) +- [ ] A retransmitted SYN changes nothing; a SYN on a mid-stream pickup follows C4 +- [ ] The reference model is extended with reconnects on the same key +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 02:** every segment on a tombstone returns `AfterEnd`, SYNs included. The late-segment test in `TcpReassemblyPool::process_segment` feeds `segments[1..]`, so it doesn't pin this for the SYN. A tombstone is a `TcpConnection` with `end()` set, so C1 can replace it in place. + +**2026-10-11 — carry-over from ticket 05:** F5 for `Reconnect` works like for resets: `TcpStream::give_up_holes_before(highest_offset)` (see ticket 09). + +**2026-10-11 — carry-over from ticket 06:** +- The keep-alive filter test in `TcpStream::holes()` feeds a 1-byte segment with the SYN flag into an open connection and expects it to fill the hole. Adapt it once SYNs on open connections go through C2/C3. +- The old connection's holes become gaps through `TcpStream::give_up_all_holes()`. + +**2026-10-11 — carry-over from ticket 07:** +- C4: `TcpStream::add_segment` counts a SYN that `observe_start` refuses as out-of-window and returns early. That is where a pickup's SYN goes through C2. Counters never decrease (Q4), so decide whether such SYNs still count. +- A SYN with another ISN on a stream with an observed start is still applied as an ordinary segment (its TCP Fast Open bytes are stored at their mapped offset). C2/C3 must catch it first. +- `observe_start` returns true without a change on streams with an observed start, also for the ACK of a SYN-ACK with a new ISN, so C2's check has to come before it in `TcpConnection::add_segment`. +- A reconnect of a connection with guessed roles starts with observed roles. + +**2026-10-11 — carry-over from ticket 08:** +- After a resync, `TcpStream::start_seq` no longer belongs to the stream's ISN. C2/C3 must compare a SYN's ISN with the ISN of the observed start, not with `start_seq`, or a retransmitted SYN after a resync looks like a reconnect. A late SYN after a resync doesn't make the window scale known (test in `status()`), which C3 must keep. +- SYNs are excluded from resyncs (no candidate, no new start, no clearing), so C2 decides alone what a SYN with a new ISN does. + +**2026-10-11 — carry-over from ticket 09:** +- `TcpConnection::add_segment` ends every connection through `self.end`: after `after_packet`, `TcpStream::connection_ended(TcpStreamEnd)` gives up the holes of both streams (F5) and stores the end for reads (F6). `Reconnect` needs an arm in the `TcpConnectionEnd → TcpStreamEnd` match there. `give_up_all_holes()`, which the carry-overs of tickets 05 and 06 name, is gone. +- `Finished` is only set while `end` is `None`, so an end set during the packet wins. +- An RST with the SYN flag is handled as an RST before any SYN logic (`add_reset` vs `add_data_segment`), so C2 never sees it. diff --git a/.scratch/tcp-reassembler/issues/11-memory-limits.md b/.scratch/tcp-reassembler/issues/11-memory-limits.md new file mode 100644 index 00000000..1e0beddc --- /dev/null +++ b/.scratch/tcp-reassembler/issues/11-memory-limits.md @@ -0,0 +1,48 @@ +# 11: Memory limits + +Parent: ../spec.md + +**What to build:** Memory use stays bounded: +- Bytes beyond `max_stream_buffer` are rejected and counted as `rejected_bytes`, but the segment's position still moves the implied ACK forward, so the stream doesn't stall. +- A segment that would exceed `max_holes_per_stream` is rejected entirely. +- The optional pool-wide `max_total_buffered` rejects in the same way. +- The optional `max_connections` rejects new connections with `TooManyConnections`. Tombstones count towards it. +- Data the user hasn't consumed is never thrown away automatically. + +Rules: D4, P3 (tombstones count), Q1. + +**Blocked by:** 02, 06 + +**Status:** ready-for-agent + +- [ ] Per-stream buffer limit: rejected bytes are counted, a segment that only partly fits is tested, and the stream keeps moving +- [ ] Regression test (old branch): a flood of 1-byte holes keeps memory bounded, and segments that would create an extra hole are rejected +- [ ] `max_total_buffered` is enforced pool-wide +- [ ] `max_connections` rejects with `TooManyConnections`, and tombstones count +- [ ] Unconsumed data is never discarded by any limit +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 04:** +- ACK holes (K1) move the highest offset without allocating, but a later segment behind such a hole zero-fills the buffer up to it, up to `k × window` (about 2 GiB with window scale 14) ahead. D4's `max_stream_buffer` must bound that. A hole added by an ACK also counts towards `max_holes_per_stream`. +- The test "a segment far after the receiver's window doesn't move it" in `tcp_stream.rs` only shows "allocates nothing" implicitly. If ticket 11 or 12 adds a way to observe allocations, make it explicit. + +**2026-10-11 — carry-over from ticket 05:** +- `discard_until()` and `discard_all()` move the read position, and `max_stream_buffer` counts from it, so discarding makes room in the buffer. +- Bytes that arrive in a gap at the read position, or after they were consumed or discarded, are not stored. +- Holes created by rejected bytes must stay holes that the user can give up. + +**2026-10-11 — carry-over from the ticket-06 grilling (lazy gaps):** overdue holes are holes. They count towards `max_holes_per_stream`, and their placeholders towards `max_stream_buffer`, until the read position reaches them or the connection ends (ADR-0002 consequences). While a connection is open, gaps exist only at the read position. + +**2026-10-11 — carry-over from ticket 06 (review finding):** while a stream has holes, `TcpStream::recent_acks` keeps one entry (16 bytes) per ACK-advancing packet, for up to `ack_reorder_tolerance` packets. `max_total_buffered` doesn't count these entries. With a large tolerance (the `reordered_streams` proptest uses `u32::MAX`), forged 1-byte ACK advances grow the queue with every packet. Decide whether to count or cap it. + +**2026-10-11 — carry-over from ticket 07:** +- `TcpStream::prepend` zero-fills up to k windows (2 × the 4 MiB fallback window on a pickup, user decision on ticket 07) at the front of the buffer, and a pickup takes earlier bytes until its first read. D4's `max_stream_buffer` has to cover bytes put in front too. +- `prepend` assumes that byte 0 of a pickup was received: there is no gap at the read position, and the new hole doesn't touch a hole at the old offset 0. If D4 rejects the bytes of the segment that starts a pickup, both break. Either shift the gaps and merge the holes, or don't start a pickup with rejected bytes. +- While a pickup can still prepend, it keeps the K4(b) ACK history also without holes (memory per pickup until its first read). + +**2026-10-11 — carry-over from ticket 08:** +- A resync gives up all holes before the resync point. Once bytes arrive after it, `add_data` zero-fills the buffer from the end of the received bytes to the resync point (e.g. an ACK hole of up to k windows before the jump). `max_stream_buffer` has to bound that, as it does for other placeholders. +- Bytes that reach the stream at a resync (R3/R4, or an ACK that arrived first) are stored like any other bytes and count towards the limits. Candidates are not stored, so they need nothing. +- If D4 rejects the bytes of a segment that becomes the new start, the resync still happened (gap, counter). Decide whether that is fine or whether the resync should wait for bytes that fit. diff --git a/.scratch/tcp-reassembler/issues/12-eviction-and-recycling.md b/.scratch/tcp-reassembler/issues/12-eviction-and-recycling.md new file mode 100644 index 00000000..5eafb825 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/12-eviction-and-recycling.md @@ -0,0 +1,46 @@ +# 12: Eviction and buffer recycling + +Parent: ../spec.md + +**What to build:** Users control timeouts and buffer reuse: +- `evict_older_than(cutoff, callback)` ends connections whose last-seen time is strictly older than the cutoff. Each gets the end `Evicted` and its holes become gaps. The callback drains it before the pool recycles the buffers. +- Tombstones older than the cutoff are removed. The return value counts evicted connections, not tombstones. +- `evict_all(callback)` does the same for every connection, for flushing at the end of a capture. +- The free list keeps at most `max_pooled_buffers` buffers and shrinks them to `max_pooled_buffer_capacity`. +- `stats()`, `get_mut()` and `iter_mut()` are available. + +Rules: P5, P6, F5, F6 (`End(Evicted)`). + +**Blocked by:** 02, 05 + +**Status:** ready-for-agent + +- [ ] `evict_older_than`: strict `<`; the callback sees `End(Evicted)` and the gaps; the count excludes tombstones; old tombstones are removed +- [ ] `evict_all` flushes every connection +- [ ] A counting-allocator test: after warm-up, steady-state processing with `recycle` allocates no new buffers; the free-list count and capacity limits hold +- [ ] `stats()` reports connections, tombstones, buffered bytes, rejected connections and ignored packets exactly +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — carry-over from ticket 02:** +- The free list (`TcpReassemblyPool::free_buffers`) exists, but it is unbounded and its buffers aren't shrunk. +- Decide whether late segments refresh a tombstone's `last_seen`. They don't today. P7 says every packet updates `last_seen`, but P6 removes old tombstones. +- Tombstones are `TcpConnection`s with `end().is_some()` in the same map. `get_mut`, `iter_mut` and `stats()` must tell them apart. + +**2026-10-10 — carry-over from ticket 03:** each stream now also owns a `holes: Vec>`. `TcpStream::into_buffer` drops it instead of recycling it, so the steady-state allocation test needs it in the free list too ("buffers kept per kind"). + +**2026-10-11 — carry-over from ticket 05:** giving up the last hole can finish a stream, and with both FINs ACKed the connection too (F3). But `TcpConnection::end` is only set in `add_segment`, so the pool hands the connection over only with its next segment. In real captures that segment often never comes, and eviction then ends a connection that is in fact finished as `Evicted`. +**User decision (2026-10-11):** `evict_older_than` and `evict_all` check F3 first. A connection that is already finished ends as `Finished`, not `Evicted` (P6 in spec.md). No new pool method. + +F5 for `Evicted` uses `TcpStream::give_up_holes_before(highest_offset)` (see ticket 09). + +**2026-10-11 — carry-over from the ticket-06 grilling (lazy gaps):** when P6 checks F3 at eviction (`evict_older_than` and `evict_all`), every hole that the seen ACK covers counts as overdue, because no more packets come. Example: a connection that closed cleanly, whose last hole was covered by the ACK of a FIN with fewer than `ack_reorder_tolerance` packets after it, ends as `Finished`, not `Evicted`. As at every end, its holes become counted gaps (F5), and reads end in `End(Fin)`. Add a test for exactly this case. + +**2026-10-11 — carry-over from ticket 06:** `TcpStream::can_finish()` checks F3 for a stream: the FIN is ACKed and every hole left is overdue. Eviction needs a variant that treats every hole the seen ACK covers as overdue (the tolerance counts as elapsed). `give_up_all_holes()` then turns them into counted gaps. + +**2026-10-11 — carry-over from ticket 08:** a stream's FIN can sit at a resync point (the candidate's FIN, R2), with the resync's gap in front of it, so `can_finish()` and eviction see a finished stream behind a `Gap { len: None }`. F5 at eviction keeps that gap (it is an empty range in `TcpStream::gaps`, which `give_up_holes_before` leaves alone). + +**2026-10-11 — carry-over from ticket 09:** +- F5 at eviction is `TcpStream::connection_ended(TcpStreamEnd::Evicted)`, which replaced `give_up_all_holes()`. It also makes reads return `End(Evicted)` away from the FIN. `Evicted` needs an arm in the `TcpConnectionEnd → TcpStreamEnd` match in `TcpConnection::add_segment`, or a shared mapping. +- Ignored RSTs update `last_seen` (user decision), so injected RSTs keep a connection from being evicted, like any other packet of it. diff --git a/.scratch/tcp-reassembler/issues/13-packet-inputs.md b/.scratch/tcp-reassembler/issues/13-packet-inputs.md new file mode 100644 index 00000000..d4d34af1 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/13-packet-inputs.md @@ -0,0 +1,27 @@ +# 13: Packet inputs + +Parent: ../spec.md + +**What to build:** +- Users feed `SlicedPacket`s and `LaxSlicedPacket`s directly. The connection key is built from the VLAN IDs, the IPv4 or IPv6 addresses and ports, and the channel id. +- Non-TCP packets and IP-fragmented TCP are ignored with `NotTcp`. +- With lax input and a truncated payload, only the captured bytes are added; the rest stays a hole, and the FIN of a truncated segment is ignored. +- TCP that `IpDefragPool` put back together can be fed through `process_segment`. + +Rules: P1, P2, D6. + +**Blocked by:** 02, 03 + +**Status:** ready-for-agent + +- [ ] IPv4 and IPv6, with zero to three VLAN tags; differing VLAN IDs or channel ids keep otherwise identical connections apart +- [ ] Non-TCP and IP-fragmented packets are ignored with `NotTcp` +- [ ] Lax input with a truncated payload: the captured bytes plus a hole; the FIN on a truncated segment is ignored +- [ ] A TCP segment reassembled by `IpDefragPool` and fed through `process_segment` is reassembled correctly +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-11 — carry-over from ticket 07:** the start rules of a pickup look at `tcp.payload()`. With truncated payload (D6), a segment with 1 captured byte can look like a keep-alive, and the ignored FIN of a truncated segment must not start a stream at its FIN either. + +**2026-10-11 — carry-over from ticket 08:** with truncated payload (D6), a resync candidate's end is computed from the captured bytes (`ResyncCandidate::new(seq, data.len(), tcp.fin())` in `TcpStream::add_segment`). An ACK-confirmed resync would then continue in the middle of the truncated segment, and its FIN would count. Use the segment's real length for the candidate when it is known, and ignore the FIN of a truncated candidate as D6 does. diff --git a/.scratch/tcp-reassembler/issues/14-reference-model-chaos-test.md b/.scratch/tcp-reassembler/issues/14-reference-model-chaos-test.md new file mode 100644 index 00000000..40aaf35a --- /dev/null +++ b/.scratch/tcp-reassembler/issues/14-reference-model-chaos-test.md @@ -0,0 +1,40 @@ +# 14: Reference-model chaos test and old-branch regressions + +Parent: ../spec.md + +**What to build:** A single proptest runs whole connections through the pool with every transformation from the spec's testing decisions at once: +- random ISNs (including ISNs near 2^32), with and without the handshake; +- reordering, duplication, and drops (with and without a later retransmission); +- corrupted retransmissions, and reordering of the two directions against each other; +- keep-alives, window changes and reconnects; +- injected out-of-window segments, RSTs and FINs; +- captures with only one direction. + +The reference model's expected delivered bytes, gaps, status counters and end reasons must match. This ticket also checks that every failure mode of the old branch has a regression test. + +**Blocked by:** 06, 07, 08, 09, 10, 11, 12, 13 + +**Status:** ready-for-agent + +- [ ] The combined proptest is green with `PROPTEST_CASES=3000` and runs in under 30 s with the default case count +- [ ] Each of these failure modes of the old branch has a named regression test, whether here or in an earlier ticket: + - a stall after capture loss; + - an invisible reconnect; + - an injected FIN blocking the real one; + - an injected RST closing the connection; + - a 1-byte hole flood; + - a pure ACK creating an entry; + - a keep-alive as the first segment +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-11 — carry-over from ticket 07:** the reference model handles pickups: a base per stream, prepends, pending ACKs, guessed roles. It assumes ports that make the guess right; wrong guesses are only unit-tested. `mid_stream_pickups` shows how to start a capture at a random segment and capture lost segments later. + +**2026-10-11 — carry-over from ticket 08:** the proptest `resyncs` in `reference_model.rs` covers jumps (with and without ACKs, pickups, loss, reordering, injected segments, `resync_after_segments`, forced resyncs). The combined proptest should include jumps too. The model works on true offsets, so it can't express jumps to sequence numbers behind a stream or 2^31 away; unit tests cover these. The spec review noted that the model states the resync rules much like the code does (candidate list, clearing, kept ACK); only its offset mapping is independent of the code. + +**2026-10-11 — carry-over from ticket 09:** +- The model handles RSTs (`ModelStream::accepts_reset`, `ReferenceModel::apply`). +- The proptest `resets` shows how to place an endpoint's RST at a point in time: its sequence number and ACK come from the segments before it. +- The combined proptest should include real and injected RSTs. Random windows rarely hit the exact boundaries; the unit tests in `TcpConnection::end()` pin them. +- The regression test "an injected RST closing the connection" is in `TcpConnection::end()`. diff --git a/.scratch/tcp-reassembler/issues/15-fuzzing-and-mutation-testing.md b/.scratch/tcp-reassembler/issues/15-fuzzing-and-mutation-testing.md new file mode 100644 index 00000000..3806f069 --- /dev/null +++ b/.scratch/tcp-reassembler/issues/15-fuzzing-and-mutation-testing.md @@ -0,0 +1,19 @@ +# 15: Fuzzing and mutation testing + +Parent: ../spec.md + +**What to build:** +- A `cargo-fuzz` crate outside the workspace and outside CI. It feeds arbitrary packet sequences and config values to the pool and asserts that nothing panics and that the limits hold. +- A `cargo mutants` run on the module. Every surviving mutant is killed with a test or listed below as equivalent, with the reason. + +**Blocked by:** 14 + +**Status:** ready-for-agent + +- [ ] The fuzz target runs for at least 30 minutes without findings; every crash found along the way is fixed with a regression test +- [ ] No mutant survives without an explanation below +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Equivalent mutants + +(to be filled in) diff --git a/.scratch/tcp-reassembler/issues/16-examples-docs-changelog.md b/.scratch/tcp-reassembler/issues/16-examples-docs-changelog.md new file mode 100644 index 00000000..9a4c616a --- /dev/null +++ b/.scratch/tcp-reassembler/issues/16-examples-docs-changelog.md @@ -0,0 +1,46 @@ +# 16: Examples, docs and changelog + +Parent: ../spec.md + +**What to build:** +- A self-contained example builds a connection with `PacketBuilder` and reads it back with `read_acked`. +- A second example uses `pcap-parser` 0.17 (a dev-dependency) to read pcap and pcapng without copying packets. It prints each connection's id, roles (observed or guessed), status, end and byte counts. +- The crate docs and the README (generated from them) get a TCP reassembly section. +- RFC 9293, 7323, 5961 and 1982 are added to both reference lists. +- The changelog gets an entry under Unreleased. + +**Blocked by:** 08, 09, 10, 11, 12, 13 + +**Status:** ready-for-agent + +- [ ] Both examples build as part of `cargo test`; the pcap example gives plausible output on a real capture, and the capture is described in the PR +- [ ] The crate-docs example is a passing doc-test; the README matches the crate docs, and its docs.rs links point at the current version +- [ ] The RFC lists and the changelog are updated +- [ ] All new behaviour is tested through the pool's public API (value types directly), with every branch covered; `cargo test`, `cargo test --no-default-features` and the bare-metal no_std build pass + +## Comments + +**2026-10-10 — noted in ticket 01's review:** the crate docs (`lib.rs`: "Special attention has been paid to not use allocations or syscalls.") and `README.md` ("... except in the "defragmentation" code.") were already out of sync before this branch. Neither mentions `tcp_reassembly`, which now allocates too. `tcp_stream.rs` cites RFC 1982, and RFC 7323 is used for the window scale option. The `TcpReassemblyPool` doc example currently builds segments from `TcpHeader`s by hand. + +**2026-10-11 — carry-over from ticket 05:** the standards review noted that `give_up_hole()`, `consume_gap()`, `discard_until()` and `discard_all()` have no doc test. They are part of the user-facing reading API, so the examples should show the `Gap` / `consume_gap()` loop. + +**2026-10-11 — carry-over from ticket 07:** document for users: +- mid-stream pickups, prepending until the first read, and that `consume` after a prepend consumes nothing until the next read; +- guessed roles and their confirmation by a late handshake; +- the known limits: a keep-alive as a connection's very first packet starts the stream with its filler byte; TCP Fast Open bytes that a SYN-ACK ACKs are lost if their SYN is captured after the SYN-ACK. + +**2026-10-11 — carry-over from ticket 08:** document resyncs (`TcpStream` type docs, `TcpStreamStatus::resyncs`, `force_resync()`, `resync_after_segments`) and the known limits listed on ticket 08: +- jumps behind a stream aren't detected; +- up to about one window is lost at an ACK-confirmed resync; +- spoofed ACKs can force a resync; +- a FIN without bytes after the window without a candidate before it is lost. + +**2026-10-11 — carry-over from ticket 08 (decisions):** also document that a receiver shrinking its window's right edge (discouraged by RFC 9293) can make the last-window checks of S4 and K1 count data sent into its earlier window as out-of-window, and even make it a resync candidate. + +**2026-10-11 — carry-over from ticket 09:** document resets for users: +- which RSTs count (`TcpConnectionEnd::Reset` has a short version); +- `End(Fin)` vs `End(Reset)`, and that `read_acked` ends before bytes that were not ACKed; +- that RST bytes are ignored; +- the known limits on ticket 09 (a blind RST inside the window resets the connection). + +The code now cites RFC 9293 3.10.7.4 for the RST check, and the spec cites RFC 9293 3.5.3 and RFC 1122 4.2.2.12 for RST data. The changelog entry should name the new variants `TcpConnectionEnd::Reset` and `TcpStreamEnd::Reset`. diff --git a/.scratch/tcp-reassembler/spec.md b/.scratch/tcp-reassembler/spec.md new file mode 100644 index 00000000..9632e151 --- /dev/null +++ b/.scratch/tcp-reassembler/spec.md @@ -0,0 +1,394 @@ +# TCP reassembler + +Status: ready-for-agent + +Vocabulary: `CONTEXT.md`. Decisions with lasting impact: ADR-0001 (contiguous buffers that users pull from) and ADR-0002 (inferring the receiver's state). Terms in **bold** are defined in `CONTEXT.md`. + +## Problem Statement + +Users of etherparse who analyse captured traffic, such as protocol analysers, IDS-style monitors and forensic tools, get TCP segments one packet at a time. What they actually need is the byte **streams** of each **connection**. Today they have to build a reassembler themselves, and doing that robustly is hard: + +- Captures lose packets. +- Segments arrive out of order, duplicated, or retransmitted with different content. +- Captures start in the middle of connections. +- Sequence numbers wrap around. +- The same ports get reused by a **reconnect**. +- Only one direction may have been captured. +- Attackers can inject segments or try to exhaust memory. + +A naive reassembler either stalls forever after capture loss, silently merges a connection with its reconnect, or hands out bytes the receiver never accepted. etherparse already solves the equivalent problem for IP fragments with `IpDefragPool`, but has nothing for TCP. + +## Solution + +A new `tcp_reassembly` module, gated on the `std` feature, provides a `TcpReassemblyPool`. + +**Feeding and identifying connections** +- Users feed it every captured packet, either already sliced or as a TCP segment built from parts after IP defragmentation. +- The pool groups segments into connections by **connection key**. The key consists of the VLAN IDs, both endpoints, and an optional user-defined **channel id**. + +**Reading** +- Each connection exposes two streams, one per role (**initiator** and **responder**). +- Users pull the readable bytes of a stream as one contiguous slice. They choose per call whether they want all received bytes or only the ACKed ones. +- **Gaps** are reported explicitly so parsers can reset. +- Reading tells the user when no more bytes can come and why. + +**Robustness** +- The pool handles retransmissions, reordering, sequence-number wrap-around and **mid-stream pickup**. +- It gives up **holes** automatically when the reader reaches them, once the receiver must already have the missing bytes (**implied ACK**). Until then, late segments still fill them. +- It recovers from large sequence jumps (**resync**) and detects reconnects. +- Every stream reports how it started and ended, and whether it is **clean** or **complete**. + +**User control and lifecycle** +- Users can drop data themselves at any time. +- Ended connections are handed over as owned values; their buffers can be returned to the pool for re-use. +- Configurable limits bound memory use. +- Processing never fails and never panics on input data. + +## User Stories + +1. As a tool developer, I want to feed every captured packet into one reassembly pool, so that I get the streams of all TCP connections without managing connection state myself. +2. As a tool developer, I want to pass a `SlicedPacket` directly to the pool, so that reassembly fits into my existing parsing loop. +3. As a tool developer, I want to pass a `LaxSlicedPacket` to the pool, so that truncated or partly broken captures can still be reassembled. +4. As a tool developer, I want to pass a TCP segment built from parts (VLAN IDs, IP addresses, channel id, TCP slice), so that I can reassemble TCP that was IP-fragmented and put back together by `IpDefragPool` first. +5. As a tool developer, I want non-TCP packets and IP-fragmented TCP to be ignored with a stated reason, so that I can feed the pool every packet without filtering first. +6. As a tool developer, I want to add my own channel id to the connection key, so that identical connections from different capture interfaces or tunnels stay apart. +7. As a tool developer, I want the VLAN IDs to be part of the connection key, so that connections in different VLANs stay apart. I also want to be able to leave them out, so that captures where a device rewrites VLAN tags still pair up both directions. +8. As a tool developer, I want both directions of a connection to map to the same connection, so that I can see request and response side by side. +9. As a tool developer, I want every connection to get a unique connection id from the pool, so that the per-connection state I keep never merges a connection with its reconnect. +10. As a tool developer, I want to know which endpoint is the initiator and which is the responder, so that I can tell client data from server data. +11. As a tool developer, I want to know whether the roles were observed from the handshake or guessed from the ports, so that I know how much to trust them. +12. As a protocol parser author, I want to read the contiguous received bytes of a stream as one slice, so that my parser can work on contiguous memory without copying. +13. As a protocol parser author, I want to consume only as many bytes as my parser used, so that incomplete messages stay buffered until more data arrives. +14. As a tool developer, I want to read only the bytes the receiver has ACKed, so that I only process data the receiver actually accepted. +15. As a tool developer, I want to choose per read whether I get received or ACKed bytes, so that one pool serves both kinds of consumers. +16. As a protocol parser author, I want gaps to be reported explicitly and to have to step over them, so that my parser never joins bytes from both sides of a gap. +17. As a protocol parser author, I want to know a gap's length when it is known, and to see that it is unknown after a resync, so that I can decide whether to resynchronise my parser by length. +18. As a protocol parser author, I want reading to tell me that a stream has ended and whether it ended by FIN, reset, eviction or reconnect, so that I can tell a clean end from an abort. +19. As a protocol parser author, I want "nothing readable yet" to be clearly different from "nothing more will come", so that I know whether to wait or finish up. +20. As a tool developer, I want streams to be reconstructed from their first byte when the handshake was captured, so that I get complete application data. +21. As a tool developer, I want streams to be reconstructed when the capture starts in the middle of a connection, so that long-running connections are not lost. +22. As a tool developer, I want to know whether a stream has an observed start or is a mid-stream pickup, so that I know whether its first bytes are a message boundary. +23. As a tool developer, I want a stream to still get an observed start when the capture briefly reorders its first packets (late SYN, earlier data arriving later), as long as I haven't read from it yet, so that merged captures from two tap ports don't lose their starts. +24. As a tool developer, I want retransmitted bytes to be delivered only once, so that my output contains no duplicates. +25. As a tool developer, I want out-of-order segments to be put back in order, so that the stream is delivered as it was sent. +26. As a security monitoring developer, I want retransmissions that change not-yet-ACKed bytes to be flagged, with the first received bytes kept, so that I notice ambiguous streams that could be evasion attempts. +27. As a tool developer, I want keep-alive probes and other retransmissions of ACKed bytes to be ignored, so that idle connections don't get flagged as conflicting. +28. As a tool developer, I want sequence-number wrap-around to be handled transparently, so that very long or very fast connections are reassembled correctly. +29. As a tool developer, I want all stream positions as 64-bit offsets from the stream's first byte, so that positions never wrap and are easy to compare. +30. As a tool developer, I want holes caused by capture loss to become gaps automatically when my reader reaches them, once the receiver has ACKed past them or must have received them (implied ACK), so that streams never stall after packets were lost in the capture, while late segments still fill the holes my reader hasn't reached. +31. As a tool developer, I want a hole that an ACK covers to stay fillable for at least a configurable number of packets, so that reordering between the two directions in a merged capture doesn't create false gaps. +32. As a tool developer, I want to configure how many windows of later data make a hole permanent, or switch that rule off, so that I can tune or disable inference for my traffic. +33. As a tool developer, I want to configure the window that is assumed when the real one is unknown (mid-stream pickup, one-direction capture), so that inference still works with a size that suits my traffic. +34. As a tool developer, I want the window scale option to be honoured when the handshake was captured, so that inference uses the real receiver window. +35. As a tool developer, I want to give up the hole at the read position myself, so that I decide when waiting for a retransmission is no longer worth it. +36. As a tool developer, I want to discard all data and holes before a given offset, so that I can skip to a point I care about. +37. As a tool developer, I want to discard everything buffered and continue with the next new bytes, so that I can drop data I'm not interested in. +38. As a tool developer, I want to force a resync, so that I can recover a stream I know has jumped. +39. As a tool developer, I want a large sequence jump without a SYN to be resynced automatically once the other direction's ACKs confirm it, so that streams continue after a missed reconnect or huge capture loss. +40. As a tool developer analysing one-direction captures, I want an opt-in rule that resyncs after a number of consecutive segments agree on the new position, so that streams recover even without ACKs. +41. As a tool developer, I want a reconnect (a SYN with a new ISN on the same key) to end the old connection and start a new one with a new id, so that the two are never merged. +42. As a security monitoring developer, I want a SYN with a new ISN on an open connection to replace it only once a SYN-ACK confirms the new ISN, so that a spoofed SYN can't split a live connection. +43. As a security monitoring developer, I want RSTs to end a connection only when their sequence number lies within the window, so that blindly injected RSTs are ignored. +44. As a security monitoring developer, I want FINs outside the window to be ignored and the first plausible FIN to win, so that an injected FIN can't block or truncate the real stream. +45. As a tool developer, I want a connection to count as finished only once both FINs are ACKed, so that reading ACKed bytes never loses the last bytes of the connection. +46. As a tool developer, I want ended connections (finished, reset, replaced by a reconnect, evicted) to be handed to me as owned values, so that I can read leftover bytes at my own pace. +47. As a tool developer, I want all remaining holes of a connection that ended without finishing to become gaps, so that I can still read every buffered byte. +48. As a performance-conscious developer, I want to return an ended connection to the pool, so that its buffers are reused instead of new ones being allocated. +49. As a tool developer, I want late packets of an ended connection to be absorbed instead of starting a new mid-stream connection, so that no ghost connections appear. +50. As a tool developer, I want pure ACKs, FIN-only segments and RSTs of unknown connections not to create connections, so that stray packets don't fill the pool. +51. As a tool developer, I want to evict connections idle since before a timestamp of my choice, with a callback that lets me drain them first, so that I control timeouts with my own clock type. +52. As a tool developer, I want to evict all connections at the end of a capture with the same callback, so that I can flush everything that's left. +53. As a tool developer, I want to use my own timestamp type, so that the pool works with whatever clock or capture timestamps I have. +54. As a tool developer, I want each connection's first-seen and last-seen timestamps, so that I can report durations and pick idle connections. +55. As a tool developer, I want each stream to report counts of gaps, missing bytes, resyncs, conflicting retransmissions, rejected bytes and out-of-window segments, so that I can judge its quality. +56. As a tool developer, I want to ask whether a stream is clean (no defects so far) and whether it is complete (clean, observed start, finished), so that I can classify streams at a glance. +57. As a tool developer, I want to ask whether a stream is finished, so that I know whether bytes before its FIN can still arrive. +58. As a tool developer, I want to see a stream's current holes and its read, ACKed, highest and FIN offsets, so that I can debug or visualise reassembly. +59. As a security monitoring developer, I want per-stream limits on buffered bytes and on the number of holes, so that one hostile connection can't exhaust memory, even with 1-byte holes. +60. As a security monitoring developer, I want optional pool-wide limits on the number of connections and on total buffered bytes, so that memory stays bounded however many connections an attacker opens. +61. As a tool developer, I want bytes that don't fit a limit to be rejected and counted, with nothing I haven't consumed thrown away automatically, so that data loss is always visible and under my control. +62. As an operator, I want pool statistics (connections, tombstones, buffered bytes, rejected connections, ignored packets), so that I can monitor the reassembler. +63. As a performance-conscious developer, I want steady-state processing with recycled connections to allocate no new buffers, so that throughput stays predictable. +64. As a tool developer, I want processing to never return an error and never panic on input data, so that hostile or broken traffic can't crash my tool. +65. As a security monitoring developer, I want the connection table to resist attacker-chosen keys, so that hash flooding can't degrade performance. +66. As a no_std user of etherparse, I want the reassembler to be gated on the `std` feature, so that my builds are not affected. +67. As an etherparse user, I want the reassembler to add no runtime dependencies, so that my dependency tree doesn't grow. +68. As a new user, I want a self-contained example that builds a connection and reads it back, so that I can learn the API quickly. +69. As a tool developer, I want an example that reassembles a real pcap or pcapng file and prints each connection's roles, status, end and byte counts, so that I can try the reassembler on my own captures. +70. As an etherparse maintainer, I want the reassembler to be checked against a reference model, mutation testing and fuzzing, so that its correctness doesn't depend on hand-picked cases. +71. As an etherparse maintainer, I want the crate docs, README, changelog and RFC reference lists updated, so that the feature is discoverable and its standards are traceable. + +## Implementation Decisions + +### Scope and constraints + +- A new public module `tcp_reassembly`, gated on `std` in the same way as `defrag`. The `AGENTS.md` rule "no allocations outside `defrag`" is extended to name it. +- No new `[dependencies]`. Dev-dependencies for examples and test frameworks are fine. +- MSRV stays 1.83. It may be raised to a release that is at least a year old (up to 1.90 as of 2026-10) when that simplifies the code noticeably, e.g. `HashMap::get_disjoint_mut` (1.86) or `HashMap::extract_if` (1.88). A raise is its own commit and updates `rust-version` in both crates. +- Processing is infallible: it returns no `Result`. Library code never panics on input data. +- The code is written from scratch. The old `tcp-reassembly` branch is only a source of failure modes (see Testing Decisions). +- The repo's coding style applies: one public type per file, `false == x`, its rules for derives and docs, and one test function per method. + +### Architecture + +- **One pool entry per connection.** It holds both streams, so the ACKs and window from one direction update the other stream with a single lookup. +- **Contiguous buffers that users pull from** (ADR-0001). Each stream keeps one contiguous buffer, and users read it as a slice and then consume it. Buffers come from the pool's free list and go back to it. +- **Inferred receiver state** (ADR-0002). Holes become **overdue** by implied ACK and by ACK coverage, and become gaps once the reader reaches them. A large jump is followed by a resync once ACKs confirm it. +- **Ended connections are handed to the user as owned values.** The pool keeps a **tombstone** for the key, without buffers, so late segments are absorbed. A reconnect SYN or eviction removes the tombstone. +- **Unique connection ids.** The pool numbers connections in creation order, so a connection and its reconnect never share an id. +- **The connection table uses std's `RandomState` hasher**, because the keys are attacker-controlled. + +### Public API + +The generic parameters are named `Timestamp` and `CustomChannelId`, as in `IpDefragPool`. Both default to `()`. + +**`TcpReassemblyPool`** +- `new(config)` and `Default`. `config()` returns the configuration. +- `process_sliced_packet(packet, timestamp, channel_id)`, `process_lax_sliced_packet(packet, timestamp, channel_id)` and `process_segment(segment, timestamp)` all return `TcpProcessed`. +- `get_mut(key)` and `iter_mut()`. +- `evict_older_than(cutoff, callback)` (requires `Timestamp: PartialOrd`) and `evict_all(callback)` both return the number of evicted connections. The callback gets `&mut TcpConnection` before the pool recycles the buffers. +- `recycle(connection)` returns an ended connection's buffers to the pool. +- `stats()` returns `TcpPoolStats`. + +**Processing results** +- `TcpProcessed` has three public fields: + - `active`: the connection the segment was applied to, plus the role of its sender; + - `ended`: an owned connection ended by this packet; + - `ignored`: a `TcpIgnoreReason`, set when the packet was applied to no connection. +- `TcpIgnoreReason` is one of `NotTcp`, `NoConnection`, `AfterEnd` or `TooManyConnections`. +- `TcpPoolStats` contains connections, tombstones, buffered bytes, rejected connections and ignored packets. + +**Inputs and identity** +- `TcpSegment` has the fields VLAN IDs (up to 3), source and destination `IpAddr`, channel id, and the `TcpSlice`. +- `TcpConnectionKey` has the fields VLAN IDs, `[SocketAddr; 2]` sorted lower first, and channel id. Its `new` constructor sorts the endpoints. +- `TcpConnectionId` is a value newtype over `u64`. +- `TcpRole` is `Initiator | Responder`, with `other()`. + +**`TcpConnection`** +- `id()` and `key()`. +- `endpoint(role)` and `roles_guessed()`. +- `stream(role)` and `stream_mut(role)`. +- `first_seen()` and `last_seen()`. +- `end()` returns an `Option`, where `TcpConnectionEnd` is `Finished | Reset { by: TcpRole } | Evicted | Reconnect`. + +**`TcpStream`** +- Reading: + - `read_received()` and `read_acked()` return `TcpRead`. Both return a gap at the read position, whatever the ACKed offset (user decision, 2026-10-11). + - `consume(len)` is clamped to the bytes the last read returned. + - `consume_gap()` does nothing unless the read position is at a gap. +- Dropping data: `give_up_hole()` returns a `bool`, plus `discard_until(offset)`, `discard_all()` and `force_resync()`. `discard_until` treats offsets after the highest offset as the highest offset, so it never discards bytes that haven't arrived yet; `discard_all()` equals `discard_until(highest offset)` (user decision, 2026-10-11). The gap of a resync at the offset stays, as it belongs to the bytes from the offset on; discarding past it removes it (user decision, 2026-10-11). +- Positions: `read_offset()`, `acked_offset()`, `highest_offset()` and `fin_offset()`, plus `holes()`, an iterator of offset ranges. `holes()` lists overdue holes too, as late segments can still fill them; it doesn't mark them (user decision, 2026-10-11). +- Classification: `status()`, `is_finished()`, `is_clean()` and `is_complete()`. `is_finished()` follows F2, so an overdue hole before the FIN keeps it and `is_complete()` false. + +**Reading and status types** +- `TcpRead` has four variants: + - `Data(&[u8])`; + - `Gap { len: Option }`, where `len` is `None` after a resync; + - `Pending`; + - `End(TcpStreamEnd)`, where `TcpStreamEnd` is `Fin | Reset | Evicted | Reconnect`. +- `TcpStreamStatus` is not `Copy`, because it is larger than the 128 bits the coding style allows for `Copy`. `status()` returns a reference. It contains: + - `start` (`TcpStreamStart`: `Observed | MidStreamPickup`). A stream without a start yet reports `MidStreamPickup`, so the value only ever changes to `Observed` (user decision, 2026-10-11); + - `gaps` and `gap_bytes`; + - `resyncs`; + - `conflicting_retransmissions`, counting segments; + - `rejected_bytes`; + - `out_of_window_segments`. + +**Derives** +- Value enums and newtypes: `Copy, Clone, Debug, Eq, PartialEq, Hash`, plus `Ord` where meaningful. +- `TcpConnection` and `TcpStream` own buffers and derive `Clone, Debug`. + +### Configuration (`TcpReassemblyConfig`, with these defaults) + +| Field | Default | Meaning | +|---|---|---| +| `max_stream_buffer` | 8 MiB | per stream, from the read position to the furthest buffered byte | +| `max_holes_per_stream` | 256 | | +| `hole_give_up_window_factor` | `Some(2)` | k in the implied-ACK rule; `None` switches the window rule off | +| `fallback_window` | 4 MiB | used whenever the receiver's window is unknown | +| `ack_reorder_tolerance` | 16 packets | after how many packets an ACK-covered hole becomes overdue | +| `resync_after_segments` | `None` | opt-in resync without ACK confirmation | +| `max_connections` | `None` | tombstones count towards it | +| `max_total_buffered` | `None` | pool-wide | +| `max_pooled_buffers` | 64 | buffers kept per kind in the free list | +| `max_pooled_buffer_capacity` | 64 KiB | recycled buffers are shrunk to this | + +### Behaviour rules + +The rule ids are for referencing from tickets and test names. + +**Sequence space (S)** +- **S1** Each stream maps 32-bit sequence numbers to `u64` stream offsets. Offset 0 is the first byte: ISN + 1 on an observed start, or the first byte seen on a mid-stream pickup. Offsets only grow. The highest offset moves back only when a FIN cuts a hole an ACK created (F1), and the read offset with it if the user gave up the bytes after the FIN (user decision, 2026-10-11). +- **S2** Sequence numbers are mapped with RFC 1982 serial arithmetic relative to the highest offset seen. A distance of 2^31 or more cannot be mapped and counts as out-of-window. +- **S3** The window is the receiver's last advertised window shifted by its window scale. It is used only when the scale is known (A3) and at least one packet of the receiver was seen. Otherwise `fallback_window` is used. An ACK is checked against the window the receiver advertised before the ACK's segment, because the sender could only send into that window. The window in the ACK's own segment may already have shrunk, to 0 when the receiver's buffer is full (user decision, 2026-10-11). +- **S4** Data is out-of-window if it starts beyond `max(seen ACK, highest offset) + k × window`, where k = `hole_give_up_window_factor`, or 2 when that is `None`. Such data is not stored, increments `out_of_window_segments`, and becomes a resync candidate (R1). + +**Anchoring (A)** +- **A1** A SYN gives the initiator stream an observed start. Payload in the SYN (TCP Fast Open) is data at offset 0. +- **A2** A SYN-ACK gives the responder stream an observed start. If the SYN was not seen, its ACK number also gives the initiator stream an observed start; on a mid-stream pickup it counts as the initiator's late SYN (A5) (user decision, 2026-10-11). + - Known limit: if the SYN carried TCP Fast Open bytes that the SYN-ACK ACKs, and the SYN is captured after the SYN-ACK, the initiator stream starts after these bytes and they are lost. This is documented (user decision, 2026-10-11). +- **A3** The window scale is known only if both SYN and SYN-ACK were seen. Per RFC 7323, a missing option on either side means scale 0 for both directions. Only the SYN right before the stream's first byte counts, so a SYN that arrives after its stream resynced doesn't, and the fallback window applies (user decision, 2026-10-11). +- **A4** On a mid-stream pickup, the first data segment of a stream puts offset 0 at its first byte. + - A FIN without bytes puts offset 0 at the FIN, so the stream is empty and finished, and the connection can finish. Such a stream takes nothing in front afterwards (A5), as a reader may have read its end (user decision, 2026-10-11). + - A 1-byte segment without SYN, FIN or RST that ends at the last ACK the other side sent before the stream had a start is a keep-alive and doesn't start the stream. As a connection's very first packet, the ACK is not known, so its filler byte becomes byte 0 (user decision, 2026-10-11). +- **A5** Until the read position of a mid-stream pickup first moves forward (a consume of at least 1 byte, `consume_gap`, or a discard that moves it; reads, `consume(0)` and `discard_until(0)` don't count): + - bytes that start at most k × window before offset 0 (k and window as in S4) are prepended, and the offsets shift, with the FIN, the holes, the seen and implied ACK and the ACKs of K4(b); + - a late SYN under the same conditions, or the ACK number of a late SYN-ACK (A2), upgrades the stream to observed start. + + A pickup that started at a FIN without bytes takes nothing in front (A4). After that, such bytes count as out-of-window, once per segment, and the segment's bytes from the read position on are still stored. Such a SYN counts as out-of-window and is ignored with its bytes, until C4 sends it through C2. On a stream with an observed start, bytes before offset 0 are ignored without counting, because the filler byte of a keep-alive lies there when no bytes were sent yet. A `consume(n)` after a prepend consumes nothing until the next read, because the bytes the last read returned are no longer at the read position (user decisions, 2026-10-11). +- **A6** Pure ACKs, FIN-only segments and RSTs (also with bytes or a SYN) for unknown keys never create a connection (`NoConnection`) (user decision, 2026-10-11). +- **A7** Roles: the SYN sender is the initiator and the SYN-ACK sender is the responder. Without a handshake the roles are guessed: the lower port is the responder, and on equal ports the sender of the first packet is the initiator. A late SYN or SYN-ACK that gives a stream an observed start confirms guessed roles if its sender has the role the guess gave it. One that contradicts the guess leaves the roles guessed; roles never change (user decision, 2026-10-11). + +**Data (D)** +- **D1** First wins: overlapping bytes keep the content received first. +- **D2** A retransmission whose overlapping not-yet-ACKed bytes differ increments `conflicting_retransmissions` once per segment. ACKed means a seen ACK or the implied ACK. Bytes the user already consumed are not compared, because they are no longer buffered (user decision, 2026-10-10). +- **D3** Bytes before the ACKed offset in a retransmission are ignored without comparison. This covers keep-alive probes. Missing bytes before the ACKed offset are still stored, because captures can show an ACK before the data it acknowledges. Known limit: if an ACKed segment was not captured, a keep-alive's garbage byte at seen ACK − 1 fills the last byte of its hole while that hole is not overdue yet (user decision, 2026-10-11). + - In an overdue hole (K4), a segment without SYN, FIN or RST that carries exactly 1 byte and ends at the seen ACK is ignored and touches no counter. It has the shape of a keep-alive, whose byte is filler (RFC 1122 4.2.3.6), and a receiver discards it too. Without this rule, lazy gaps would let a keep-alive put a garbage byte into the stream until the reader reaches the hole (user decision, 2026-10-11). +- **D4** Limits: + - Bytes beyond `max_stream_buffer` are rejected and counted as `rejected_bytes`. + - A segment that would exceed `max_holes_per_stream` is rejected entirely. + - `max_total_buffered` rejects in the same way pool-wide. + - A rejected segment's position still advances the highest offset, so the implied ACK keeps moving; the bytes it didn't store become a hole. +- **D5** Data beyond the FIN offset is out-of-window. +- **D6** With truncated payload (lax input or a short snapshot length), only the captured bytes are added; the rest stays a hole. The FIN flag of a truncated segment is ignored. + +**ACK and implied ACK (K)** +- **K1** A stream's seen ACK is the highest plausible ACK number seen in the other direction. + - An ACK beyond `highest offset + window` is ignored, except as resync evidence (R2). Once the FIN offset is known, the limit is one higher, so the ACK of the FIN counts even with a window of 0. The window is the one from before the ACK's segment (S3) (user decision, 2026-10-11). + - An ACK beyond the highest offset turns the uncaptured bytes up to it into a hole. + - An ACK never moves the ACKed offset past the FIN offset and never adds holes after it. + - An ACK that a stream can't apply yet, because it has no start, or because the ACK lies at or before offset 0 while bytes can still be prepended (A5), is kept and applied after every packet until it counts. The last such ACK is kept, as ACKs before a start can't be ordered, and a forged one is then replaced by the next real one (user decision, 2026-10-11). +- **K2** The implied ACK is `highest offset − k × window`, saturating at 0. It applies only while `hole_give_up_window_factor` is `Some(k)`. It is updated after every packet of the connection, and the checks inside a packet use its value from before that packet. + - The window is the largest window the receiver has advertised, as the sender can have sent bytes into a larger window before the window shrank, e.g. to 0 when the receiver's buffer is full. The fallback window applies only while no window is known (S3). With the last window, an ACK that advertises window 0 would make the hole it adds overdue at once, without waiting for `ack_reorder_tolerance` (user decision, 2026-10-11). + - The implied ACK never moves back, e.g. when the window grows: bytes sent earlier still prove what the receiver had ACKed then (user decision, 2026-10-11). +- **K3** The ACKed offset is `max(seen ACK, implied ACK)`. `read_acked()` returns contiguous bytes up to it. +- **K4** A hole is **overdue** once its end lies at or before either: + - (a) the implied ACK, or + - (b) the seen ACK as it was `ack_reorder_tolerance` packets ago. Every packet applied to the connection counts, in either direction, as for `last_seen` (P7). The packet whose ACK covers the hole doesn't count, so the hole is overdue after the N-th packet after it. The bytes of a packet are stored before the packet's overdue check, so the N-th packet still fills the hole (user decision, 2026-10-11). + + A hole is overdue as a whole, never in parts: a hole that is only partly before these offsets is not overdue. One lost range thus gives one gap (user decision, 2026-10-11). + + K4(b) also holds for a hole that a prepend (A5) adds before an ACK seen earlier, so a pickup that can still prepend keeps the ACKs of the last `ack_reorder_tolerance` packets even without holes (user decision, 2026-10-11). + + Gaps are lazy (user decision, 2026-10-11): + - an overdue hole stays a hole, and late segments still fill it, so the reassembler never drops bytes the reader hasn't reached; + - the overdue hole at the read position becomes a gap as soon as it is overdue. This is checked after every packet and after every move of the read position, so reads, `holes()`, `status()` and `consume_gap()` always agree, whether or not the user has called `read_*()`. The gap is read as `Gap` and counted; + - when a connection ends, its remaining holes become gaps (F5); + - at eviction (P6), no more packets come, so every hole that the seen ACK covers counts as overdue. + +**Resync (R)** +- **R1** Out-of-window data records the latest candidate: data after the window (S4) or at a distance that can't be mapped (S2). Bytes before offset 0 (A5) or after the FIN (D5) are no candidates. So a jump to a new ISN that maps behind the stream, half of all ISN changes, is not detected; `force_resync()` recovers such a stream (user decision, 2026-10-11). + - Any other data segment (in the window, a retransmission, before offset 0) shows that the stream didn't jump and clears the candidate. So does anything that moves the highest offset forward (bytes, an ACK, a FIN), and a resync (user decision, 2026-10-11). + - SYNs are never candidates or new starts and clear nothing: reconnects are C2's. Once the FIN is known, no resync happens, also not for a candidate recorded before the FIN, so `End(Fin)` stays final (user decisions, 2026-10-11). +- **R2** An ACK from the other direction within one window of the candidate triggers a resync. "Within one window" means at most the receiver's last window (the one S4 uses) before the candidate's first byte or after its last byte; the largest window was considered and rejected, as its range never shrinks again (user decision, 2026-10-11). The stream continues right after the candidate's bytes, mapped to the highest offset, behind a `Gap { len: None }`. The candidate's bytes are not stored (S4) and are part of that gap, so reading doesn't stall and no extra memory is needed. So is all out-of-window data before the confirming ACK, up to about one window (user decisions, 2026-10-11). A FIN in the candidate's segment, or a FIN without bytes right after it, ends the stream at the resync point. Other FINs without bytes after the window are only counted, so a stream whose jump has no bytes before its FIN doesn't finish (user decision, 2026-10-11). `resyncs` is incremented. + - An ACK beyond the window that arrives before the data counts too. The last such ACK is kept until a resync or until the stream moves forward; only another ACK beyond the window replaces it, older ACKs don't. Out-of-window data within one window of it triggers the resync at once and becomes the new start, with its bytes stored, and the kept ACK then counts like the confirming ACK below (user decisions, 2026-10-11). + - The ACK that confirms a jump counts after the resync, and it ACKs at least all bytes before the resync point: the receiver ACKed bytes after the jump, so it has the ones before it, or they belong to a connection that is over (user decision, 2026-10-11). + - At a resync, all holes before the resync point become gaps and are counted (Q4), as their sequence numbers now map elsewhere. Bytes, FINs and ACKs that map before the resync point are ignored without counting and are not compared for conflicts. The segment that becomes the new start doesn't count as out-of-window, as its bytes are stored (user decisions, 2026-10-11). + - The resync's gap counts only in `resyncs`, not in `gaps` or `gap_bytes`. Resyncs without bytes between them leave one `Gap { len: None }` but count each, unless the reader stepped over the first gap (user decisions, 2026-10-11). +- **R3** With `resync_after_segments = Some(n)`, n consecutive out-of-window segments that each lie within one window of the previous one also trigger a resync. The n-th becomes the new start, with its bytes stored. Other data segments, the stream moving forward and a resync restart the count; `Some(0)` works like `Some(1)` (user decisions, 2026-10-11). +- **R4** `force_resync()` makes the next segment with bytes, apart from a SYN, the new start, wherever it lies (in the window, a retransmission, a keep-alive), the same as R2. It does nothing before the stream started or after its FIN, and while it is pending, bytes can't be prepended (A5) (user decision, 2026-10-11). + +**FIN, RST and ends (F)** +- **F1** The first FIN within the window sets the FIN offset. Later FINs at other offsets are ignored. A FIN that lies before bytes already received is ignored. + - An ACK never blocks a FIN. A FIN inside a hole that an ACK created is accepted, cuts the hole, and moves the highest offset back to the FIN offset. It counts as ACKed if the seen ACK lies after it. Otherwise one forged ACK within the window could keep the stream from ever finishing (user decision, 2026-10-11). + - "Received" means stored: bytes that arrive after they were consumed or given up are ignored and don't count. A FIN that lies before the read position, because the user gave up or discarded bytes up to an ACK after it, is accepted and moves the read position back to it. Example: the ACK of a FIN arrives before the FIN, and the user gives up the FIN's position (user decision, 2026-10-11). +- **F2** A finished stream has its FIN seen and no holes before the FIN offset. Overdue holes count as holes, because late segments can still fill them, and because otherwise `is_complete()` would turn from true to false once the reader reaches such a hole (user decision, 2026-10-11). +- **F3** A finished connection has both FINs seen and ACKed, and every hole it has left is overdue. It ends as `Finished`, and its remaining holes become gaps (F5), so both streams are then finished (user decision, 2026-10-11). +- **F4** An RST is accepted if its sequence number lies from the seen ACK of the sender's stream up to one window after the bytes the sender is known to have sent (the highest offset, plus 1 once the FIN is known). These are the RSTs the receiver can accept: RFC 9293 accepts an RST from RCV.NXT up to RCV.NXT + RCV.WND, RCV.NXT lies between the ACK the receiver sent and the bytes sent, and a window of 0 still accepts an RST at RCV.NXT. The window is the receiver's last window (S3). An accepted RST ends the connection as `Reset { by }`. Other RSTs are ignored and counted in `out_of_window_segments`, so injected RSTs stay visible (user decisions, 2026-10-11). + - A stream without a start is checked against the last ACK the other side sent for it (A4/K1 keep it): from that ACK up to one window after it. Only a stream with neither a start nor such an ACK accepts an RST with any sequence number, e.g. the RST/ACK that answers a SYN on a closed port (user decision, 2026-10-11). + - No ACK moves the lower bound past the end of the received bytes, so an ACK never blocks an RST at or after them. Otherwise one forged ACK within the window would keep every real RST from ending the connection, as F1 prevents for FINs. An ACK that a pickup keeps before offset 0 (K1) is the receiver's ACK too and lowers the bound to it. After a resync, RSTs that map before the resync point are ignored and counted, as R2 ignores bytes, FINs and ACKs there (user decisions after the review, 2026-10-11). + - An RST carries no bytes of the stream: its bytes are diagnostic (RFC 9293 3.5.3, RFC 1122 4.2.2.12), and its SYN and FIN flags are ignored, so the stream ends with `End(Reset)`. The ACK of an accepted RST counts. An ignored RST is dropped with its ACK and window, but counts as a packet (P7, K4(b)). An RST whose ACK ACKs the last FIN ends the connection as `Reset`, not `Finished` (user decisions, 2026-10-11). +- **F5** When a connection ends, for any reason, all its holes become gaps and are counted, so its status is final when it is handed over. Late segments go to the tombstone (P3) and can't fill them anymore (user decision, 2026-10-11). +- **F6** `read_*()` returns `End(..)` once everything readable has been read and no more bytes can come. On an ended connection, `read_acked()` returns `End` even if un-ACKed bytes remain; `read_received()` still returns them. The end is `End(Fin)` when the read position is at the FIN, and the connection's end otherwise. So a stream whose FIN was seen before a reset ends with `End(Fin)` for `read_received()`, but with `End(Reset)` for a `read_acked()` that stops before un-ACKed bytes (user decision, 2026-10-11). + +**Reconnect (C)** +- **C1** A SYN on a tombstone creates a new connection right away. +- **C2** A SYN with a new ISN on an open connection is kept as pending. A SYN-ACK that ACKs the new ISN + 1 replaces the connection: the old one comes back in `ended` as `Reconnect`, and the new one is `active`. Without that SYN-ACK the pending SYN has no effect. +- **C3** A SYN with the same ISN is a retransmission and changes nothing. +- **C4** A SYN on a mid-stream pickup goes through A5 if it qualifies, and through C2 otherwise. + +**Pool (P)** +- **P1** The key comes from the packet's VLAN IDs, IP addresses and ports, plus the channel id. The endpoints are sorted. +- **P2** Non-TCP packets and IP-fragmented TCP are ignored with `NotTcp`. +- **P3** A connection that ends other than by eviction leaves a tombstone with its key, id and last-seen time. Late segments are ignored with `AfterEnd`. A SYN (C1) or eviction removes the tombstone. Tombstones count towards `max_connections`. +- **P4** Connection ids start at 0 and increase by one for each new connection. +- **P5** The free list keeps at most `max_pooled_buffers` buffers per kind. Recycled buffers are shrunk to `max_pooled_buffer_capacity`. +- **P6** `evict_older_than` ends connections with `last_seen < cutoff` as `Evicted` (F5). A connection that is already finished (F3), e.g. because the user gave up its last hole after both FINs were ACKed, ends as `Finished` instead; `evict_all` does the same (user decision, 2026-10-11). For this check, every hole that the seen ACK covers counts as overdue (K4). Otherwise a connection that closed cleanly, with fewer than `ack_reorder_tolerance` packets after the ACK that covered its last hole, would end as `Evicted` (user decision, 2026-10-11). It calls the callback and then recycles their buffers. It also removes tombstones older than the cutoff. The return value counts evicted connections only, not tombstones. +- **P7** Every processed packet of a connection updates `last_seen`. `first_seen` is the timestamp of its first packet. + +**Status (Q)** +- **Q1** `is_clean()` holds when there are no gaps, resyncs, conflicting retransmissions or rejected bytes. +- **Q2** `is_complete()` holds when the stream is clean, has an observed start, and is finished. +- **Q3** Discarding doesn't affect cleanliness, also where bytes were missing: discarded holes are not gaps. The user doesn't want these bytes, and a parser that skips data that still arrives out of order would otherwise turn a merely late segment into a gap (user decision, 2026-10-11). Holes given up with `give_up_hole()` or by K4 are gaps and do affect it. +- **Q4** Status counters never decrease. `gaps` counts every hole given up, and `gap_bytes` its bytes at that time, even if a later FIN shows that fewer bytes existed (user decision, 2026-10-11). + +### Examples and docs + +- A self-contained example builds a connection with `PacketBuilder` and reads it back with `read_acked`, in the style of the existing IP defragmentation example. +- A pcap example reads pcap and pcapng through the `pcap-parser` 0.17 dev-dependency, using its streaming reader that doesn't copy packets. It prints each connection's id, roles (observed or guessed), status, end and byte counts. +- The crate-level docs and the README (generated from them) get a TCP reassembly section. RFC 9293, RFC 7323, RFC 5961 and RFC 1982 are added to both reference lists. +- The changelog gets an entry under Unreleased. + +## Testing Decisions + +- **A good test only checks behaviour a user can observe.** It feeds segments in and checks what comes out. It never inspects internal fields or private helpers, so internals (sequence-space mapping, hole bookkeeping, buffer compaction) can be refactored without breaking tests. Results are checked with exact `assert_eq!` on values and on status counters. +- **One seam: the pool's public API.** + - Every behaviour test drives `process_segment`, `process_sliced_packet` or `process_lax_sliced_packet`. + - It observes `TcpProcessed`, `TcpConnection`, `TcpStream` (reads, offsets, holes, status, end), `stats()` and the eviction callbacks. + - Pure value types (key sorting, config defaults, derived traits) are tested directly, because they are public API in their own right and not an extra seam. +- **Per-method tests follow the coding style.** Each public method has one test function in its type's file, covering every branch in commented blocks. These functions set up their state through the pool. +- **A test-only connection script builder** describes both directions as steps (e.g. "initiator sends N bytes at ISN+1", "responder ACKs", "drop", "reorder") and produces segments for the pool. Proptest strategies for the new types are added to the crate-internal generators module. +- **Prior art:** + - the `IpDefragPool` tests (a `build_packet` helper plus one test function per method that covers every branch); + - the shared `TestPacket` helper; + - the existing proptest generators; + - the proptest regression seeds, which are committed. +- **Reference-model proptests** run random byte streams in both directions through the pool. Each case uses random ISNs (including near 2^32) and either includes or skips the handshake. The stream is cut into segments, and then: + - segments are reordered within a bounded distance, duplicated, or dropped (with and without a later retransmission); + - retransmissions are corrupted; + - the two directions are reordered against each other; + - keep-alives, window changes and reconnects are added; + - out-of-window segments, RSTs and FINs are injected; + - some captures are one-direction only. + + A simple model computes the expected delivered bytes, gap positions and lengths, status counters and end reasons. The tests must stay green with `PROPTEST_CASES=3000`. +- **Each failure mode of the old branch gets an explicit regression test:** + - a stream stalls after capture loss larger than the buffer; + - a reconnect is invisible to a caller that reads eagerly; + - an injected FIN blocks the real one; + - an injected out-of-window RST closes a connection; + - 1-byte holes exhaust memory; + - a pure ACK of an unknown connection creates an entry; + - a keep-alive probe that is the first segment of a stream gets anchored as data. +- **Steady-state allocation:** after warm-up, a run with recycling allocates no new buffers. +- **Coverage:** full branch coverage per the coverage script, with every error and limit branch hit. +- **Mutation testing:** `cargo mutants` on the module, with no surviving mutant left unexplained. Equivalent mutants are listed with a reason. +- **Fuzzing:** a `cargo-fuzz` crate outside the workspace and outside CI feeds arbitrary packet sequences and config values. It asserts there are no panics and that the limits hold. +- **CI targets:** the no_std test run, the bare-metal no_std build and the big-endian cross tests keep passing. + +## Out of Scope + +- Using `TcpConnection` without the pool (a standalone constructor and `process_segment`). It can be added later without a breaking change. +- IP defragmentation inside the TCP pool. Users run `IpDefragPool` first and pass the result as a `TcpSegment`. +- Verifying TCP checksums. Checksum offloading makes them wrong in many captures, so users filter beforehand if they need this. +- Using SACK, TCP timestamps (PAWS) or MSS. Only the window scale option is used. +- Separate handling of urgent data. It stays in line with the other bytes. +- A public mapping between sequence numbers and offsets. +- A custom hasher for the connection table. +- Automatic timeouts and LRU eviction. Eviction is driven by the caller. +- Overlap policies per target OS. First wins everywhere. +- A no_std or alloc-only variant of the module. +- Application-layer parsing, and writing or generating TCP streams. + +## Further Notes + +- The spec is cut into 16 tracer-bullet tickets under `issues/`. All of them are implemented on the `tcp-reassembler` branch, which is merged into master only once every ticket is done. +- Commits are structured for review commit by commit, as the coding style requires. The history may be reordered before the PR so that it reads well. +- Choice of pcap reader: on 2026-10-10 the readers were benchmarked on an M2 Max with the page cache hot, using 1.8 GB and 6.5 GB captures in pcap and pcapng format. `pcap-parser` 0.17 reached about 10.2 GB/s (pcap) and 9.3 GB/s (pcapng). For comparison, `pcap-file` 2.0 reached about 8.0 / 7.4 GB/s, `pcap-file` 3.0-rc about 7.1 / 7.2 GB/s, and `rpcap` about 9.9 GB/s (pcap only). None of the readers allocated per packet. A pcapng packet block that carries options allocates a `Vec` in both `pcap-parser` and `pcap-file`. +- Assumptions accepted in the design session: + - the RST window check (F4) and the first FIN winning (F1); + - a SYN-ACK giving both streams an observed start (A2); + - only the window scale option being used; + - discarding present bytes not affecting cleanliness (Q3); + - tombstones counting towards `max_connections`; + - truncated payload handled per D6. diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..ed2f841a --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,80 @@ +# etherparse + +Zero-allocation `no_std` library for parsing and writing packet-based protocols (Ethernet II, VLAN, MACsec, Linux SLL, ARP, IPv4/IPv6 + extension headers, UDP, TCP, ICMPv4/v6, IGMP). Only IP defragmentation (`defrag`) and TCP reassembly (`tcp_reassembly`) allocate. + +## Commands + +Run from the workspace root. + +```sh +cargo build +cargo test # all tests (unit tests live inside src/) +cargo test --no-default-features # no_std / no-alloc build must also pass +cargo test -p etherparse udp_slice # tests whose path matches a filter +cargo test -p etherparse --lib transport::udp_slice::test::from_slice -- --exact +PROPTEST_CASES=16 cargo test # fewer proptest iterations for a faster run +``` + +CI (`.github/workflows/main.yml`) additionally checks: + +- **Big-endian / 32-bit**: `cross test --target powerpc64-unknown-linux-gnu` and `i686-unknown-linux-gnu` (`Cross.toml` passes `PROPTEST_CASES` through). Catches endianness bugs, e.g. in checksums. +- **Bare-metal no_std**: `cd etherparse/ensure_no_std && cargo build --target x86_64-unknown-none`. +- **MSRV**: `cargo check --package etherparse --all-features` on the `rust-version` from `etherparse/Cargo.toml` (currently 1.83.0). Stay within it; when a newer language/std feature is worth it, raising `rust-version` (in both crates) to a release that is at least a year old is fine. + +Coverage: `coverage/coverage.bash` (needs `llvm-tools-preview`, `cargo-binutils`, `rustfilt`, `jq`); reports land in `target/coverage/`. + +## Architecture + +The crate root (`etherparse/src/lib.rs`) is `#![no_std]`; `alloc`/`std` are opt-in features (`std` is default). `std`-only modules (`defrag`, `tcp_reassembly`, `io`, writer/`read` APIs) are gated with `#[cfg(feature = "std")]` plus `#[cfg_attr(docsrs, doc(cfg(feature = "std")))]`. + +Protocols are grouped by layer: `link/`, `net/`, `transport/`. Each layer module re-exports everything flat (`pub use link::*`), so the public API is flat at the crate root. Errors live in a parallel tree under `err/` (`err::ipv4::HeaderError`, `err::tcp::HeaderSliceError`, ...), with shared types like `LenError`, `Layer` and `LenSource`. + +Every protocol comes as a family of types, one per file: + +- `FooHeader`: owned, decoded struct; can be built, modified and written (`write`, `to_bytes`). +- `FooHeaderSlice<'a>`: zero-copy view over just the header bytes, fields decoded on access. +- `FooSlice<'a>`: zero-copy view over header + payload, validating length fields. +- `LaxFooSlice<'a>`: like `FooSlice` but tolerates truncated packets/inconsistent lengths (e.g. packets embedded in ICMP errors) and reports where the length came from via `LenSource`. + +These compose into the whole-packet entry points, which exist in strict/lax pairs and all need updating when a protocol is added or extended: + +- `SlicedPacket` / `LaxSlicedPacket`: zero-copy, layer-by-layer (`link`, `link_exts`, `net`, `transport`), driven by `sliced_packet_cursor.rs` / `lax_sliced_packet_cursor.rs`. +- `PacketHeaders` / `LaxPacketHeaders`: decode every header into owned structs. +- `PacketBuilder`: typestate builder for writing packets with correct lengths and checksums. +- Layer enums such as `LinkSlice`, `NetSlice`, `TransportSlice`, `TransportHeader`, `PayloadSlice` / `LaxPayloadSlice`. + +Value newtypes (`EtherType`, `IpNumber`, `VlanId`, `IpDscp`, ...) wrap the raw integer; well-known values are module constants (`ether_type::IPV4`, `ip_number::TCP`). Bounded newtypes are created with `try_new`. + +## Testing + +- Unit tests sit at the bottom of each source file in `#[cfg(test)] mod test { ... }` and are mostly `proptest!` property tests. Cover every error branch: coverage is tracked. +- Proptest strategies for crate-internal tests are in `etherparse/src/test_gens/mod.rs`; `etherparse_proptest_generators` is a separate published crate with strategies for downstream users. Add new strategies to `test_gens`. +- Cross-protocol tests: `etherparse/src/compositions_tests.rs`. Integration tests: `etherparse/tests/`. +- Proptest failure seeds are committed under `etherparse/proptest-regressions/`. + +## Conventions + +Follow `docs/coding-style.md` (naming across type families, `unsafe`/`SAFETY` rules, error types, docs and test structure). In short: + +- No allocations or syscalls outside `defrag` and `tcp_reassembly` (and `std`-gated reading/writing). +- Keep etherparse's `[dependencies]` minimal: implement what you need inside the crate; a new dependency is a last resort. Dev-dependencies for examples and test frameworks are fine. +- No `unwrap`/`expect`/panics on input-derived data in library code (hard rule). +- `false == value`, never `!value` (`clippy::bool_comparison` is allowed on purpose). +- Doc comments are short and written for users: description, then example, then only the details users need. +- Structure commits so a human can review a branch commit by commit: one logical change each, refactors separate from behaviour changes. Intermediate commits needn't compile; only the branch end must build and pass all tests. See "Commits" in `docs/coding-style.md`. +- Record user-facing changes under `## Unreleased` in `changelog.md`. +- `README.md` is produced from the crate-level docs in `lib.rs` via the `README.tpl` template (cargo-readme). Change both together and keep the docs.rs links on the current version. + +## Agent skills + +### Issue tracker + +Issues and specs are tracked as local markdown files under `.scratch//`. See `docs/agents/issue-tracker.md`. + +### Triage labels + +Default five-role vocabulary (`needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`), recorded as a `Status:` line in each issue file. See `docs/agents/triage-labels.md`. + +### Domain docs + +Single-context: one `CONTEXT.md` and `docs/adr/` at the repo root. See `docs/agents/domain.md`. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..078c29c4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +@AGENTS.md diff --git a/CONTEXT.md b/CONTEXT.md new file mode 100644 index 00000000..e1208313 --- /dev/null +++ b/CONTEXT.md @@ -0,0 +1,105 @@ +# etherparse + +A zero-allocation library for parsing and writing network packets, plus helpers that rebuild data spread over several packets (IP defragmentation, TCP reassembly). + +## Language + +### Packet identification + +**Channel id**: +A user-defined value that separates packets the protocol headers alone cannot tell apart (e.g. the capture interface or a tunnel). +_Avoid_: custom id, source id + +### TCP reassembly + +**Connection**: +Both directions of one TCP connection, identified by its connection key. A reconnect on the same addresses and ports is a new connection. +_Avoid_: flow, session, stream (for both directions) + +**Connection key**: +The VLAN ids, IP addresses, ports and channel id that identify a connection, the same for both directions. +_Avoid_: stream id, 4-tuple, 5-tuple + +**Connection id**: +A number, unique within a pool, that the pool assigns to each connection; a reconnect gets a different id than the connection it replaces. +_Avoid_: connection key (the header fields), generation + +**Reconnect**: +A new connection, started with a SYN, that reuses the connection key of an earlier connection. +_Avoid_: port reuse, restart + +**Ended connection**: +A connection that was reset, finished, replaced by a reconnect or evicted, and has been handed over to the user. +_Avoid_: closed connection, dead connection + +**Initiator**: +The endpoint of a connection that sent the SYN. +_Avoid_: client, originator, A + +**Responder**: +The endpoint of a connection that answered the SYN. +_Avoid_: server, B + +**Guessed roles**: +Initiator and responder assigned from the port numbers (the lower port is the responder) because the handshake was not seen; a late SYN or SYN-ACK that agrees with them confirms them. +_Avoid_: unknown roles, heuristic direction + +**Stream**: +The bytes sent in one direction of a connection; every connection has two streams. +_Avoid_: half-connection, flow, direction (for the data itself) + +**Observed start**: +A stream whose first byte is known from the handshake. +_Avoid_: handshake seen, complete start + +**Mid-stream pickup**: +A stream whose first seen segment was not its SYN, so the bytes before it are unknown. +_Avoid_: partial stream, lazy anchor + +**Retransmission**: +A segment carrying bytes of a stream that were already received. +_Avoid_: resend, duplicate + +**Conflicting retransmission**: +A retransmission of bytes that are neither ACKed nor consumed yet, whose content differs from the bytes first received for the same positions; the first received bytes are kept. Retransmissions of ACKed bytes never conflict, as the receiver ignores them too, and consumed bytes are no longer buffered to compare against. +_Avoid_: overlap conflict, corrupted retransmit + +**Hole**: +Missing bytes of a stream before the furthest byte received or ACKed; a retransmission can still fill it. +_Avoid_: gap (while the bytes may still arrive), missing segment + +**Overdue hole**: +A hole whose bytes the receiver must already have, by the implied ACK or by an ACK seen long enough ago; late segments still fill it, but it becomes a gap once the reader reaches it. +_Avoid_: stale hole, expired hole + +**Gap**: +A hole that was given up, by the user, by the reader reaching it while it was overdue, or by the connection ending; a permanent break in the delivered bytes. +_Avoid_: hole (once given up), loss, skip + +**Implied ACK**: +The position up to which the receiver must have acknowledged a stream, inferred from how far the sender has sent and the receiver's window, without that ACK being seen. +_Avoid_: virtual ack, assumed ack + +**Resync**: +Continuing a stream at a new sequence position after a large jump without a SYN, leaving a gap of unknown length. +_Avoid_: rebase, re-anchor, jump + +**Rejected bytes**: +Received bytes of a stream that were not stored because a memory limit was reached. +_Avoid_: dropped bytes, lost bytes + +**Finished stream**: +A stream whose FIN was seen and that has no holes before the FIN. +_Avoid_: closed stream, complete stream + +**Finished connection**: +A connection whose two FINs were both seen and ACKed and whose remaining holes are all overdue; ending it turns those holes into gaps, so both its streams are then finished. +_Avoid_: closed connection, completed connection + +**Clean**: +A stream that so far has no gaps, resyncs, conflicting retransmissions or rejected bytes; a mid-stream pickup can be clean. +_Avoid_: valid, intact, healthy + +**Complete**: +A clean stream with an observed start that is finished: every byte the sender sent, exactly once and unambiguously. +_Avoid_: full, whole, clean (for this stronger property) diff --git a/docs/adr/0001-tcp-reassembly-contiguous-pull-buffers.md b/docs/adr/0001-tcp-reassembly-contiguous-pull-buffers.md new file mode 100644 index 00000000..9bcdbed8 --- /dev/null +++ b/docs/adr/0001-tcp-reassembly-contiguous-pull-buffers.md @@ -0,0 +1,12 @@ +# TCP reassembly keeps each stream in one contiguous buffer that the user pulls from + +The TCP reassembly pool stores the bytes of each stream in a single contiguous buffer, recycled through the pool's free list as `IpDefragPool` does. Users read the readable bytes as one `&[u8]` and call `consume`. We chose this because protocol parsers built on top want one contiguous slice, and pull reads let the user decide when bytes are dropped and whether to read only ACKed bytes. + +## Considered Options + +- **Fixed-size pages from a central page pool** (gopacket, Suricata): pages give a natural global memory cap and avoid compaction, but every reader would get an iterator of slices and most would end up copying to get contiguous bytes. +- **Push callbacks** when bytes become readable: these keep no data after the call, which rules out user-controlled dropping and reading only ACKed bytes later. + +## Consequences + +Compacting a buffer costs a memmove, and a single stream can grow up to its per-stream limit, so memory is bounded by limits rather than by page accounting. diff --git a/docs/adr/0002-tcp-reassembly-infers-receiver-state.md b/docs/adr/0002-tcp-reassembly-infers-receiver-state.md new file mode 100644 index 00000000..3da554a0 --- /dev/null +++ b/docs/adr/0002-tcp-reassembly-infers-receiver-state.md @@ -0,0 +1,20 @@ +# TCP reassembly infers the receiver's state to give up holes and resync + +A passive capture misses packets, and a missing segment that the receiver got will never be retransmitted. So the reassembler gives up holes, and treats bytes as ACKed, based on inferred receiver state instead of waiting for a retransmission or an ACK it may never see. There are two inference rules: + +- **Implied ACK.** A sender can only send up to ack + window. Bytes seen at offset X therefore prove the receiver ACKed X − window. Holes before X − k×window become overdue. k defaults to 2 to tolerate window changes, and the window is the largest one the receiver advertised, so a window that shrinks (e.g. to 0 when its buffer is full) doesn't make holes overdue early. If the window is unknown (mid-stream pickup or one-direction capture), a configurable fallback window of 4 MiB is used. +- **Resync.** When a stream jumps far outside any plausible window without a SYN, it continues at the new position once the other direction's ACKs confirm the jump. Resyncing after N consecutive agreeing segments is opt-in, for one-direction captures. + +Without these rules, a stream stalls forever after capture loss or a missed reconnect, and reading only ACKed bytes stalls on one-direction captures. An earlier implementation hit exactly these stalls on real captures. + +Giving up is lazy. An overdue hole (by the implied ACK, or covered by a seen ACK for a configurable number of packets) stays a hole that late segments still fill. It becomes a gap only once the reader reaches it or the connection ends. A rule firing only means the bytes are unlikely to come; giving the hole up right away would drop segments that merely arrive late, e.g. in merged captures, before the reader needs them. + +## Considered Options + +- **Eager gaps**: giving a hole up as soon as a rule fires is simpler and counts gaps earlier, but drops late bytes the reader hasn't reached yet, and leaves gaps anywhere in the buffer instead of only at the read position. + +## Consequences + +If the fallback window is set too small, holes are given up whose retransmission would still have arrived. Spoofed ACKs can force a resync, which a passive observer cannot fully prevent. Both effects are visible in the stream status, so the stream is no longer clean. + +Overdue holes keep counting towards the per-stream hole limit until the reader reaches them. A keep-alive's filler byte, sent at the last ACKed byte, could land in an overdue hole the reader hasn't reached, so a 1-byte segment ending at the seen ACK is ignored there. diff --git a/docs/agents/domain.md b/docs/agents/domain.md new file mode 100644 index 00000000..59eca7ed --- /dev/null +++ b/docs/agents/domain.md @@ -0,0 +1,35 @@ +# Domain Docs + +How the engineering skills should consume this repo's domain documentation when exploring the codebase. + +## Before exploring, read these + +- **`CONTEXT.md`** at the repo root: the glossary of domain terms. +- **`docs/adr/`**: read ADRs that touch the area you're about to work in. + +If any of these files don't exist, **proceed silently**. Don't flag their absence; don't suggest creating them upfront. The `/domain-modeling` skill (reached via `/grill-with-docs` and `/improve-codebase-architecture`) creates them lazily when terms or decisions actually get resolved. + +## File structure + +This is a single-context repo: + +``` +/ +├── CONTEXT.md +├── docs/adr/ +│ └── 0001-.md +├── etherparse/ +└── etherparse_proptest_generators/ +``` + +## Use the glossary's vocabulary + +When your output names a domain concept (in an issue title, a refactor proposal, a hypothesis, a test name), use the term as defined in `CONTEXT.md`. Don't drift to synonyms the glossary explicitly avoids. + +If the concept you need isn't in the glossary yet, that's a signal: either you're inventing language the project doesn't use (reconsider) or there's a real gap (note it for `/domain-modeling`). + +## Flag ADR conflicts + +If your output contradicts an existing ADR, surface it explicitly rather than silently overriding: + +> _Contradicts ADR-0007 (event-sourced orders), but worth reopening because…_ diff --git a/docs/agents/issue-tracker.md b/docs/agents/issue-tracker.md new file mode 100644 index 00000000..0209a19a --- /dev/null +++ b/docs/agents/issue-tracker.md @@ -0,0 +1,30 @@ +# Issue tracker: Local Markdown + +Issues and specs for this repo live as markdown files in `.scratch/`. + +## Conventions + +- One feature per directory: `.scratch//` +- The spec is `.scratch//spec.md` +- Implementation issues are one file per ticket at `.scratch//issues/-.md`, numbered from `01`, never a single combined tickets file +- Triage state is recorded as a `Status:` line near the top of each issue file (see `triage-labels.md` for the role strings) +- Comments and conversation history append to the bottom of the file under a `## Comments` heading + +## When a skill says "publish to the issue tracker" + +Create a new file under `.scratch//` (creating the directory if needed). + +## When a skill says "fetch the relevant ticket" + +Read the file at the referenced path. The user will normally pass the path or the issue number directly. + +## Wayfinding operations + +Used by `/wayfinder`. The **map** is a file with one **child** file per ticket. + +- **Map**: `.scratch//map.md` (the Notes / Decisions-so-far / Fog body). +- **Child ticket**: `.scratch//issues/NN-.md`, numbered from `01`, with the question in the body. A `Type:` line records the ticket type (`research`/`prototype`/`grilling`/`task`); a `Status:` line records `claimed`/`resolved`. +- **Blocking**: a `Blocked by: NN, NN` line near the top. A ticket is unblocked when every file it lists is `resolved`. +- **Frontier**: scan `.scratch//issues/` for files that are open, unblocked, and unclaimed; first by number wins. +- **Claim**: set `Status: claimed` and save before any work. +- **Resolve**: append the answer under an `## Answer` heading, set `Status: resolved`, then append a context pointer (gist + link) to the map's Decisions-so-far in `map.md`. diff --git a/docs/agents/triage-labels.md b/docs/agents/triage-labels.md new file mode 100644 index 00000000..b716855d --- /dev/null +++ b/docs/agents/triage-labels.md @@ -0,0 +1,15 @@ +# Triage Labels + +The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker. + +| Label in mattpocock/skills | Label in our tracker | Meaning | +| -------------------------- | -------------------- | ---------------------------------------- | +| `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue | +| `needs-info` | `needs-info` | Waiting on reporter for more information | +| `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent | +| `ready-for-human` | `ready-for-human` | Requires human implementation | +| `wontfix` | `wontfix` | Will not be actioned | + +When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table. + +Edit the right-hand column to match whatever vocabulary you actually use. diff --git a/docs/coding-style.md b/docs/coding-style.md new file mode 100644 index 00000000..c18f67ba --- /dev/null +++ b/docs/coding-style.md @@ -0,0 +1,116 @@ +# Coding style + +How code is written in etherparse. These rules describe the existing code; when in doubt, copy the shape of a neighbouring type (`UdpHeader`/`UdpSlice`, `Ipv4Header`/`Ipv4HeaderSlice`, `VlanId`). + +Formatting is plain `cargo fmt` (no `rustfmt.toml`); the tree is fmt-clean, keep it that way. + +## Files & modules + +- One public type per file, file named after the type in snake case (`ipv4_header_slice.rs` → `Ipv4HeaderSlice`). +- Layer `mod.rs` files declare each file as a private `mod` followed by `pub use ::*;`. Only protocol namespaces that group many constants or sub-types are public modules (`pub mod icmpv4;`, `pub mod igmp;`, `pub mod err;`). +- Import with `use crate::*;` (plus `err::*` or a protocol namespace as needed) rather than long explicit paths. +- Use `core::` / `alloc::` paths; `std::` only inside `#[cfg(feature = "std")]` code and tests. + +## Type families + +Each protocol provides the family described in `AGENTS.md` (`FooHeader`, `FooHeaderSlice`, `FooSlice`, `LaxFooSlice`). Keep method names consistent across the family: + +| Purpose | Name | +| --- | --- | +| Constructor from bytes (checked) | `from_slice` (headers return `(Header, &rest)`) | +| Constructor that skips checks | `pub(crate) unsafe fn from_slice_unchecked` | +| Lax constructor on a strict type | `from_slice_lax` | +| Read from `std::io::Read` | `read` (std-gated) | +| Serialize | `write` (std-gated), `to_bytes` (fixed array or `ArrayVec`, no alloc) | +| Lengths | `header_len`, `header_len_u16`; constants `LEN` / `MIN_LEN` / `MAX_LEN` (+ `_U16` variants) | +| Slice accessors | `slice`, `header_slice`, `payload`, `payload_len_source` | +| Slice → owned | `to_header` | +| Checksums | `calc_checksum_*`, `with_*_checksum`, `is_checksum_valid` | + +Header-slice field getters are named after the protocol field and decode on access, e.g. `source_port()`, `ihl()`. + +Method names that are kept only for compatibility stay, but get `#[deprecated(since = "x.y.z", note = "Use `...` instead")]`. + +## Derives + +- Owned headers: `Clone, Debug, Eq, PartialEq, Hash` (plus `Default`, `Ord`/`PartialOrd` where meaningful). +- Slices: `Clone, Debug, Eq, PartialEq`. +- Types up to 64 bits (newtypes, small fixed-size structs/enums) derive `Copy`; deriving it is also fine up to 128 bits. Larger types don't. +- Value newtypes derive `Copy, Clone, Default, Debug, Eq, PartialEq, Ord, PartialOrd, Hash`. + +## Value newtypes + +Raw protocol values are wrapped in a newtype over the integer (`VlanId(u16)`, `EtherType(u16)`, `IpNumber(u8)`). + +- Open value sets (any integer valid, e.g. `EtherType`) have a `pub` field and well-known values as constants in a lowercase module (`ether_type::IPV4`, `ip_number::TCP`). +- Bit-limited values keep the field private and provide: + - `pub const MAX_U` and `ZERO` constants, + - `pub const fn try_new(value) -> Result>`, + - `pub const unsafe fn new_unchecked(value)` with a `# Safety` section and a `debug_assert!` of the invariant, + - `pub const fn value(self)`, + - `Display`, `From for uN` and `TryFrom`. +- Prefer `const fn` wherever the body allows it. + +## Zero-copy & `unsafe` + +The crate uses `unsafe` for unchecked reads once a constructor has validated the length. Rules: + +- Validate lengths once, in the constructor; accessors then use `get_unchecked`, `core::slice::from_raw_parts`, and the crate helpers `get_unchecked_be_u16` / `get_unchecked_be_u32`. +- Every `unsafe` block gets a `// SAFETY:` comment naming the check that makes it sound, e.g. "Safe as the constructor checks that the slice has at least the length of UdpHeader::LEN (8)." +- Every `unsafe fn` gets a `# Safety` doc section stating the *complete* precondition (all length requirements, including variable-length parts derived from header fields), and asserts it with `debug_assert!` where practical. +- Unchecked constructors stay `pub(crate)` unless there is a reason to expose them. +- Multi-byte fields are big endian (network byte order): use `to_be_bytes` / `from_be_bytes` or the `be` helpers, never native-endian conversions. CI runs on big-endian ppc64 to catch this. + +## Errors + +- Error types live in `err//` with a fixed vocabulary: + - `HeaderError`: problems with header contents (field-shaped enum variants carrying the offending values, e.g. `UnexpectedVersion { version_number }`). + - `HeaderSliceError { Len(LenError), Content(HeaderError) }`: decoding from a slice. + - `HeaderReadError { Io(std::io::Error), Content(HeaderError) }`: decoding from `std::io::Read` (std-gated). + - Shared: `LenError`, `ValueTooBigError` (with an `err::ValueType`), `Layer`, `LenSource`. +- Length errors fill in all `LenError` fields: `required_len`, `len`, `len_source`, `layer`, `layer_start_offset`. Errors from nested layers are shifted with `add_offset` / `add_slice_offset`. +- Every error implements `Display` and `core::error::Error`. Display messages start with the protocol context and quote values: `"IPv4 Header Error: Encountered '{version_number}' as IP version number in the IPv4 header (must be '4' in an IPv4 header)."`. +- Errors derive `Clone, Debug, Eq, PartialEq, Hash` (except ones holding `std::io::Error`, which only derive `Debug`). +- **Hard rule:** no `unwrap`, `expect`, or other panics on input-derived data in library code; return an error instead. (Tests may unwrap freely.) + +## Control-flow style + +- Comparisons put the constant first and negate explicitly: `if 4 != version_number`, `if false == fragmented` (never `!fragmented`; `clippy::bool_comparison` is allowed for this). +- Validate and return early (`return Err(...)`) at the top of constructors, then build the value once all checks pass. +- Short `// lowercase` comments mark the steps of a parser (`// check length`, `// check version`). + +## Documentation + +Keep doc comments short and sweet. Write for users of the crate, and leave out anything a user doesn't need to know (implementation details, history, internal reasoning). Comments in the code are the place for those. + +- Simple items (getters, constants, trivial constructors) get a one-line summary. +- Complicated items follow this order: + 1. a short description of what it does, + 2. an example showing how to use it (doc-test), + 3. only the details a user needs: errors returned, edge cases or fallbacks that change the result, `# Safety` for `unsafe fn`. +- Every public item has a doc comment. Field getters say which header field they read, quoted: `/// Reads the "length" field in the UDP header.` +- Protocol types with a fixed layout include an RFC-style bit diagram in a ```` ```text ```` block. Check that the type values in the diagram match the code. +- Link related items with intra-doc links (``[`crate::Ipv4Slice::from_slice`]``), and point to the strict/lax alternatives where they exist. +- Fallible or non-obvious constructors include a doc-test example; `assert_eq!` on the exact `Err(...)` value is common. +- Reference the defining standard (RFC or IEEE) on the type. Whenever an RFC/standard is implemented, or used as a reference in an implementation, add it to the reference list in both the `lib.rs` crate docs and `README.md`. + +## Tests + +- Tests live at the bottom of the file in `#[cfg(test)] mod test { use super::*; ... }`, importing `crate::test_gens::*`, `proptest::prelude::*` and `alloc::{format, vec::Vec}` as needed. +- Prefer `proptest!` tests driven by the generators in `src/test_gens/mod.rs` (`udp_any()`, `ipv4_any()`, ...); add a generator there for every new type. +- **Coverage should be as high as possible.** Every branch, especially every error path, needs a test; `coverage/coverage.bash` shows what's missing. +- Usually **one test function per method/function**, named after it (`fn from_slice`, `fn to_bytes`), which tests *all* of that method's branches. Separate cases go in `{ ... }` blocks inside that one function, each with a comment (`// normal case`, `// length too large`), and errors are checked with an exact `assert_eq!` on the expected error value. Exceptions are fine where splitting genuinely reads better. Derived traits get a `debug_clone_eq` / `derived_traits` test. +- **Composition tests** check that the whole-packet parsers and slicers handle every combination of layers. `src/compositions_tests.rs` builds packets from generated headers (link → link exts → net → transport → payload), serializes them, and checks that `SlicedPacket` and `PacketHeaders` give the same headers back. The per-parser tests in `sliced_packet.rs`, `packet_headers.rs` and their `lax_*` versions do the same through the shared `src/test_packet.rs` (`TestPacket`) helper. When you add a protocol or packet variant, add it to these composition tests as well as unit-testing its own types. +- Error types get `debug`, `clone_eq_hash`, `fmt` and `source` tests that pin the exact message strings. +- Gate tests that need `std` (`std::io::Cursor`, `Error::source`) with `#[cfg(feature = "std")]`, so `cargo test --no-default-features` still builds. + +## Commits + +Commits are made for a human reviewer who reads a branch commit by commit. Each commit should be easy to review and understand on its own. + +- **One logical change per commit.** Keep refactors, renames, moves and formatting in separate commits from behaviour changes, so the behaviour diff isn't buried. If a feature needs groundwork (a new error type, a generator, a refactor of an existing parser), commit that first. +- **Build up in an order that reads well**, e.g. value types and errors → header/slice types with their unit tests → integration into the whole-packet types (`SlicedPacket`, `PacketHeaders`, `PacketBuilder`, ...) and composition tests → changelog/README. +- **Reviewability comes before a green build at every commit.** An intermediate commit may fail to compile or fail tests if that makes the series easier for a human to review. Only the final state of the branch must build and pass everything (`cargo test` and `cargo test --no-default-features`). +- **Tests go in the same commit as the code they test.** +- **Messages:** a short imperative subject (`Add IGMP slice implementation`, `Fix bug in udp header checksum tests`), optionally prefixed with the protocol (`IGMP: ...`). Add a body when the reason isn't obvious from the diff: what was wrong or missing and why this approach was chosen. +- Before opening a PR, clean up the history (squash fixups, reorder) so it tells this story, not the order the work happened in. diff --git a/etherparse/proptest-regressions/tcp_reassembly/reference_model.txt b/etherparse/proptest-regressions/tcp_reassembly/reference_model.txt new file mode 100644 index 00000000..874bf249 --- /dev/null +++ b/etherparse/proptest-regressions/tcp_reassembly/reference_model.txt @@ -0,0 +1,49 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc 1e231ae5cad16fa5f9ef3ca094ebd59478f9fa7d1ea6b2eba039f3d2dae8d471 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84], responder_data = [20], segment_lens = [1, 805, 1, 1, 1, 1, 1, 1], resent_lens = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], directions = [false], fins = [false, false], retransmissions = [], duplicates = [], positions = [Index(0)], delays = [4, 3, 0], consume_lens = [0] +cc cf48ee2d10e41150b8acabd3b68e09f5d0add2a5fec054ab4974b12dec55d651 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [], responder_data = [], segment_lens = [1], resent_lens = [0], directions = [false], fin_data_lens = [Some(0), None], fin_order = InitiatorFirst, final_acks = [false, false], late_segments = [], consume_lens = [0] +cc a5e0868ad4cf48b4ae9678ef9425fa43cd7da5eed13ce5fcae97221881a6eb8a # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [], responder_data = [], segment_lens = [1], resent_lens = [0], directions = [false], fins = [true, false], retransmissions = [], duplicates = [], positions = [Index(0)], delays = [0], consume_lens = [0] +cc ae5c411536ac8dd79a091b27d7abb25949e565a27336f9228db10da827c969c5 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68], segment_lens = [1310], resent_lens = [0], directions = [false], fin_data_lens = [Some(0), None], fin_order = InitiatorFirst, final_acks = [false, false], late_segments = [(Responder, 1, [0], true), (Initiator, 0, [], false)], consume_lens = [0, 0, 0, 0, 0, 0, 0, 0] +cc bd4885c59c8891818f9955fe6a541b60e3bf9916f41eb42ae1663767181f682c # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198, 196, 112, 195, 175, 165, 98, 200, 68, 117, 86, 26, 151, 107, 60, 251, 226, 242, 26, 22, 54, 179, 195, 245, 44, 41, 68, 115, 227, 110, 242, 63, 229, 4, 231, 229, 98, 149, 174, 78, 114, 73, 47, 250, 253, 182, 101, 1, 48, 39, 46, 65, 45, 63, 24, 230, 180, 34, 223, 227, 151, 187, 36, 154, 159, 123, 45, 0, 195, 198, 217, 87, 181, 233, 107, 185, 203, 19, 70, 241, 158, 108, 121, 72, 102, 112, 10, 63, 248, 39, 29, 194, 173, 27, 9, 0, 136, 131, 30, 50, 77, 184, 153, 183, 35, 154, 18, 105, 202, 125, 253, 189, 216, 146, 31, 25, 145, 136, 23, 193, 203, 240, 220, 217, 37, 87, 215, 222, 111, 111, 222, 44, 62, 238, 181, 10, 1, 70, 13, 148, 31, 171, 63, 210, 95, 13, 61, 46, 224, 143, 3, 187, 82, 37, 71, 120, 228, 205, 213, 201, 138, 236, 148, 13, 239, 99, 142, 247, 217, 122, 176, 241, 11, 202, 0, 143, 111, 168, 60, 153, 203, 233, 111, 205, 60, 140, 26, 69, 197, 235, 182, 184, 235, 111, 13, 114, 62, 192, 236, 147, 16, 16, 194, 107, 110, 3, 183, 31, 201, 81, 251, 244, 36, 163, 28, 29, 125, 250, 126, 46, 218, 219, 206, 54, 93, 52, 184, 95, 165, 60, 44, 58, 133, 1, 0, 190, 14, 167, 200, 63, 202, 201, 6, 132, 220, 216, 79, 55, 46, 77, 11, 166, 115, 170, 36, 125, 51, 168, 28, 48, 85, 38, 69, 151, 182, 136, 79, 247, 88, 20, 63, 153, 65, 202, 252, 132, 73, 78, 135, 1, 129, 14, 250, 143, 30, 206, 59, 104, 85, 78, 29, 44, 51, 177, 3, 130, 237, 59, 181, 20, 172, 82, 246, 165, 45, 28, 225, 17, 43, 88, 192, 123, 254, 90, 242, 35, 19, 171, 198, 170, 94, 195, 86, 41, 160, 219, 148, 223, 8, 157, 238, 111, 77, 228, 46, 86, 195, 21, 78, 255, 126, 43, 188, 80, 213, 24, 145, 183, 37, 127, 148, 245, 215, 9, 67, 109, 185, 18, 133, 20, 255, 94, 77, 220, 172, 118, 215, 81, 66, 44, 48, 192, 184, 219, 252, 217, 136, 226, 112, 101, 225, 27, 182, 122, 53, 8, 42, 242, 250, 206, 87, 59, 66, 203, 182, 205, 241, 199, 236, 30, 108, 152, 90, 134, 44, 164, 130, 223, 5, 174, 92, 89, 126, 218, 44, 169, 194, 255, 99, 76, 55, 102, 43, 239, 27, 176, 174, 157, 145, 169, 198, 112, 227, 79, 43, 239, 20, 127, 7, 14, 10, 228, 88, 28, 254, 136, 78, 20, 141, 168, 19, 142, 115, 36, 35, 113, 97, 136, 173, 165, 64, 209, 145, 130, 92, 63, 65, 198, 57, 141, 211, 21, 192, 87, 52, 249, 15, 49, 194, 35, 24, 216, 107, 245, 70, 241, 217, 197, 9, 251, 108, 180, 162, 20, 5, 147, 19, 90, 133, 212, 17, 154, 111, 101, 121, 156, 178, 150, 88, 79, 242, 112, 209, 165, 15, 131, 91, 11, 142, 158, 173, 66, 89, 142, 213, 146, 218, 141, 248, 188, 212, 33, 255, 183, 248, 165, 207, 66, 139, 209, 54, 91, 214, 175, 40, 129, 179, 71, 25, 157, 196, 252, 120, 170, 23, 247, 102, 165, 176, 69, 204, 37, 25, 215, 122, 229, 63, 57, 159, 146, 38, 42, 72, 129, 64, 136, 175, 13, 179, 210, 118, 154, 120, 219, 193, 43, 178, 92, 33, 138, 218, 2, 166, 18, 222, 127, 232, 210, 175, 178, 244, 223, 122, 62, 214, 255, 241, 242, 195, 44, 12, 9, 221, 189, 111, 178, 66, 226, 38, 41, 219, 41, 200, 136, 83, 215, 42, 111, 98, 200, 143, 91, 113, 216, 44, 96, 160, 192, 124, 121, 1, 120, 58, 161, 48, 105, 232, 31, 223, 78, 198, 180, 144, 234, 237, 123, 144, 109, 6, 15, 216, 89, 71, 237, 165, 223, 8, 180, 162, 186, 42, 64, 52, 25, 46, 128, 11, 232, 119, 207, 217, 59, 112, 227, 15, 37, 128, 181, 76, 23, 250, 231, 187, 149, 56, 21, 87, 15, 186, 21, 23, 239, 36, 148, 89, 254, 26, 132, 243, 161, 213, 152, 159, 158, 128, 193, 215, 124, 191, 244, 11, 122, 164, 132, 194, 86, 234, 118, 33, 123, 247, 167, 56, 29, 158, 182, 12, 140, 168, 129, 80, 208, 75, 140, 128, 235, 51, 207, 8, 92, 71, 97, 187, 122, 195, 202, 91, 168, 151, 185, 105, 31, 88, 4, 69, 195, 254, 148, 218, 13, 247, 174, 232, 181, 145, 17, 49, 5, 84, 3, 235, 218, 122, 123, 166, 223, 35, 164, 28, 60, 148, 155, 100, 240, 172, 232, 211, 157, 183, 107, 248, 125, 225, 90, 13, 102, 9, 26, 73, 129, 37, 101, 254, 75, 43, 38, 162, 225, 70, 210, 151, 201, 107, 223, 209, 215, 207, 113, 149, 116, 28, 117, 48, 226, 17, 117, 190, 5, 196, 10, 226, 164, 212, 141, 104, 73, 104, 34, 11, 114, 239, 38, 20, 39, 116, 192, 218, 142, 249, 87, 174, 243, 89, 94, 45, 206, 199, 43, 166, 167, 17, 53, 253, 140, 25, 133, 100, 17, 167, 128, 9, 157, 144, 143, 17, 66, 41, 210, 224, 206, 208, 229, 231, 47, 148, 165, 221, 137, 123, 254, 92, 5, 9, 146, 126, 195, 90, 38, 90, 228, 168, 104, 37, 79, 242, 56, 162, 59, 160, 247, 249, 227, 214, 252, 96, 145, 104, 225, 42, 33, 44, 150, 13, 215, 27, 214, 84, 198, 19, 145, 75, 134, 230, 47, 113, 124, 157, 42, 123, 119, 108, 215, 117, 67, 83, 52, 202, 20, 243, 127, 50, 156, 169, 244, 122, 205, 180, 36, 207, 45, 90, 28, 178, 220, 178, 175, 70, 251, 40, 47, 247, 252, 107, 46, 2, 195, 93, 208, 191, 33, 53, 184, 210, 162, 8, 212, 76, 32, 200, 86, 55, 153, 253, 251, 5, 125, 19, 178, 35, 41, 247, 250, 76, 10, 70, 61, 207, 208, 141, 62, 128, 186, 164, 82, 158, 52, 65, 152, 152, 14, 85, 3, 84, 236, 3, 202, 226, 14, 205, 129, 55, 39, 216, 61, 218, 204, 193, 238, 168, 56, 135, 228, 35, 55, 195, 36, 41, 73, 17, 157, 3, 195, 19, 176, 227, 35, 64, 82, 40, 119, 75, 208, 212, 122, 136, 215, 195, 205, 156, 95, 243, 50, 183, 29, 63, 169, 214, 104, 49, 189, 44, 156, 206, 227, 230, 205, 227, 164, 63, 14, 96, 43, 189, 168, 107, 196, 93, 36, 224, 245, 84, 6, 88, 178, 144, 153, 12, 163, 253, 146, 39, 123, 96, 106, 12, 90, 16, 180, 44, 7, 241, 75, 83, 52, 45, 94, 128, 148, 36, 69, 165, 8, 224, 29, 33, 124, 2, 185, 81, 57, 156, 193, 125, 158, 72, 141, 95, 238, 213, 93, 228, 6, 70, 73, 14, 43, 72, 112, 198, 120, 170, 66, 177, 216, 136, 177, 78, 243, 246, 22, 128, 25, 67, 168, 119, 8, 25, 253, 188, 219, 209, 84, 61, 178, 107, 87, 74, 244, 61, 151, 141, 251, 155, 4, 150, 216, 189, 102, 32, 108, 121, 245, 23, 186, 77, 137, 43, 236, 82, 192, 32, 193, 72, 31, 66, 21, 63, 139, 202, 212, 77, 139, 177, 172, 230, 124, 175, 67, 90, 6, 209, 127, 108, 78, 180, 26, 229, 228, 28, 234, 68, 73, 132, 88, 122, 111, 137, 222, 108, 185, 84, 87, 130, 187, 133, 5, 81, 139, 3, 182, 151, 207, 82, 200, 177, 232, 11, 225, 91, 105, 254, 140, 214, 6, 7, 129, 82, 108, 83, 57, 183, 21, 158, 137, 150, 104, 92, 196, 203, 219, 183, 245, 193, 193, 44, 177, 84, 23, 201, 68, 127, 12, 57, 68, 96, 15], segment_lens = [1087, 882], resent_lens = [0], directions = [false, false, false, true, false, false, false, true, true, false], fins = [true, true], windows = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], acks = [], consume_lens = [0], acked_reads = [false] +cc b50f187078fb3e4f0f1d419ed22d2f4feed27d6725664229a1dd8527513de048 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141], segment_lens = [591, 1488, 787, 598, 78, 753, 1850, 926, 490, 264, 842, 37], directions = [true], fins = [true, false], windows = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], injected = [], consume_lens = [0], acked_reads = [false] +cc fd15aad58830666d67a616fba2e786d25ed0cf286651681a6660f3895c763fec # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198, 196, 112, 195, 175, 165, 98, 200, 68, 117, 86, 26, 151, 107, 60, 251, 226, 242, 26, 22, 54, 179, 195, 245, 44, 41, 68, 115, 227, 110, 242, 63, 229, 4, 231, 229, 98, 149, 174, 78, 114, 73, 47, 250, 253, 182, 101, 1, 48, 39, 46, 65, 45, 63, 24, 230, 180, 34, 223, 227, 151, 187, 36, 154, 159, 123, 45, 0, 195, 198, 217, 87, 181, 233, 107, 185, 203, 19, 70, 241, 158, 108, 121, 72, 102, 112, 10, 63, 248, 39, 29, 194, 173, 27, 9, 0, 136, 131, 30, 50, 77, 184, 153, 183, 35, 154, 18, 105, 202, 125, 253, 189, 216, 146, 31, 25, 145, 136, 23, 193, 203, 240, 220, 217, 37, 87, 215, 222, 111, 111, 222, 44, 62, 238, 181, 10, 1, 70, 13, 148, 31, 171, 63, 210, 95, 13, 61, 46, 224, 143, 3, 187, 82, 37, 71, 120, 228, 205, 213, 201, 138, 236, 148, 13, 239, 99, 142, 247, 217, 122, 176, 241, 11, 202, 0, 143, 111, 168, 60, 153, 203, 233, 111, 205, 60, 140, 26, 69, 197, 235, 182, 184, 235, 111, 13, 114, 62, 192, 236, 147, 16, 16, 194, 107, 110, 3, 183, 31, 201, 81, 251, 244, 36, 163, 28, 29, 125, 250, 126, 46, 218, 219, 206, 54, 93, 52, 184, 95, 165, 60, 44, 58, 133, 1, 0, 190, 14, 167, 200, 63, 202, 201, 6, 132, 220, 216, 79, 55, 46, 77, 11, 166, 115, 170, 36, 125, 51, 168, 28, 48, 85, 38, 69, 151, 182, 136, 79, 247, 88, 20, 63, 153, 65, 202, 252, 132, 73, 78, 135, 1, 129, 14, 250, 143, 30, 206, 59, 104, 85, 78, 29, 44, 51, 177, 3, 130, 237, 59, 181, 20, 172, 82, 246, 165, 45, 28, 225, 17, 43, 88, 192, 123, 254, 90, 242, 35, 19, 171, 198, 170, 94, 195, 86, 41, 160, 219, 148, 223, 8, 157, 238, 111, 77, 228, 46, 86, 195, 21, 78, 255, 126, 43, 188, 80, 213, 24, 145, 183, 37, 127, 148, 245, 215, 9, 67, 109, 185, 18, 133, 20, 255, 94, 77, 220, 172, 118, 215, 81, 66, 44, 48, 192, 184, 219, 252, 217, 136, 226, 112, 101, 225, 27, 182, 122, 53, 8, 42, 242, 250, 206, 87, 59, 66, 203, 182, 205, 241, 199, 236, 30, 108, 152, 90, 134, 44, 164, 130, 223, 5, 174, 92, 89, 126, 218, 44, 169, 194, 255, 99, 76, 55, 102, 43, 239, 27, 176, 174, 157, 145, 169, 198, 112, 227, 79, 43, 239, 20, 127, 7, 14, 10, 228, 88, 28, 254, 136, 78, 20, 141, 168, 19, 142, 115, 36, 35, 113, 97, 136, 173, 165, 64, 209, 145, 130, 92, 63, 65, 198, 57, 141, 211, 21, 192, 87, 52, 249, 15, 49, 194, 35, 24, 216, 107, 245, 70, 241, 217, 197, 9, 251, 108, 180, 162, 20, 5, 147, 19, 90, 133, 212, 17, 154, 111, 101, 121, 156, 178, 150, 88, 79, 242, 112, 209, 165, 15, 131, 91, 11, 142, 158, 173, 66, 89, 142, 213, 146, 218, 141, 248, 188, 212, 33, 255, 183, 248, 165, 207, 66, 139, 209, 54, 91, 214, 175, 40, 129, 179, 71, 25, 157, 196, 252, 120, 170, 23, 247, 102, 165, 176, 69, 204, 37, 25, 215, 122, 229, 63, 57, 159, 146, 38, 42, 72, 129, 64, 136, 175, 13, 179, 210, 118, 154, 120, 219, 193, 43, 178, 92, 33, 138, 218, 2, 166, 18, 222, 127, 232, 210, 175, 178, 244, 223, 122, 62, 214, 255, 241, 242, 195, 44, 12, 9, 221, 189, 111, 178, 66, 226, 38, 41, 219, 41, 200, 136, 83, 215, 42, 111, 98, 200, 143, 91, 113, 216, 44, 96, 160, 192, 124, 121, 1, 120, 58, 161, 48, 105, 232, 31, 223, 78, 198, 180, 144, 234, 237, 123, 144, 109, 6, 15, 216, 89, 71, 237, 165, 223, 8, 180, 162, 186, 42, 64, 52, 25, 46, 128, 11, 232, 119, 207, 217, 59, 112, 227, 15, 37, 128, 181, 76, 23, 250, 231, 187, 149, 56, 21, 87, 15, 186, 21, 23, 239, 36, 148, 89, 254, 26, 132, 243, 161, 213, 152, 159, 158, 128, 193, 215, 124, 191, 244, 11, 122, 164, 132, 194, 86, 234, 118, 33, 123, 247, 167, 56, 29, 158, 182, 12, 140, 168, 129, 80, 208, 75, 140, 128, 235, 51, 207, 8, 92, 71, 97, 187, 122, 195, 202, 91, 168, 151, 185, 105, 31, 88, 4, 69, 195, 254, 148, 218, 13, 247, 174, 232, 181, 145, 17, 49, 5, 84, 3, 235, 218, 122, 123, 166, 223, 35, 164, 28, 60, 148, 155, 100, 240, 172, 232, 211, 157, 183, 107, 248, 125, 225, 90, 13, 102, 9, 26, 73, 129, 37, 101, 254, 75, 43, 38, 162, 225, 70, 210, 151, 201, 107, 223, 209, 215, 207, 113, 149, 116, 28, 117, 48, 226, 17, 117, 190, 5, 196, 10, 226, 164, 212, 141, 104, 73, 104, 34, 11, 114, 239, 38, 20, 39, 116, 192, 218, 142, 249, 87, 174, 243, 89, 94, 45, 206, 199, 43, 166, 167, 17, 53, 253, 140, 25, 133, 100, 17, 167, 128, 9, 157, 144, 143, 17, 66, 41, 210, 224, 206, 208, 229, 231, 47, 148, 165, 221, 137, 123, 254, 92, 5, 9, 146, 126, 195, 90, 38, 90, 228, 168, 104, 37, 79, 242, 56, 162, 59, 160, 247, 249, 227, 214, 252, 96, 145, 104, 225, 42, 33, 44, 150, 13, 215, 27, 214, 84, 198, 19, 145, 75, 134, 230, 47, 113, 124, 157, 42, 123, 119, 108, 215, 117, 67, 83, 52, 202, 20, 243, 127, 50, 156, 169, 244, 122, 205, 180, 36, 207, 45, 90, 28, 178, 220, 178, 175, 70, 251, 40, 47, 247, 252, 107, 46, 2, 195, 93, 208, 191, 33, 53, 184, 210, 162, 8, 212, 76, 32, 200, 86, 55, 153, 253, 251, 5, 125, 19, 178, 35, 41, 247, 250, 76, 10, 70, 61, 207, 208, 141, 62, 128, 186, 164, 82, 158, 52, 65, 152, 152, 14, 85, 3, 84, 236, 3, 202, 226, 14, 205, 129, 55, 39, 216, 61, 218, 204, 193, 238, 168, 56, 135, 228, 35, 55, 195, 36, 41, 73, 17, 157, 3, 195, 19, 176, 227, 35, 64, 82, 40, 119, 75, 208, 212, 122, 136, 215, 195, 205, 156, 95, 243, 50, 183, 29, 63, 169, 214, 104, 49, 189, 44, 156, 206, 227, 230, 205, 227, 164, 63, 14, 96, 43, 189, 168, 107, 196, 93, 36, 224, 245, 84, 6, 88, 178, 144, 153, 12, 163, 253, 146, 39, 123, 96, 106, 12, 90, 16, 180, 44, 7, 241, 75, 83, 52, 45, 94, 128, 148, 36, 69, 165, 8, 224, 29, 33, 124, 2, 185, 81, 57, 156, 193, 125, 158, 72, 141, 95, 238, 213, 93, 228, 6, 70, 73, 14, 43, 72, 112, 198, 120, 170, 66, 177, 216, 136, 177, 78, 243, 246, 22, 128, 25, 67, 168, 119, 8, 25, 253, 188, 219, 209, 84, 61, 178, 107, 87, 74, 244, 61, 151, 141, 251, 155, 4, 150, 216, 189, 102, 32, 108, 121, 245, 23, 186, 77, 137, 43, 236, 82, 192, 32, 193, 72, 31, 66, 21, 63, 139, 202, 212, 77, 139, 177, 172, 230, 124, 175, 67, 90, 6, 209, 127, 108, 78, 180, 26, 229, 228, 28, 234, 68, 73, 132, 88, 122, 111, 137, 222, 108, 185, 84, 87, 130, 187, 133, 5, 81, 139, 3, 182, 151, 207, 82, 200, 177, 232, 11, 225, 91, 105, 254, 140, 214, 6, 7, 129, 82, 108, 83, 57, 183, 21, 158, 137, 150, 104, 92, 196, 203, 219, 183, 245, 193, 193, 44, 177, 84, 23, 201, 68, 127, 12, 57, 68, 96, 15, 218, 176, 202, 169, 208, 129, 29, 56, 246, 38, 23, 229, 250, 62, 152, 127, 239, 94, 250, 97, 203, 234, 115, 214, 57, 225, 46, 69, 13, 147, 63, 159, 126, 60, 237, 167, 77, 87, 218, 84, 90, 167, 169, 0, 128, 44, 174, 216, 218, 205, 56, 186, 70, 159, 125, 65, 175, 129, 65, 29, 145, 142, 70, 213, 167, 156, 155, 71, 113, 110, 148, 206, 98, 119, 160, 38, 116, 171, 109, 55, 34, 167, 64, 28, 234, 232, 222, 223, 223, 158, 195, 13, 105, 181, 96, 39, 82, 108, 253, 23, 5, 106, 193, 243, 136, 35, 40, 109, 242, 89, 77, 181, 55, 64, 113, 144, 237, 112, 73, 173, 124, 197, 161, 131, 108, 223, 116, 11, 187, 233, 54, 33, 96, 85, 195, 5, 74, 247, 209, 110, 101, 9, 53, 196, 137, 20, 29, 202, 48, 14, 149, 152, 33, 231, 4, 162, 145, 7, 255, 127, 77, 146, 175, 198, 18, 90, 63, 182, 14, 63, 157, 192, 217, 224, 210, 102, 93, 253, 105, 106, 53, 229, 105, 194, 199, 64, 243, 182, 248, 195, 216, 130, 238, 183, 111, 8, 127, 239, 220, 217, 231, 79, 122, 205, 143, 114, 172, 46, 194, 21, 223, 35, 78, 116, 254, 253, 2, 176, 46, 4, 74, 139, 65, 230, 225, 244, 231, 222, 145, 3, 244, 48, 233, 110, 176, 243, 97, 72, 169, 214, 225, 231, 91, 205, 128, 34, 223, 205, 216, 52, 240, 152, 95, 38, 159, 141, 234, 8, 225, 75, 59, 114, 142, 73, 91, 232, 196, 12, 93, 249, 35, 195, 52, 85, 119, 108, 163, 7, 175, 126, 13, 165, 177, 67, 209, 46, 18, 201, 103, 213, 169, 76, 35, 180, 163, 139, 201, 213, 49, 235, 48, 57, 25, 147, 4, 208, 60, 217, 23, 247, 251, 48, 189, 233, 41, 38, 19, 29, 196, 105, 227, 14, 201, 55, 152, 176, 193, 2, 206, 131, 164, 184, 9, 55, 173, 188, 22, 132, 178, 0, 172, 67, 126, 8, 98, 160, 91, 236, 125, 34, 201, 250, 224, 197, 156, 161, 231, 140, 2, 242, 147, 241, 113, 231, 9, 33, 176, 60, 159, 137, 205, 143, 94, 69, 103, 92, 136, 93, 234, 94, 32, 176, 60, 196, 161, 235, 79, 173, 28, 112, 160, 182, 219, 116, 148, 11, 170, 214, 247, 137, 78, 116, 45, 123, 26, 105, 227, 76, 20, 213, 204, 227, 50, 231, 181, 81, 62, 212, 31, 119, 126, 139, 141, 92, 252, 94, 197, 211, 75, 136, 5, 32, 175, 76, 111, 216, 8, 61, 147, 255, 87, 164, 11, 96, 117, 229, 16, 139, 155, 227, 75, 51, 63, 229, 28, 21, 61, 108, 34, 96, 105, 141, 205, 132, 30, 136, 231, 102, 142, 12, 140, 186, 10, 185, 109, 240, 93, 76, 90, 252, 144, 203, 135, 215, 100, 50, 10, 185, 199, 185, 71, 80, 79, 146, 86, 249, 53, 132, 54, 107, 235, 131, 10, 244, 235, 50, 174, 61, 120, 182, 194, 80, 34, 41, 191, 34, 79, 82, 54, 137, 205, 27, 248, 17, 135, 29, 150, 239, 229, 193, 132, 175, 49, 33, 102, 214, 205, 249, 113, 102, 60, 55, 119, 223, 177, 175, 128, 103, 40, 8, 200], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252], segment_lens = [965, 113, 498, 1481, 729, 799, 1102, 1322, 649, 846, 430, 605], directions = [true, false, true, true, true, true, true, false, true, true, false, false, false, true, true, false, true, false], fins = [true, false], windows = [671, 0, 0, 0, 0, 0, 0, 0, 0], injected = [(Initiator, Index(14630176334321368524), 0, [], true), (Initiator, Index(0), 0, [], false), (Responder, Index(0), 0, [], false), (Initiator, Index(0), 0, [], false), (Initiator, Index(0), 0, [], false), (Initiator, Index(17187282788), 6003, [59, 146, 163, 125, 155], false), (Initiator, Index(7361491397731685045), 6805, [189, 8], false), (Initiator, Index(9424207372527308579), 5865, [83, 132, 135, 147, 55], false)], consume_lens = [1163, 744, 2769, 1476], acked_reads = [true, true, false, true, true, true] +cc 7b0759fa0e79a091e03fa530d1524417f5b46163f1414bbbe90865baadaa650d # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130], segment_lens = [1, 1, 1, 1, 1, 1, 1, 2], resent_lens = [1], directions = [false, false, false, false, false, false, false, false, false, true], fins = [false, true], lost = [], acks = [(Initiator, Index(0), Index(9223372036854775808))], drops = [Some((0, Index(0)))], consume_lens = [0], acked_reads = [false] +cc 335aaaf94a64ac16b290c8c42f0230ad6d2e58143ae515d38b2baa482006e90e # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108], segment_lens = [1, 1, 1], resent_lens = [0], directions = [false], fins = [false, false], lost = [], acks = [(Initiator, Index(0), Index(8178875752116911307))], drops = [Some((2, Index(3614173995632750)))], consume_lens = [0], acked_reads = [false] +cc e5154bdb8c11d07bcc8700b4af6ed3795857d5634694feb4a5d8502b6d4b1bd2 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122], segment_lens = [30, 137, 1936, 1967, 1798, 1078, 327], resent_lens = [0, 202, 0, 0, 0, 0, 0, 0], directions = [false, true, true, false], fins = [false, false], lost = [(Index(1418980313362273202), None), (Index(7686143364045646507), None)], acks = [], drops = [None, None, None, None, None, Some((0, Index(0))), None, None, None, None], consume_lens = [0], acked_reads = [false] +cc b33cea2fd5ac49c6414d9a4ee614dd9b1b3396f09ddb8426d0d144f62b7a2353 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216], segment_lens = [181, 212], resent_lens = [0], directions = [false, false, false, false, false, false], fins = [false, false], lost = [], acks = [(Responder, Index(6917529027641081856), Index(15469083735974326643))], drops = [Some((0, Index(0))), Some((2, Index(812631897520245)))], consume_lens = [0], acked_reads = [false] +cc 5af5303febb057ef0b54940b6741f987a86ed0bdaad4b8025d5f3871dc707b4c # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36], segment_lens = [1, 83, 975], resent_lens = [0], directions = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], fins = [false, true], lost = [], acks = [(Initiator, Index(0), Index(9283687695443576558))], actions = [None, None, None, None, None, None, None, None, Some(GiveUpHole), None, None, None, None, None, None, None, None], consume_lens = [212], acked_reads = [false] +cc 7f3ff6feb2fd31a7e21f5b2812dd18fe460d86d61ce41680739f70d8315215d2 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135], segment_lens = [592, 1724, 809, 970, 258, 1, 38, 1672, 1126, 64, 162, 397], directions = [false], fins = [true, false], windows = [0, 0, 0, 0, 0, 0, 0, 1368, 0], injected = [(Initiator, Index(0), 0, [], false), (Initiator, Index(13281655733070877164), 0, [], false), (Responder, Index(12770822820260458812), 0, [], false), (Initiator, Index(12297829382473034411), 0, [], false), (Initiator, Index(11858621190241854611), 0, [0], false), (Initiator, Index(0), 0, [], false), (Initiator, Index(13718019125), 3977, [120, 34, 229, 162, 84, 15], true), (Initiator, Index(6216907252287885457), 6851, [], false), (Responder, Index(11723771090223828615), 304, [54, 130, 211], false), (Responder, Index(6765860628055317897), 6799, [93, 235, 177, 86], true), (Initiator, Index(5475576004059671338), 4655, [], false)], consume_lens = [864, 397, 447, 1438, 1828, 2992, 873, 1088, 2381, 866, 928, 1927, 2257, 1845, 777, 674, 1042, 782, 694, 2753, 1895, 870, 1435, 41, 1026, 1965, 2797, 2537, 2494], acked_reads = [false, true, false, false, true, false, true, true, false] +cc 63e3bd04a84a9f58777162c504472da1cb60ff42a7c825b2b489a7ac45fe1a26 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220], responder_data = [20], segment_lens = [1051], resent_lens = [0], directions = [false], fins = [true, true], windows = [0, 0, 0, 0, 5856, 1, 0, 0, 0, 0, 0], acks = [(Initiator, Index(4611686018427387904), Index(0)), (Initiator, Index(4340410370284600381), Index(0)), (Responder, Index(3074457345618258603), Index(0)), (Initiator, Index(970881267037344822), Index(3617)), (Initiator, Index(18227134747753672287), Index(6844247864969922550)), (Initiator, Index(13447194623966802485), Index(18036640428983426138)), (Responder, Index(6612710008870590426), Index(10291490665775165266)), (Initiator, Index(15405061126815015618), Index(12820196790691110728)), (Responder, Index(68309475343326731), Index(15976677729367727215)), (Responder, Index(17022147485362751114), Index(5243817874593166783)), (Initiator, Index(3417616306303337073), Index(2455892076196180805)), (Initiator, Index(7557480957370742418), Index(16403667570262392607)), (Initiator, Index(12755212730771318914), Index(6603140924828478217)), (Responder, Index(1303121928413680554), Index(5142294728255444122))], consume_lens = [2828, 261, 2196, 2546, 992, 2742, 937, 517, 213, 694, 1446, 2322, 2298, 1505, 2149, 1058, 2781, 2981, 2029], acked_reads = [false, false, false, true, false, true, true, false, true, true, true, true, false, true, false, true, false, false, false, true, false, true, true] +cc 041fb154a5a0904657f4ebe54b8adc700f1c544556da394c337fde5f9934aecd # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194], segment_lens = [1, 1206, 850, 1, 1266, 965, 682, 181, 1980, 1452, 1425, 837, 113, 973, 48, 1569, 1600], directions = [false, false, false, true, true, true, false, true, false, false, false, false, false, false], fins = [false, true], windows = [0, 0, 0, 0, 0, 590, 0, 0], injected = [(Initiator, Index(0), 0, [], false), (Initiator, Index(0), 0, [], false), (Initiator, Index(14899293290303868613), 0, [], false), (Initiator, Index(0), 0, [], false), (Initiator, Index(15811494920322472814), 0, [], false), (Responder, Index(13994081716075823582), 2627, [169, 71, 190, 241, 155, 71, 65], false), (Responder, Index(10470858954719966030), 6565, [200, 236, 208], false), (Responder, Index(1431717282410022229), 4291, [254], true)], consume_lens = [852, 2923, 754, 37, 1997, 380, 867, 1169, 1157, 268, 1606, 321, 917, 1718, 2615, 2915, 1893, 2568, 555, 780, 584], acked_reads = [false, false, true, false, true, false, true, true, false, false, false, true, true, true, true, true, true, true, false, true, true, true, true] +cc d59e4ac91b7fe6269de3a438e88c4eb20be0892d7cd4f7855595b3426be4ca06 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172], segment_lens = [227, 1], resent_lens = [0], directions = [false], fins = [false, false], retransmissions = [], duplicates = [Index(0), Index(0), Index(0), Index(0), Index(5916880174586082594)], positions = [Index(0), Index(0), Index(0), Index(0), Index(0), Index(1355045)], delays = [7, 3, 3, 7, 6, 1, 4, 0, 4, 7, 7, 1, 7, 5, 3, 3, 6, 5, 2, 4, 4, 6, 2, 3, 5, 5, 4, 1, 0, 4, 7, 2, 7, 7, 2, 7, 7, 6, 3, 1, 3, 2, 7, 7, 0, 5, 7, 0, 6, 6, 6, 4], consume_lens = [432, 1952, 1716, 2333, 2979, 1347, 322, 711, 2530, 242, 1083, 387, 1958, 2468, 32, 1681, 2729, 2864, 120, 410, 2114, 2773, 1358, 1584, 1501, 2466, 2879, 1093], acked_reads = [true, true, true, false, true, true, true, true, false, true, true, true, false, true, false, false, true, true, false, true, false, false, true, true, true, true] +cc 525819b457b9a1c69610b088bef9fdef5b198bbc6745646e23988723d3a7b405 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198, 196, 112, 195, 175, 165, 98, 200, 68, 117, 86, 26, 151, 107, 60, 251, 226, 242, 26, 22, 54, 179, 195, 245, 44, 41, 68, 115, 227, 110, 242, 63, 229, 4, 231, 229, 98, 149, 174, 78, 114, 73, 47, 250, 253, 182, 101, 1, 48, 39, 46, 65, 45, 63, 24, 230, 180, 34, 223, 227, 151, 187, 36, 154, 159, 123, 45, 0, 195, 198, 217, 87, 181, 233, 107, 185, 203, 19, 70, 241, 158, 108, 121, 72, 102, 112, 10, 63, 248, 39, 29, 194, 173, 27, 9, 0, 136, 131, 30, 50, 77, 184, 153, 183, 35, 154, 18, 105, 202, 125, 253, 189, 216, 146, 31, 25, 145, 136, 23, 193, 203, 240, 220, 217, 37, 87, 215, 222, 111, 111, 222, 44, 62, 238, 181, 10, 1, 70, 13, 148, 31, 171, 63, 210, 95, 13, 61, 46, 224, 143, 3, 187, 82, 37, 71, 120, 228, 205, 213, 201, 138, 236, 148, 13, 239, 99, 142, 247, 217, 122, 176, 241, 11, 202, 0, 143, 111, 168, 60, 153, 203, 233, 111, 205, 60, 140, 26, 69, 197, 235, 182, 184, 235, 111, 13, 114, 62, 192, 236, 147, 16, 16, 194, 107, 110, 3, 183, 31, 201, 81, 251, 244, 36, 163, 28, 29, 125, 250, 126, 46, 218, 219, 206, 54, 93, 52, 184, 95, 165, 60, 44, 58, 133, 1, 0, 190, 14, 167, 200, 63, 202, 201, 6, 132, 220, 216, 79, 55, 46, 77, 11, 166, 115, 170, 36, 125, 51, 168, 28, 48, 85, 38, 69, 151, 182, 136, 79, 247, 88, 20, 63, 153, 65, 202, 252, 132, 73, 78, 135, 1, 129, 14, 250, 143, 30, 206, 59, 104, 85, 78, 29, 44, 51, 177, 3, 130, 237, 59, 181, 20, 172, 82, 246, 165, 45, 28, 225, 17, 43, 88, 192, 123, 254, 90, 242, 35, 19, 171, 198, 170, 94, 195, 86, 41, 160, 219, 148, 223, 8, 157, 238, 111, 77, 228, 46, 86, 195, 21, 78, 255, 126, 43, 188, 80, 213, 24, 145, 183, 37, 127, 148, 245, 215, 9, 67, 109, 185, 18, 133, 20, 255, 94, 77, 220, 172, 118, 215, 81, 66, 44, 48, 192, 184, 219, 252, 217, 136, 226, 112, 101, 225, 27, 182, 122, 53, 8, 42, 242, 250, 206, 87, 59, 66, 203, 182, 205, 241, 199, 236, 30, 108, 152, 90, 134, 44, 164, 130, 223, 5, 174, 92, 89, 126, 218, 44, 169, 194, 255, 99, 76, 55, 102, 43, 239, 27, 176, 174, 157, 145, 169, 198, 112, 227, 79, 43, 239, 20, 127, 7, 14, 10, 228, 88, 28, 254, 136, 78, 20, 141, 168, 19, 142, 115, 36, 35, 113, 97, 136, 173, 165, 64, 209, 145, 130, 92, 63, 65, 198, 57, 141, 211, 21, 192, 87, 52, 249, 15, 49, 194, 35, 24, 216, 107, 245, 70, 241, 217, 197, 9, 251, 108, 180, 162, 20, 5, 147, 19, 90, 133, 212, 17, 154, 111, 101, 121, 156, 178, 150, 88, 79, 242, 112, 209, 165, 15, 131, 91, 11, 142, 158, 173, 66, 89, 142, 213, 146, 218, 141, 248, 188, 212, 33, 255, 183, 248, 165, 207, 66, 139, 209, 54, 91, 214, 175, 40, 129, 179, 71, 25, 157, 196, 252, 120, 170, 23, 247, 102, 165, 176, 69, 204, 37, 25, 215, 122, 229, 63, 57, 159, 146, 38, 42, 72, 129, 64, 136, 175, 13, 179, 210, 118, 154, 120, 219, 193, 43, 178, 92, 33, 138, 218, 2, 166, 18, 222, 127, 232, 210, 175, 178, 244, 223, 122, 62, 214, 255, 241, 242, 195, 44, 12, 9, 221, 189, 111, 178, 66, 226, 38, 41, 219, 41, 200, 136, 83, 215, 42, 111, 98, 200, 143, 91, 113, 216, 44, 96, 160, 192, 124, 121, 1, 120, 58, 161, 48, 105, 232, 31, 223, 78, 198, 180, 144, 234, 237, 123, 144, 109, 6, 15, 216, 89, 71, 237, 165, 223, 8, 180, 162, 186, 42, 64, 52, 25, 46, 128, 11, 232, 119, 207, 217, 59, 112, 227, 15, 37, 128, 181, 76, 23, 250, 231, 187, 149, 56, 21, 87, 15, 186, 21, 23, 239, 36, 148, 89, 254, 26, 132, 243, 161, 213, 152, 159, 158, 128, 193, 215, 124, 191, 244, 11, 122, 164, 132, 194, 86, 234, 118, 33, 123, 247, 167, 56, 29, 158, 182, 12, 140, 168, 129, 80, 208, 75, 140, 128, 235, 51, 207, 8, 92, 71, 97, 187, 122, 195, 202, 91, 168, 151, 185, 105, 31, 88, 4, 69, 195, 254, 148, 218, 13, 247, 174, 232, 181, 145, 17, 49, 5, 84, 3, 235, 218, 122, 123, 166, 223, 35, 164, 28, 60, 148, 155, 100, 240, 172, 232, 211, 157, 183, 107, 248, 125, 225, 90, 13, 102, 9, 26, 73, 129, 37, 101, 254, 75, 43, 38, 162, 225, 70, 210, 151, 201, 107, 223, 209, 215, 207, 113, 149, 116, 28, 117, 48, 226, 17, 117, 190, 5, 196, 10, 226, 164, 212, 141, 104, 73, 104, 34, 11, 114, 239, 38, 20, 39, 116, 192, 218, 142, 249, 87, 174, 243, 89, 94, 45, 206, 199, 43, 166, 167, 17, 53, 253, 140, 25, 133, 100, 17, 167, 128, 9, 157, 144, 143, 17, 66, 41, 210, 224, 206, 208, 229, 231, 47, 148, 165, 221, 137, 123, 254, 92, 5, 9, 146, 126, 195, 90, 38, 90, 228, 168, 104, 37, 79, 242, 56, 162, 59, 160, 247, 249, 227, 214, 252, 96, 145, 104, 225, 42, 33, 44, 150, 13, 215, 27, 214, 84, 198, 19, 145, 75, 134, 230, 47, 113, 124, 157, 42, 123, 119, 108, 215, 117, 67, 83, 52, 202, 20, 243, 127, 50, 156, 169, 244, 122, 205, 180, 36, 207, 45, 90, 28, 178, 220, 178, 175, 70, 251, 40, 47, 247, 252, 107, 46, 2, 195, 93, 208, 191, 33, 53, 184, 210, 162, 8, 212, 76, 32, 200, 86, 55, 153, 253, 251, 5, 125, 19, 178, 35, 41, 247, 250, 76, 10, 70, 61, 207, 208, 141, 62, 128, 186, 164, 82, 158, 52, 65, 152, 152, 14, 85, 3, 84, 236, 3, 202, 226, 14, 205, 129, 55, 39, 216, 61, 218, 204, 193, 238, 168, 56, 135, 228, 35, 55, 195, 36, 41, 73, 17, 157, 3, 195, 19, 176, 227, 35, 64, 82, 40, 119, 75, 208, 212, 122, 136, 215, 195, 205, 156, 95, 243, 50, 183, 29, 63, 169, 214, 104, 49, 189, 44, 156, 206, 227, 230, 205, 227, 164, 63, 14, 96, 43, 189, 168, 107, 196, 93, 36, 224, 245, 84, 6, 88, 178, 144, 153, 12, 163, 253, 146, 39, 123, 96, 106, 12, 90, 16, 180, 44, 7, 241, 75, 83, 52, 45, 94, 128, 148, 36, 69, 165, 8, 224, 29, 33, 124, 2, 185, 81, 57, 156, 193, 125, 158, 72, 141, 95, 238, 213, 93, 228, 6, 70, 73, 14, 43, 72, 112, 198, 120, 170, 66, 177, 216, 136, 177, 78, 243, 246, 22, 128, 25, 67, 168, 119, 8, 25, 253, 188, 219, 209, 84, 61, 178, 107, 87, 74, 244, 61, 151, 141, 251, 155, 4, 150, 216, 189, 102, 32, 108, 121, 245, 23, 186, 77, 137, 43, 236, 82, 192, 32, 193, 72, 31, 66, 21, 63, 139, 202, 212, 77, 139, 177, 172, 230, 124, 175, 67, 90, 6, 209, 127, 108, 78, 180, 26, 229, 228, 28, 234, 68, 73, 132, 88, 122, 111, 137, 222, 108, 185, 84, 87, 130, 187, 133, 5, 81, 139, 3, 182, 151, 207, 82, 200, 177, 232, 11, 225, 91, 105, 254, 140, 214, 6, 7, 129, 82, 108, 83, 57, 183, 21, 158, 137, 150, 104, 92, 196, 203, 219, 183, 245, 193, 193, 44, 177, 84, 23, 201, 68, 127, 12, 57, 68, 96, 15, 218, 176, 202, 169, 208, 129, 29, 56, 246, 38, 23, 229, 250, 62, 152, 127, 239, 94, 250, 97, 203, 234, 115, 214, 57, 225, 46, 69, 13, 147, 63, 159, 126, 60, 237, 167, 77, 87, 218, 84, 90, 167, 169, 0, 128, 44, 174, 216, 218, 205, 56, 186, 70, 159, 125, 65, 175, 129, 65, 29, 145, 142, 70, 213, 167, 156, 155, 71, 113, 110, 148, 206, 98, 119, 160, 38, 116, 171, 109, 55, 34, 167, 64, 28, 234, 232, 222, 223, 223, 158, 195, 13, 105, 181, 96, 39, 82, 108, 253, 23, 5, 106, 193, 243, 136, 35, 40, 109, 242, 89, 77, 181, 55, 64, 113, 144, 237, 112, 73, 173, 124, 197, 161, 131, 108, 223, 116, 11, 187, 233, 54, 33, 96, 85, 195, 5, 74, 247, 209, 110, 101, 9, 53, 196, 137, 20, 29, 202, 48, 14, 149, 152, 33, 231, 4, 162, 145, 7, 255, 127, 77, 146, 175, 198, 18, 90, 63, 182, 14, 63, 157, 192, 217, 224, 210, 102, 93, 253, 105, 106, 53, 229, 105, 194, 199, 64, 243, 182, 248, 195, 216, 130, 238, 183, 111, 8, 127, 239, 220, 217, 231, 79, 122, 205, 143, 114, 172, 46, 194, 21, 223, 35, 78, 116, 254, 253, 2, 176, 46, 4, 74, 139, 65, 230, 225, 244, 231, 222, 145, 3, 244, 48, 233, 110, 176, 243, 97, 72, 169, 214, 225, 231, 91, 205, 128, 34, 223, 205, 216, 52, 240, 152, 95, 38, 159, 141, 234, 8, 225, 75, 59, 114, 142, 73, 91, 232, 196, 12, 93, 249, 35, 195, 52, 85, 119, 108, 163, 7, 175, 126, 13, 165, 177, 67, 209, 46, 18, 201, 103, 213, 169, 76, 35, 180, 163, 139, 201, 213, 49, 235, 48, 57, 25, 147, 4, 208, 60, 217, 23, 247, 251, 48, 189, 233, 41, 38, 19, 29, 196, 105, 227, 14, 201, 55, 152, 176, 193, 2, 206, 131, 164, 184, 9, 55, 173, 188, 22, 132, 178, 0, 172, 67, 126, 8, 98, 160, 91, 236, 125, 34, 201, 250, 224, 197, 156, 161, 231, 140, 2, 242, 147, 241, 113, 231, 9, 33, 176, 60, 159, 137, 205, 143, 94, 69, 103, 92, 136, 93, 234, 94, 32, 176, 60, 196, 161, 235, 79, 173, 28, 112, 160, 182, 219, 116, 148, 11, 170, 214, 247, 137, 78, 116, 45, 123, 26, 105, 227, 76, 20, 213, 204, 227, 50, 231, 181, 81, 62, 212, 31, 119, 126, 139, 141, 92, 252, 94, 197, 211, 75, 136, 5, 32, 175, 76, 111, 216, 8, 61, 147, 255, 87, 164, 11, 96, 117, 229, 16, 139, 155, 227, 75, 51, 63, 229, 28, 21, 61, 108, 34, 96, 105, 141, 205, 132, 30, 136, 231, 102, 142, 12, 140, 186, 10, 185, 109, 240, 93, 76, 90, 252, 144, 203, 135, 215, 100, 50, 10, 185, 199, 185, 71, 80, 79, 146, 86, 249, 53, 132, 54, 107, 235, 131, 10, 244, 235, 50, 174, 61, 120, 182, 194, 80, 34, 41, 191, 34, 79, 82, 54, 137, 205, 27, 248, 17, 135, 29, 150, 239, 229, 193, 132, 175, 49, 33, 102, 214, 205, 249, 113, 102, 60, 55, 119, 223, 177, 175, 128, 103, 40, 8, 200, 206, 95, 31, 31, 117, 199, 124, 4, 192, 62, 118, 247, 230, 66, 132, 125, 192, 216, 104, 250, 239, 93, 165, 204, 227, 192, 200, 165, 204, 244, 69, 196, 13, 54, 40, 77, 240, 250, 72, 80, 111, 135, 225, 162, 64, 177, 252, 115, 234, 246, 23, 167, 176, 182, 31, 43, 228, 68, 60, 179, 84, 86, 105, 211, 60, 203, 207, 238, 153, 154, 9, 250, 226, 87, 94, 63, 155, 133, 138, 152, 193, 174, 37, 57, 111, 12, 33, 19, 10, 96, 94, 198, 194, 187, 241, 107, 213, 2, 54, 248, 188, 183, 205, 193, 101, 56, 124, 202, 122, 71, 236, 41, 64, 42, 100, 17, 168, 14, 99, 206, 28, 33, 27, 20, 64, 18, 102, 146, 121, 70, 210, 33, 163, 241, 47, 114, 107, 180, 241, 133, 239, 42, 86, 224, 88, 151, 59, 255, 224, 142, 240, 148, 96, 208, 147, 174, 141, 85, 145, 25, 157, 209, 255, 139, 71, 250, 221, 252, 223, 180, 247, 240, 127, 215, 81, 63, 96, 217, 126, 136, 255, 33, 247, 81, 245, 126, 238, 146, 187, 178, 176, 154, 193, 234, 213, 70, 178, 101, 121, 191, 248, 202, 99, 238, 91, 237, 66, 61, 156, 72, 6, 47, 82, 84, 80, 193, 197, 185, 152, 11, 140, 121, 226, 47, 200, 239, 184, 56, 28, 37, 162, 100, 3, 47, 177, 125, 114, 91, 103, 21, 249, 31, 151, 244, 43, 10, 29, 60, 10, 122, 146, 254, 248, 241, 192, 171, 64, 62, 123, 180, 29, 127, 235, 250, 106, 57, 94, 123, 77, 121, 72, 226, 132, 77, 124, 14, 133, 199, 126, 58, 247, 43, 6, 239, 198, 143, 29, 23, 189, 147, 68, 95, 237, 8, 189, 198, 37, 131, 239, 80, 47, 18, 37, 48, 127, 144, 8, 207, 138], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88], segment_lens = [1, 1], directions = [false], fins = [false, true], windows = [1], injected = [(Initiator, Index(2941015518009612174), 0, [], false)], consume_lens = [1], acked_reads = [false] +cc 4b467e0e4fbdff1a44201c567189e619be256a8f6b6e013a91cce14d094d012a # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198, 196, 112, 195, 175, 165, 98, 200, 68, 117, 86, 26, 151, 107, 60, 251, 226, 242, 26, 22, 54, 179, 195, 245, 44, 41, 68, 115, 227, 110, 242, 63, 229, 4, 231, 229, 98, 149, 174, 78, 114, 73, 47, 250, 253, 182, 101, 1, 48, 39, 46, 65, 45, 63, 24, 230, 180, 34, 223, 227, 151, 187, 36, 154, 159, 123, 45, 0, 195, 198, 217, 87, 181, 233, 107, 185, 203, 19, 70, 241, 158, 108, 121, 72, 102, 112, 10, 63, 248, 39, 29, 194, 173, 27, 9, 0, 136, 131, 30, 50, 77, 184, 153, 183, 35, 154, 18, 105, 202, 125, 253, 189, 216, 146, 31, 25, 145, 136, 23, 193, 203, 240, 220, 217, 37, 87, 215, 222, 111, 111, 222, 44, 62, 238, 181, 10, 1, 70, 13, 148, 31, 171, 63, 210, 95, 13, 61, 46, 224, 143, 3, 187, 82, 37, 71, 120, 228, 205, 213, 201, 138, 236, 148, 13, 239, 99, 142, 247, 217, 122, 176, 241, 11, 202, 0, 143, 111, 168, 60, 153, 203, 233, 111, 205, 60, 140, 26, 69, 197, 235, 182, 184, 235, 111, 13, 114, 62, 192, 236, 147, 16, 16, 194, 107, 110, 3, 183, 31, 201, 81, 251, 244, 36, 163, 28, 29, 125, 250, 126, 46, 218, 219, 206, 54, 93, 52, 184, 95, 165, 60, 44, 58, 133, 1, 0, 190, 14, 167, 200, 63, 202, 201, 6, 132, 220, 216, 79, 55, 46, 77, 11, 166, 115, 170, 36, 125, 51, 168, 28, 48, 85, 38, 69, 151, 182, 136, 79, 247, 88, 20, 63, 153, 65, 202, 252, 132, 73, 78, 135, 1, 129, 14, 250, 143, 30, 206, 59, 104, 85, 78, 29, 44, 51, 177, 3, 130, 237, 59, 181, 20, 172, 82, 246, 165, 45, 28, 225, 17, 43, 88, 192, 123, 254, 90, 242, 35, 19, 171, 198, 170, 94, 195, 86, 41, 160, 219, 148, 223, 8, 157, 238, 111, 77, 228, 46, 86, 195, 21, 78, 255, 126, 43, 188, 80, 213, 24, 145, 183, 37, 127, 148, 245, 215, 9, 67, 109, 185, 18, 133, 20, 255, 94, 77, 220, 172, 118, 215, 81, 66, 44, 48, 192, 184, 219, 252, 217, 136, 226, 112, 101, 225, 27, 182, 122, 53, 8, 42, 242, 250, 206, 87, 59, 66, 203, 182, 205, 241, 199, 236, 30, 108, 152, 90, 134, 44, 164, 130, 223, 5, 174, 92, 89, 126, 218, 44, 169, 194, 255, 99, 76, 55, 102, 43, 239, 27, 176, 174, 157, 145, 169, 198, 112, 227, 79, 43, 239, 20, 127, 7, 14, 10, 228, 88, 28, 254, 136, 78, 20, 141, 168, 19, 142, 115, 36, 35, 113, 97, 136, 173, 165, 64, 209, 145, 130, 92, 63, 65, 198, 57, 141, 211, 21, 192, 87, 52, 249, 15, 49, 194, 35, 24, 216, 107, 245, 70, 241, 217, 197, 9, 251, 108, 180, 162, 20, 5, 147, 19, 90, 133, 212, 17, 154, 111, 101, 121, 156, 178, 150, 88, 79, 242, 112, 209, 165, 15, 131, 91, 11, 142, 158, 173, 66, 89, 142, 213, 146, 218, 141, 248, 188, 212, 33, 255, 183, 248, 165, 207, 66, 139, 209, 54, 91, 214, 175, 40, 129, 179, 71, 25, 157, 196, 252, 120, 170, 23, 247, 102, 165, 176, 69, 204, 37, 25, 215, 122, 229, 63, 57, 159, 146, 38, 42, 72, 129, 64, 136, 175, 13, 179, 210, 118, 154, 120, 219, 193, 43, 178, 92, 33, 138, 218, 2, 166, 18, 222, 127, 232, 210, 175, 178, 244, 223, 122, 62, 214, 255, 241, 242, 195, 44, 12, 9, 221, 189, 111, 178, 66, 226, 38, 41, 219, 41, 200, 136, 83, 215, 42, 111, 98, 200, 143, 91, 113, 216, 44, 96, 160, 192, 124, 121, 1, 120, 58, 161, 48, 105, 232, 31, 223, 78, 198, 180, 144, 234, 237, 123, 144, 109, 6, 15, 216, 89, 71, 237, 165, 223, 8, 180, 162, 186, 42, 64, 52, 25, 46, 128, 11, 232, 119, 207, 217, 59, 112, 227, 15, 37, 128, 181, 76, 23, 250, 231, 187, 149, 56, 21, 87, 15, 186, 21, 23, 239, 36, 148, 89, 254, 26, 132, 243, 161, 213, 152, 159, 158, 128, 193, 215, 124, 191, 244, 11, 122, 164, 132, 194, 86, 234, 118, 33, 123, 247, 167, 56, 29, 158, 182, 12, 140, 168, 129, 80, 208, 75, 140, 128, 235, 51, 207, 8, 92, 71, 97, 187, 122, 195, 202, 91, 168, 151, 185, 105, 31, 88, 4, 69, 195, 254, 148, 218, 13, 247, 174, 232, 181, 145, 17, 49, 5, 84, 3, 235, 218, 122, 123, 166, 223, 35, 164, 28, 60, 148, 155, 100, 240, 172, 232, 211, 157, 183, 107, 248, 125, 225, 90, 13, 102, 9, 26, 73, 129, 37, 101, 254, 75, 43, 38, 162, 225, 70, 210, 151, 201, 107, 223, 209, 215, 207, 113, 149, 116, 28, 117, 48, 226, 17, 117, 190, 5, 196, 10, 226, 164, 212, 141, 104, 73, 104, 34, 11, 114, 239, 38, 20, 39, 116, 192, 218, 142, 249, 87, 174, 243, 89, 94, 45, 206, 199, 43, 166, 167, 17, 53, 253, 140, 25, 133, 100, 17, 167, 128, 9, 157, 144, 143, 17, 66, 41, 210, 224, 206, 208, 229, 231, 47, 148, 165, 221, 137, 123, 254, 92, 5, 9, 146, 126, 195, 90, 38, 90, 228, 168, 104, 37, 79, 242, 56, 162, 59, 160, 247, 249, 227, 214, 252, 96, 145, 104, 225, 42, 33, 44, 150, 13, 215, 27, 214, 84, 198, 19, 145, 75, 134, 230, 47, 113, 124, 157, 42, 123, 119, 108, 215, 117, 67, 83, 52, 202, 20, 243, 127, 50, 156, 169, 244, 122, 205, 180, 36, 207, 45, 90, 28, 178, 220, 178, 175, 70, 251, 40, 47, 247, 252, 107, 46, 2, 195, 93, 208, 191, 33, 53, 184, 210, 162, 8, 212, 76, 32, 200, 86, 55, 153, 253, 251, 5, 125, 19, 178, 35, 41, 247, 250, 76, 10, 70, 61, 207, 208, 141, 62, 128, 186, 164, 82, 158, 52, 65, 152, 152, 14, 85, 3, 84, 236, 3, 202, 226, 14, 205, 129, 55, 39, 216, 61, 218, 204, 193, 238, 168, 56, 135, 228, 35, 55, 195, 36, 41, 73, 17, 157, 3, 195, 19, 176, 227, 35, 64, 82, 40, 119, 75, 208, 212, 122, 136, 215, 195, 205, 156, 95, 243, 50, 183, 29, 63, 169, 214, 104, 49, 189, 44, 156, 206, 227, 230, 205, 227, 164, 63, 14, 96, 43, 189, 168, 107, 196, 93, 36, 224, 245, 84, 6, 88, 178, 144, 153, 12, 163, 253, 146, 39, 123, 96, 106, 12, 90, 16, 180, 44, 7, 241, 75, 83, 52, 45, 94, 128, 148, 36, 69, 165, 8, 224, 29, 33, 124, 2, 185, 81, 57, 156, 193, 125, 158, 72, 141, 95, 238, 213, 93, 228, 6, 70, 73, 14, 43, 72, 112, 198, 120, 170, 66, 177, 216, 136, 177, 78, 243, 246, 22, 128, 25, 67, 168, 119, 8, 25, 253, 188, 219, 209, 84, 61, 178, 107, 87, 74, 244, 61, 151, 141, 251, 155, 4, 150, 216, 189, 102, 32, 108, 121, 245, 23, 186, 77, 137, 43, 236, 82, 192, 32, 193, 72, 31, 66, 21, 63, 139, 202, 212, 77, 139, 177, 172, 230, 124, 175, 67, 90, 6, 209, 127, 108, 78, 180, 26, 229, 228, 28, 234, 68, 73, 132, 88, 122, 111, 137, 222, 108, 185, 84, 87, 130, 187, 133, 5, 81, 139, 3, 182, 151, 207, 82, 200, 177, 232, 11, 225, 91, 105, 254, 140, 214, 6, 7, 129, 82, 108, 83, 57, 183, 21, 158, 137, 150, 104, 92, 196, 203, 219, 183, 245, 193, 193, 44, 177, 84, 23, 201, 68, 127, 12, 57, 68, 96, 15, 218, 176, 202, 169, 208, 129, 29, 56, 246, 38, 23, 229, 250, 62, 152, 127, 239, 94, 250, 97, 203, 234, 115, 214, 57, 225, 46, 69, 13, 147, 63, 159, 126, 60, 237, 167, 77, 87, 218, 84, 90, 167, 169, 0, 128, 44, 174, 216, 218, 205, 56, 186, 70, 159, 125, 65, 175, 129, 65, 29, 145, 142, 70, 213, 167, 156, 155, 71, 113, 110, 148, 206, 98, 119, 160, 38, 116, 171, 109, 55, 34, 167, 64, 28, 234, 232, 222, 223, 223, 158, 195, 13, 105, 181, 96, 39, 82, 108, 253, 23, 5, 106, 193, 243, 136, 35, 40, 109, 242, 89, 77, 181, 55, 64, 113, 144, 237, 112, 73, 173, 124, 197, 161, 131, 108, 223, 116, 11, 187, 233, 54, 33, 96, 85, 195, 5, 74, 247, 209, 110, 101, 9, 53, 196, 137, 20, 29, 202, 48, 14, 149, 152, 33, 231, 4, 162, 145, 7, 255, 127, 77, 146, 175, 198, 18, 90, 63, 182, 14, 63, 157, 192, 217, 224, 210, 102, 93, 253, 105, 106, 53, 229, 105, 194, 199, 64, 243, 182, 248, 195, 216, 130, 238, 183, 111, 8, 127, 239, 220, 217, 231, 79, 122, 205, 143, 114, 172, 46, 194, 21, 223, 35, 78, 116, 254, 253, 2, 176, 46, 4, 74, 139, 65, 230, 225, 244, 231, 222, 145, 3, 244, 48, 233, 110, 176, 243, 97, 72, 169, 214, 225, 231, 91, 205, 128, 34, 223, 205, 216, 52, 240, 152, 95, 38, 159, 141, 234, 8, 225, 75, 59, 114, 142, 73, 91, 232, 196, 12, 93, 249, 35, 195, 52, 85, 119, 108, 163, 7, 175, 126, 13, 165, 177, 67, 209, 46, 18, 201, 103, 213, 169, 76, 35, 180, 163, 139, 201, 213, 49, 235, 48, 57, 25, 147, 4, 208, 60, 217, 23, 247, 251, 48, 189, 233, 41, 38, 19, 29, 196, 105, 227, 14, 201, 55, 152, 176, 193, 2, 206, 131, 164, 184, 9, 55, 173, 188, 22, 132, 178, 0, 172, 67, 126, 8, 98, 160, 91, 236, 125, 34, 201, 250, 224, 197, 156, 161, 231, 140, 2, 242, 147, 241, 113, 231, 9, 33, 176, 60, 159, 137, 205, 143, 94, 69, 103, 92, 136, 93, 234, 94, 32, 176, 60, 196, 161, 235, 79, 173, 28, 112, 160, 182, 219, 116, 148, 11, 170, 214, 247, 137, 78, 116, 45, 123, 26, 105, 227, 76, 20, 213, 204, 227, 50, 231, 181, 81, 62, 212, 31, 119, 126, 139, 141, 92, 252, 94, 197, 211, 75, 136, 5, 32, 175, 76, 111, 216, 8, 61, 147, 255, 87, 164, 11, 96, 117, 229, 16, 139, 155, 227, 75, 51, 63, 229, 28, 21, 61, 108, 34, 96, 105, 141, 205, 132, 30, 136, 231, 102, 142, 12, 140, 186, 10, 185, 109, 240, 93, 76, 90, 252, 144, 203, 135, 215, 100, 50, 10, 185, 199, 185, 71, 80, 79, 146, 86, 249, 53, 132, 54, 107, 235, 131, 10, 244, 235, 50, 174, 61, 120, 182, 194, 80, 34, 41, 191, 34, 79, 82, 54, 137, 205, 27, 248, 17, 135, 29, 150, 239, 229, 193, 132, 175, 49, 33, 102, 214, 205, 249, 113, 102, 60, 55, 119, 223, 177, 175, 128, 103, 40, 8, 200, 206, 95, 31, 31, 117, 199, 124, 4, 192, 62, 118, 247, 230, 66, 132, 125, 192, 216, 104, 250, 239, 93, 165, 204, 227, 192, 200, 165, 204, 244, 69, 196, 13, 54, 40, 77, 240, 250, 72, 80, 111, 135, 225, 162, 64, 177, 252, 115, 234, 246, 23, 167, 176, 182, 31, 43, 228, 68, 60, 179, 84, 86, 105, 211, 60, 203, 207, 238, 153, 154, 9, 250, 226, 87, 94, 63, 155, 133, 138, 152, 193, 174, 37, 57, 111, 12, 33, 19, 10, 96, 94, 198, 194, 187, 241, 107, 213, 2, 54, 248, 188, 183, 205, 193, 101, 56, 124, 202, 122, 71, 236, 41, 64, 42, 100, 17, 168, 14, 99, 206, 28, 33, 27, 20, 64, 18, 102, 146, 121, 70, 210, 33, 163, 241, 47, 114, 107, 180, 241, 133, 239, 42, 86, 224, 88, 151, 59, 255, 224, 142, 240, 148, 96, 208, 147, 174, 141, 85, 145, 25, 157, 209, 255, 139, 71, 250, 221, 252, 223, 180, 247, 240, 127, 215, 81, 63, 96, 217, 126, 136, 255, 33, 247, 81, 245, 126, 238, 146, 187, 178, 176, 154, 193, 234, 213, 70, 178, 101, 121, 191, 248, 202, 99, 238, 91, 237, 66, 61, 156, 72, 6, 47, 82, 84, 80, 193, 197, 185, 152, 11, 140, 121, 226, 47, 200, 239, 184, 56, 28, 37, 162, 100, 3, 47, 177, 125, 114, 91, 103, 21, 249, 31, 151, 244, 43, 10, 29, 60, 10, 122, 146, 254, 248, 241, 192, 171, 64, 62, 123, 180, 29, 127, 235, 250, 106, 57, 94, 123, 77, 121, 72, 226, 132, 77, 124, 14, 133, 199, 126, 58, 247, 43, 6, 239, 198, 143, 29, 23, 189, 147, 68, 95, 237, 8, 189, 198, 37, 131, 239, 80, 47, 18, 37, 48, 127, 144, 8, 207, 138, 94, 17, 165, 63, 202, 30, 101, 197, 114, 185, 15, 0, 150, 225, 19, 29, 9, 98, 175, 180, 45, 140, 138, 154, 150, 104, 188, 123, 0, 134, 188, 175, 250, 212, 220, 44, 69, 247, 211, 222, 144, 245, 23, 17, 118, 245, 1, 28, 156, 220, 70, 245, 96, 61, 81, 26, 61, 222, 102, 153, 189, 19, 253, 193, 76, 228, 167, 34, 193, 128, 53, 19, 166, 199, 232, 85, 146, 20, 149, 159, 211, 189, 15, 87, 159, 157, 226, 43, 38, 62, 159, 202, 190, 102, 182, 67, 114, 193, 96, 213, 156, 49, 83, 127, 203, 142, 133, 116, 155, 207, 136, 8, 146, 207, 41, 110, 133, 96, 94, 253, 73, 139, 179, 230, 203, 209, 44, 136, 92, 241, 62, 221, 231, 204, 232, 112, 105, 236, 28, 208, 49, 186, 248, 13, 231, 62, 36, 63, 28, 232, 210, 25, 154, 207, 203, 102, 31, 131, 63, 24, 75, 40, 241, 218, 117, 168, 247, 233, 117, 109, 169, 133, 93, 153, 149, 19, 67, 177, 187, 114, 84, 8, 187, 39, 198, 245, 225, 200, 91, 168, 89, 81, 160, 168, 146, 43, 206, 143, 12, 86, 209, 115, 223, 5, 70, 37, 154, 22, 106, 0, 7, 41, 255, 28, 9, 109, 187, 221, 148, 238, 84, 233, 225, 138, 61, 15, 133, 237, 232, 204, 141, 116, 47, 213, 2, 225, 60, 49, 191, 124, 204, 32, 220, 69, 54, 221, 90, 60, 128, 18, 111, 32, 160, 197, 22, 157, 129, 152, 8, 2, 245, 195, 226, 59, 8, 144, 35, 154, 51, 152, 55, 184, 132, 106, 58, 204, 57, 146, 44, 33, 210, 71, 50, 255, 225, 58, 76, 114, 78, 147, 211, 219, 134, 85, 226, 57, 246, 17, 183, 39, 237, 227, 130, 126, 127, 134, 249, 76, 162, 161, 144, 93, 157, 85, 105, 69, 111, 130, 184, 215, 137, 234, 188, 10, 206, 51, 238, 156, 54, 215, 88, 107, 75, 115, 25, 23, 25, 247, 124, 93, 27, 63, 104, 56, 166, 64, 26, 26, 88, 252, 78, 1, 31, 137, 52, 230, 23, 136, 218, 48, 24, 156, 98, 195, 157, 196, 189, 87, 221, 242, 113, 194, 215, 106, 23, 165, 143, 213, 21, 138, 147, 170, 138, 7, 213, 202, 30, 253, 61, 110, 49, 157, 199, 150, 74, 206, 64, 135, 221, 244, 64, 192, 211, 45, 195, 87, 102, 232, 202, 102, 80, 204, 217, 120, 182, 225, 47, 85, 211, 155, 132, 44, 62, 114, 45, 52, 124, 173, 128, 77, 131, 31, 207, 22, 175, 73, 118, 79, 109, 37, 68, 106, 171, 48, 188, 0, 173, 199, 255, 97, 229, 135, 52, 150, 234, 226, 149, 56, 25, 40, 104, 221, 6, 176, 164, 159, 157, 121, 21, 18, 112, 64, 52, 15, 157, 209, 100, 130, 75, 44, 135, 205, 237, 162, 17, 152, 187, 119, 44, 53, 38, 133, 11, 179, 33, 161, 215, 68, 132, 139, 157, 243, 247, 208, 227, 64, 133, 140, 203, 137, 58, 53, 188, 98, 149, 83, 44, 165, 6, 185, 204, 63, 117, 109, 214, 141, 3, 75, 76, 226, 217, 184, 98, 59, 180, 200, 37, 60, 163, 91, 88, 252, 53, 29, 151, 53, 10, 131, 102, 167, 232, 107, 24, 219, 9, 162, 126, 190, 150, 139, 82, 167, 120, 83, 59, 199, 116, 3, 247, 110, 106, 188, 102, 112, 215, 228, 127, 80, 62, 66, 174, 5, 185, 191, 134, 128, 186, 67, 137, 146, 115, 191, 115, 205, 11, 231, 49, 97, 221, 243, 199, 33, 33, 200, 164, 226, 117, 132, 73, 173, 116, 105, 36, 116, 79, 16, 225, 58, 143, 4, 147, 27, 226, 181, 44, 247, 38, 199, 177, 0, 157, 165, 232, 155, 243, 70, 251, 144, 213, 239, 202, 244, 64, 18, 45, 130, 211, 146, 116, 169, 143, 202, 41, 170, 178, 156, 114, 120, 89, 177, 189, 232, 132, 113, 22, 35, 248, 91, 122, 27, 85, 97, 141, 157, 77, 68, 238, 32, 209, 178, 118, 24, 174, 75, 125, 102, 236, 84, 131, 104, 219, 183, 243, 146, 19, 0, 13, 192, 34, 94, 166, 232, 118, 190, 20, 180, 47, 230, 205, 254, 206, 75, 22, 58, 17, 88, 27, 173, 11, 229, 221, 195, 215, 107, 41, 74, 45, 175, 247, 190, 186, 208, 156, 127, 243, 60, 221, 245, 19, 233, 42, 17, 226, 30, 30, 238, 1, 23, 139, 108, 224, 73, 37, 170, 13, 38, 203, 166, 231, 209, 199, 130, 169, 205, 180, 157, 14, 37, 98, 195, 36, 116, 255, 109, 173, 188, 89, 122, 199, 163, 222, 233, 25, 108, 89, 103, 18, 71, 121, 56, 198, 31, 141, 190, 211, 219, 131, 193, 56, 13, 133, 83, 107, 10, 239, 103, 108, 183, 149, 190, 248, 109, 27, 99, 70, 243, 224, 20, 96, 124, 235, 94, 97, 53, 111, 199, 141, 162, 157, 64, 3, 222, 246, 81, 28, 202, 236, 252, 33, 180, 158, 36, 221, 35, 3, 115, 41, 67, 202, 93, 81, 53, 199, 130, 230, 14, 51, 168, 153, 235, 0, 28, 243, 207, 166, 101, 130, 33, 210, 150, 94, 17, 144, 138, 70, 22, 169, 27, 58, 52, 23, 117, 66, 18, 231, 236, 217, 104, 2, 112, 0, 38, 183, 122, 242, 144, 188, 60, 45, 248, 35, 114, 161, 206, 118, 176, 90, 176, 44, 129, 176, 8, 228, 49, 40, 76, 82, 236, 73, 19, 177, 84, 201, 191, 26, 8, 230, 29, 66, 7, 99, 172, 145, 102, 61, 161, 152, 143, 233, 12, 53, 84, 113, 124, 16, 10, 113, 252, 93, 59, 188, 138, 208, 105, 189, 202, 4, 97, 116, 224, 88, 223, 180, 12, 12, 35, 70, 133, 159, 145, 91, 155, 222, 49, 42, 10, 56, 231, 64, 194, 90, 81, 55, 131, 133, 8, 80, 170, 64, 88, 241, 102, 210, 15, 10, 87, 201, 192, 45, 113, 91, 152, 99, 101, 64, 214, 16, 35, 229, 161, 215, 62, 194, 186, 25, 206, 167, 110, 56, 4, 221, 3, 68, 64, 237, 14, 198, 25, 4, 12, 184, 145, 15, 200, 139, 205, 31, 75, 230, 156, 73, 148, 137, 195, 219, 191, 215, 80, 91, 154, 85, 144, 23, 106, 185, 149, 31, 184, 30, 240, 59, 10, 69, 252, 244, 8, 10, 84, 26, 236, 107, 86, 38, 234, 153, 229, 180, 3, 72, 214, 56, 64, 92, 69, 71, 2, 205, 123, 20, 86, 126, 95, 51, 237, 120, 208, 25, 155, 80, 174, 36, 253, 162, 21, 73, 206, 31, 170, 172, 118, 171, 80, 26, 100, 233, 248, 120, 103, 108, 78, 120, 28, 134, 61, 75, 11, 64, 124, 189, 112, 137, 52, 79, 79, 61, 91, 112, 115, 83, 155, 193, 117, 149, 18, 169, 26, 203, 139, 79, 63, 97, 46, 147, 3, 255, 172, 120, 124, 58, 44, 242, 86, 113, 215, 135, 136, 252, 81, 127, 143, 173, 115, 138, 230, 160, 211, 18, 21, 212, 199, 112, 185, 133, 2, 104, 48, 92, 26, 187, 121, 194, 102, 171, 217, 236, 181, 90, 190, 230, 7, 170, 221, 195, 183, 253, 243, 236, 116, 150, 178, 183, 52, 177, 239, 145, 173, 196, 154, 59, 148, 250, 250, 63, 91, 37, 100, 54, 207, 206, 94, 9, 163, 126, 62, 10, 110, 18, 24, 125, 255, 47, 177, 104, 113, 74, 26, 175, 144, 148, 54, 224, 106, 206, 197, 201, 218, 77, 0, 216, 142, 251, 190, 196, 150, 156, 58, 115, 228, 220, 100, 255, 201, 3, 17, 222, 25, 148, 160, 111, 6, 203, 182, 212, 34, 65, 212, 206, 86, 192, 43, 45, 102, 60, 55, 174, 166, 170, 230, 86, 129, 186, 43, 157, 92, 75, 50, 67, 186, 245, 5, 41, 44, 96, 154, 112, 208, 86, 194, 14, 68, 238, 69, 204, 104, 210, 69, 187, 60, 5, 172, 29, 222, 47, 166, 106, 121, 226, 254, 58, 11, 71, 2, 193, 33, 249, 132, 183, 15, 227, 22, 60, 229, 74, 112, 44, 95, 39, 10, 130, 76, 183, 219, 239, 123, 64, 200, 51, 132, 251, 183, 112, 97, 92, 92, 78, 198, 126, 159, 176, 51, 91, 41, 88, 110, 109, 0, 133, 211, 23, 69, 118, 54, 134, 179, 214, 219, 47, 7, 177, 159, 74, 233, 107, 73, 31, 126, 85, 51, 11, 69, 52, 182, 34, 206, 37, 181, 200, 50, 53, 122, 94, 5, 74, 20, 27, 80, 222, 89, 51, 180, 144, 233, 112, 45, 97, 59, 113, 129, 29, 34, 147, 102, 97, 124, 85], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89], segment_lens = [602, 754, 1361, 1, 623, 303, 1554, 1241], resent_lens = [0], directions = [false, false, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false], fins = [true, true], lost = [(Index(8998411743272952008), None), (Index(0), None), (Index(0), None), (Index(0), None)], acks = [], actions = [None], consume_lens = [0], acked_reads = [false] +cc b379088aaea27e1762cd5d844f05a5531468c3c02cb9aff1bdcc8787569f2120 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196], segment_lens = [921, 150, 278, 1219, 915, 221, 1630, 307, 1272, 519, 1309], resent_lens = [0], directions = [false, false, false, false], fins = [true, true], extra_acks = 19, keep_alives = [(Initiator, Index(2562047788015215503))], lost = [(Index(512409557603043101), None), (Index(1054099661354831521), None), (Index(1627653888856725143), None)], windows = [1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 5252], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: Some(3), fallback_window: 4194304, ack_reorder_tolerance: 1, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 883b6dc32c72d09a57a351c4686ae466ef9ebee6a28fce54d0cef6a8dae9d07e # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198, 196, 112, 195, 175, 165, 98, 200, 68, 117, 86, 26, 151, 107, 60, 251, 226, 242, 26, 22, 54, 179, 195, 245, 44, 41, 68, 115, 227, 110, 242, 63, 229, 4, 231, 229, 98, 149, 174, 78, 114, 73, 47, 250, 253, 182, 101, 1, 48, 39, 46, 65, 45, 63, 24, 230, 180, 34, 223, 227, 151, 187, 36, 154, 159, 123, 45, 0, 195, 198, 217, 87, 181, 233, 107, 185, 203, 19, 70, 241, 158, 108, 121, 72, 102, 112, 10, 63, 248, 39, 29, 194, 173, 27, 9, 0, 136, 131, 30, 50, 77, 184, 153, 183, 35, 154, 18, 105, 202, 125, 253, 189, 216, 146, 31, 25, 145, 136, 23, 193, 203, 240, 220, 217, 37, 87, 215, 222, 111, 111, 222, 44, 62, 238, 181, 10, 1, 70, 13, 148, 31, 171, 63, 210, 95, 13, 61, 46, 224, 143, 3, 187, 82, 37, 71, 120, 228, 205, 213, 201, 138, 236, 148, 13, 239, 99, 142, 247, 217, 122, 176, 241, 11, 202, 0, 143, 111, 168, 60, 153, 203, 233, 111, 205, 60, 140, 26, 69, 197, 235, 182, 184, 235, 111, 13, 114, 62, 192, 236, 147, 16, 16, 194, 107, 110, 3, 183, 31, 201, 81, 251, 244, 36, 163, 28, 29, 125, 250, 126, 46, 218, 219, 206, 54, 93, 52, 184, 95, 165, 60, 44, 58, 133, 1, 0, 190, 14, 167, 200, 63, 202, 201, 6, 132, 220, 216, 79, 55, 46, 77, 11, 166, 115, 170, 36, 125, 51, 168, 28, 48, 85, 38, 69, 151, 182, 136, 79, 247, 88, 20, 63, 153, 65, 202, 252, 132, 73, 78, 135, 1, 129, 14, 250, 143, 30, 206, 59, 104, 85, 78, 29, 44, 51, 177, 3, 130, 237, 59, 181, 20, 172, 82, 246, 165, 45, 28, 225, 17, 43, 88, 192, 123, 254, 90, 242, 35, 19, 171, 198, 170, 94, 195, 86, 41, 160, 219, 148, 223, 8, 157, 238, 111, 77, 228, 46, 86, 195, 21, 78, 255, 126, 43, 188, 80, 213, 24, 145, 183, 37, 127, 148, 245, 215, 9, 67, 109, 185, 18, 133, 20, 255, 94, 77, 220, 172, 118, 215, 81, 66, 44, 48, 192, 184, 219, 252, 217, 136, 226, 112, 101, 225, 27, 182, 122, 53, 8, 42, 242, 250, 206, 87, 59, 66, 203, 182, 205, 241, 199, 236, 30, 108, 152, 90, 134, 44, 164, 130, 223, 5, 174, 92, 89, 126, 218, 44, 169, 194, 255, 99, 76, 55, 102, 43, 239, 27, 176, 174, 157, 145, 169, 198, 112, 227, 79, 43, 239, 20, 127, 7, 14, 10, 228, 88, 28, 254, 136, 78, 20, 141, 168, 19, 142, 115, 36, 35, 113, 97, 136, 173, 165, 64, 209, 145, 130, 92, 63, 65, 198, 57, 141, 211, 21, 192, 87, 52, 249, 15, 49, 194, 35, 24, 216, 107, 245, 70, 241, 217, 197, 9, 251, 108, 180, 162, 20, 5, 147, 19, 90, 133, 212, 17, 154, 111, 101, 121, 156, 178, 150, 88, 79, 242, 112, 209, 165, 15, 131, 91, 11, 142, 158, 173, 66, 89, 142, 213, 146, 218, 141, 248, 188, 212, 33, 255, 183, 248, 165, 207, 66, 139, 209, 54, 91, 214, 175, 40, 129, 179, 71, 25, 157, 196, 252, 120, 170, 23, 247, 102, 165, 176, 69, 204, 37, 25, 215, 122, 229, 63, 57, 159, 146, 38, 42, 72, 129, 64, 136, 175, 13, 179, 210, 118, 154, 120, 219, 193, 43, 178, 92, 33, 138, 218, 2, 166, 18, 222, 127, 232, 210, 175, 178, 244, 223, 122, 62, 214, 255, 241, 242, 195, 44, 12, 9, 221, 189, 111, 178, 66, 226, 38, 41, 219, 41, 200, 136, 83, 215, 42, 111, 98, 200, 143, 91, 113, 216, 44, 96, 160, 192, 124, 121, 1, 120, 58, 161, 48, 105, 232, 31, 223, 78, 198, 180, 144, 234, 237, 123, 144, 109, 6, 15, 216, 89, 71, 237, 165, 223, 8, 180, 162, 186, 42, 64, 52, 25, 46, 128, 11, 232, 119, 207, 217, 59, 112, 227, 15, 37, 128, 181, 76, 23, 250, 231, 187, 149, 56, 21, 87, 15, 186, 21, 23, 239, 36, 148, 89, 254, 26, 132, 243, 161, 213, 152, 159, 158, 128, 193, 215, 124, 191, 244, 11, 122, 164, 132, 194, 86, 234, 118, 33, 123, 247, 167, 56, 29, 158, 182, 12, 140, 168, 129, 80, 208, 75, 140, 128, 235, 51, 207, 8, 92, 71, 97, 187, 122, 195, 202, 91, 168, 151, 185, 105, 31, 88, 4, 69, 195, 254, 148, 218, 13, 247, 174, 232, 181, 145, 17, 49, 5, 84, 3, 235, 218, 122, 123, 166, 223, 35, 164, 28, 60, 148, 155, 100, 240, 172, 232, 211, 157, 183, 107, 248, 125, 225, 90, 13, 102, 9, 26, 73, 129, 37, 101, 254, 75, 43, 38, 162, 225, 70, 210, 151, 201, 107, 223, 209, 215, 207, 113, 149, 116, 28, 117, 48, 226, 17, 117, 190, 5, 196, 10, 226, 164, 212, 141, 104, 73, 104, 34, 11, 114, 239, 38, 20, 39, 116, 192, 218, 142, 249, 87, 174, 243, 89, 94, 45, 206, 199, 43, 166, 167, 17, 53, 253, 140, 25, 133, 100, 17, 167, 128, 9, 157, 144, 143, 17, 66, 41, 210, 224, 206, 208, 229, 231, 47, 148, 165, 221, 137, 123, 254, 92, 5, 9, 146, 126, 195, 90, 38, 90, 228, 168, 104, 37, 79, 242, 56, 162, 59, 160, 247, 249, 227, 214, 252, 96, 145, 104, 225, 42, 33, 44, 150, 13, 215, 27, 214, 84, 198, 19, 145, 75, 134, 230, 47, 113, 124, 157, 42, 123, 119, 108, 215, 117, 67, 83, 52, 202, 20, 243, 127, 50, 156, 169, 244, 122, 205, 180, 36, 207, 45, 90, 28, 178, 220, 178, 175, 70, 251, 40, 47, 247, 252, 107, 46, 2, 195, 93, 208, 191, 33, 53, 184, 210, 162, 8, 212, 76, 32, 200, 86, 55, 153, 253, 251, 5, 125, 19, 178, 35, 41, 247, 250, 76, 10, 70, 61, 207, 208, 141, 62, 128, 186, 164, 82, 158, 52, 65, 152, 152, 14, 85, 3, 84, 236, 3, 202, 226, 14, 205, 129, 55, 39, 216, 61, 218, 204, 193, 238, 168, 56, 135, 228, 35, 55, 195, 36, 41, 73, 17, 157, 3, 195, 19, 176, 227, 35, 64, 82, 40, 119, 75, 208, 212, 122, 136, 215, 195, 205, 156, 95, 243, 50, 183, 29, 63, 169, 214, 104, 49, 189, 44, 156, 206, 227, 230, 205, 227, 164, 63, 14, 96, 43, 189, 168, 107, 196, 93, 36, 224, 245, 84, 6, 88, 178, 144, 153, 12, 163, 253, 146, 39, 123, 96, 106, 12, 90, 16, 180, 44, 7, 241, 75, 83, 52, 45, 94, 128, 148, 36, 69, 165, 8, 224, 29, 33, 124, 2, 185, 81, 57, 156, 193, 125, 158, 72, 141, 95, 238, 213, 93, 228, 6, 70, 73, 14, 43, 72, 112, 198, 120, 170, 66, 177, 216, 136, 177, 78, 243, 246, 22, 128, 25, 67, 168, 119, 8, 25, 253, 188, 219, 209, 84, 61, 178, 107, 87, 74, 244, 61, 151, 141, 251, 155, 4, 150, 216, 189, 102, 32, 108, 121, 245, 23, 186, 77, 137, 43, 236, 82, 192, 32, 193, 72, 31, 66, 21, 63, 139, 202, 212, 77, 139, 177, 172, 230, 124, 175, 67, 90, 6, 209, 127, 108, 78, 180, 26, 229, 228, 28, 234, 68, 73, 132, 88, 122, 111, 137, 222, 108, 185, 84, 87, 130, 187, 133, 5, 81, 139, 3, 182, 151, 207, 82, 200, 177, 232, 11, 225, 91, 105, 254, 140, 214, 6, 7, 129, 82, 108, 83, 57, 183, 21, 158, 137, 150, 104, 92, 196, 203, 219, 183, 245, 193, 193, 44, 177, 84, 23, 201, 68, 127, 12, 57, 68, 96, 15, 218, 176, 202, 169, 208, 129, 29, 56, 246, 38, 23, 229, 250, 62, 152, 127, 239, 94, 250, 97, 203, 234, 115, 214, 57, 225, 46, 69, 13, 147, 63, 159, 126, 60, 237, 167, 77, 87, 218, 84, 90, 167, 169, 0, 128, 44, 174, 216, 218, 205, 56, 186, 70, 159, 125, 65, 175, 129, 65, 29, 145, 142, 70, 213, 167, 156, 155, 71, 113, 110, 148, 206, 98, 119, 160, 38, 116, 171, 109, 55, 34, 167, 64, 28, 234, 232, 222, 223, 223, 158, 195, 13, 105, 181, 96, 39, 82, 108, 253, 23, 5, 106, 193, 243, 136, 35, 40, 109, 242, 89, 77, 181, 55, 64, 113, 144, 237, 112, 73, 173, 124, 197, 161, 131, 108, 223, 116, 11, 187, 233, 54, 33, 96, 85, 195, 5, 74, 247, 209, 110, 101, 9, 53, 196, 137, 20, 29, 202, 48, 14, 149, 152, 33, 231, 4, 162, 145, 7, 255, 127, 77, 146, 175, 198, 18, 90, 63, 182, 14, 63, 157, 192, 217, 224, 210, 102, 93, 253, 105, 106, 53, 229, 105, 194, 199, 64, 243, 182, 248, 195, 216, 130, 238, 183, 111, 8, 127, 239, 220, 217, 231, 79, 122, 205, 143, 114, 172, 46, 194, 21, 223, 35, 78, 116, 254, 253, 2, 176, 46, 4, 74, 139, 65, 230, 225, 244, 231, 222, 145, 3, 244, 48, 233, 110, 176, 243, 97, 72, 169, 214, 225, 231, 91, 205, 128, 34, 223, 205, 216, 52, 240, 152, 95, 38, 159, 141, 234, 8, 225, 75, 59, 114, 142, 73, 91, 232, 196, 12, 93, 249, 35, 195, 52, 85, 119, 108, 163, 7, 175, 126, 13, 165, 177, 67, 209, 46, 18, 201, 103, 213, 169, 76, 35, 180, 163, 139, 201, 213, 49, 235, 48, 57, 25, 147, 4, 208, 60, 217, 23, 247, 251, 48, 189, 233, 41, 38, 19, 29, 196, 105, 227, 14, 201, 55, 152, 176, 193, 2, 206, 131, 164, 184, 9, 55, 173, 188, 22, 132, 178, 0, 172, 67, 126, 8, 98, 160, 91, 236, 125, 34, 201, 250, 224, 197, 156, 161, 231, 140, 2, 242, 147, 241, 113, 231, 9, 33, 176, 60, 159, 137, 205, 143, 94, 69, 103, 92, 136, 93, 234, 94, 32, 176, 60, 196, 161, 235, 79, 173, 28, 112, 160, 182, 219, 116, 148, 11, 170, 214, 247, 137, 78, 116, 45, 123, 26, 105, 227, 76, 20, 213, 204, 227, 50, 231, 181, 81, 62, 212, 31, 119, 126, 139, 141, 92, 252, 94, 197, 211, 75, 136, 5, 32, 175, 76, 111, 216, 8, 61, 147, 255, 87, 164, 11, 96, 117, 229, 16, 139, 155, 227], segment_lens = [954, 1788, 1925, 24, 247, 723, 1047, 236, 1802, 1483, 389, 318], resent_lens = [0], directions = [false, true, false, true, true, true, true, false, true, false, false, false, false, false, true, false, false, true], fins = [true, false], extra_acks = 26, keep_alives = [(Initiator, Index(5270498306774157605)), (Responder, Index(12297829382473034411))], lost = [(Index(5501660513211620658), Some(Index(9684540638697514599))), (Index(8090677225311206850), None), (Index(12188027334415239461), None), (Index(0), None), (Index(5465701947765793072), Some(Index(437788390747894090))), (Index(4842254793178998022), None), (Index(10910139850339250644), None), (Index(11156963601870940126), None), (Index(17882598055500308155), None), (Index(4704425916100048301), Some(Index(6840601688751209508))), (Index(3158179117597845089), Some(Index(4010653570749496502)))], windows = [2527, 65535, 133, 2301, 3, 31, 2611, 2757, 6508, 3806, 1969, 6917, 5292], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 16, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [807, 494, 2344, 2825, 2720, 2822, 1713, 2658, 2492, 2929, 941, 99, 994, 2137, 2094, 1331, 2865, 397, 1181, 602, 1681, 1663, 651], acked_reads = [true, true, true, true, false, true, true, false, true, false, false, true, false, false, false, false, false, true, true, true, false, false, false] +cc 6723652ec1a1c91256b5425f664c8cfb6e461c36663aa0fc5fc62937cc9fea81 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119], segment_lens = [1, 1], resent_lens = [0], directions = [true], fins = [false, false], extra_acks = 0, keep_alives = [(Initiator, Index(1799156817234337930))], lost = [], windows = [1, 1, 1, 6178], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 1, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [1], acked_reads = [false] +cc 438c7a936c693815976afa7ef1e7acdc4e6af4212d415fbf3bf908df515c2993 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5], segment_lens = [65, 579, 1219, 343, 1550], resent_lens = [0], directions = [false, false, true, false, false, false, true, true, false, true, true, false, false, true], fins = [false, false], pickup = Index(9592306918328966841), late = [(Index(12770822820260458812), 1)], delays = [0, 3, 0, 1], windows = [1], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0, 0, 579], acked_reads = [false] +cc 7aa04344d10143b01af7c2605ce49da13a4d7f0fac79633e198ee918af74af9b # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198], segment_lens = [608, 581], resent_lens = [0], directions = [false, false, false, false, false, true, true], fins = [true, true], pickup = Index(11901125208844872011), late = [(Index(0), 9)], delays = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], windows = [1], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc e83d85e9c547381dfb989a38bc7a2e1f4a9f1f4c047597c79423da62738d9d2c # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101], segment_lens = [1429, 1887, 544, 175], resent_lens = [0], directions = [false, false], fins = [true, false], pickup = Index(10061860403841573609), late = [(Index(15372286728091293014), 3)], delays = [0, 0, 0, 0], windows = [1], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0, 0], acked_reads = [false] +cc 0fea58399cefd2726d5b5ac5e63e2a4d785af5a0364200f725f7ad44675053b1 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24, 246, 141, 209, 78, 197, 115, 105, 157, 192, 205, 51, 123, 219, 195, 194, 120, 214, 70, 97, 161, 181, 123, 76, 123, 42, 33, 98, 67, 67, 107, 192, 172, 70, 215, 250, 174, 44, 18, 107, 252, 58, 71, 169, 225, 21, 228, 99, 224, 186, 120, 145, 216, 136, 47, 202, 131, 124, 129, 211, 34, 6, 136, 49, 3, 215, 78, 208, 138, 216, 82, 111, 206, 58, 54, 115, 58, 176, 150, 172, 217, 175, 60, 111, 86, 78, 5, 103, 208, 183, 236, 108, 1, 50, 142, 216, 85, 146, 107, 21, 199, 71, 236, 129, 118, 117, 135, 180, 85, 180, 213, 107, 139, 108, 84, 188, 50, 24, 207, 130, 118, 201, 59, 25, 25, 225, 145, 231, 255, 127, 246, 111, 51, 65, 69, 3, 152, 54, 196, 63, 179, 204, 2, 161, 200, 69, 217, 236, 14, 230, 236, 212, 211, 240, 239, 39, 202, 51, 136, 52, 199, 248, 27, 222, 229, 172, 195, 221, 244, 245, 13, 20, 135, 125, 44, 26, 3, 152, 110, 39, 225, 82, 49, 216, 238, 101, 225, 120, 215, 147, 44, 118, 177, 1, 62, 222, 181, 95, 14, 172, 181, 7, 107, 152, 77, 23, 196, 96, 153, 127, 62, 17, 242, 120, 156, 253, 208, 94, 52, 197, 254, 158, 138, 140, 5, 217, 124, 234, 228, 232, 12, 149, 32, 28, 153, 66, 193, 15, 124, 70, 51, 120, 99, 169, 238, 16, 42, 59, 253, 213, 224, 216, 244, 181, 45, 243, 45, 190, 59, 91, 229, 124, 55, 209, 235, 55, 207, 22, 247, 108, 3, 165, 150, 235, 28, 223, 153, 134, 64, 18, 93, 213, 121, 169, 177, 221, 7, 22, 135, 165, 117, 247, 238, 166, 34, 125, 114, 12, 175, 66, 236, 49, 188, 96, 180, 246, 200, 239, 68, 181, 191, 138, 136, 15, 54, 38, 15, 84, 238, 142, 105, 177, 14, 254, 51, 218, 60, 220, 135, 222, 28, 53, 230, 232, 218, 140, 171, 126, 167, 19, 249, 44, 48, 132, 251, 15, 193, 128, 247, 22, 43, 76, 130, 84, 30, 23, 114, 171, 65, 231, 217, 119, 175, 151, 235, 235, 247, 50, 4, 33, 38, 215, 75, 222, 88, 97, 138, 154, 243, 16, 191, 142, 145, 98, 249, 72, 249, 67, 30, 33, 52, 6, 190, 74, 83, 228, 213, 142, 169, 48, 214, 131, 215, 10, 179, 177, 46, 6, 40, 170, 121, 54, 151, 202, 76, 32, 236, 222, 128, 209, 109, 177, 150, 165, 141, 131, 195, 180, 168, 249, 171, 168, 17, 101, 36, 82, 157, 155, 59, 86, 81, 213, 29, 4, 210, 190, 2, 66, 95, 195, 158, 73, 94, 49, 244, 140, 222, 136, 178, 80, 110, 87, 195, 163, 237, 230, 128, 78, 146, 188, 80, 85, 61, 47, 160, 28, 44, 154, 183, 72, 54, 205, 145, 88, 42, 94, 31, 46, 169, 98, 242, 210, 22, 215, 234, 201, 106, 180, 253, 133, 80, 125, 236, 132, 152, 52, 7, 226, 89, 125, 165, 48, 119, 81, 102, 20, 138, 218, 31, 78, 134, 128, 20, 205, 204, 33, 22, 131, 146, 11, 15, 130, 70, 157, 183, 121, 139, 240, 167, 217, 220, 176, 72, 115, 224, 64, 13, 52, 211, 205, 58, 22, 98, 119, 225, 80, 182, 250, 141, 78, 138, 249, 202, 13, 117, 5, 29, 44, 159, 61, 123, 36, 107, 20, 211, 155, 205, 97, 66, 85, 64, 244, 142, 46, 90, 174, 125, 70, 48, 35, 215, 197, 124, 211, 249, 211, 170, 86, 127, 70, 132, 200, 1, 4, 48, 115, 170, 147, 85, 3, 6, 24, 119, 122, 40, 48, 226, 55, 254, 15, 93, 244, 38, 148, 238, 145, 43, 170, 203, 70, 59, 96, 158, 162, 63, 121, 184, 63, 153, 146, 235, 237, 77, 118, 0, 207, 2, 177, 224, 195, 41, 184, 89, 188, 109, 133, 103, 126, 44, 55, 41, 88, 124, 61, 241, 22, 154, 139, 172, 145, 59, 153, 188, 131, 76, 172, 93, 123, 236, 27, 37, 32, 27, 117, 69, 134, 123, 203, 7, 169, 95, 195, 199, 198, 217, 239, 78, 202, 211, 5, 46, 64, 85, 108, 229, 178, 17, 245, 67, 14, 30, 165, 125, 155, 205, 121, 36, 223, 254, 228, 75, 146, 11, 27, 11, 34, 172, 35, 111, 137, 162, 55, 53, 126, 227, 66, 160, 215, 1, 133, 208, 84, 51, 10, 104, 105, 206, 11, 179, 238, 165, 160, 46, 180, 221, 104, 112, 238, 110, 13, 69, 135, 126, 210, 98, 176, 43, 176, 176, 137, 90, 81, 141, 79, 254, 223, 206, 95, 230, 104, 89, 104, 124, 83, 178, 245, 202, 73, 194, 31, 122, 227, 201, 131, 107, 240, 104, 248, 106, 209, 171, 18, 6, 168, 183, 215, 66, 5, 251, 82, 0, 209, 190, 247, 52, 191, 30, 85, 237, 226, 169, 150, 62, 103, 116, 244, 250, 34, 131, 153, 111, 52, 17, 105, 231, 9, 117, 56, 1, 76, 185, 204, 73, 79, 215, 15, 6, 197, 68, 221, 39, 26, 124, 148, 66, 155, 223, 49, 74, 157, 111, 44, 17, 230, 203, 154, 13, 59, 152, 222, 17, 247, 142, 47, 137, 193, 234, 134, 233, 247, 179, 125, 227, 230, 241, 122, 84, 172, 255, 151, 83, 163, 237, 174, 105, 180, 44, 197, 112, 120, 224, 212, 147, 241, 6, 219, 71, 245, 110, 219, 238, 179, 247, 76, 231, 86, 142, 99, 161, 231, 42, 162, 177, 191, 246, 132, 119, 186, 130, 76, 120, 69, 246, 201, 7, 63, 71, 152, 213, 49, 189, 188, 227, 216, 231, 147, 240, 249, 177, 170, 232, 179, 57, 85, 219, 194, 200, 188, 52, 107, 5, 58, 180, 140, 255, 76, 10, 136, 92, 94, 29, 188, 47, 57, 213, 234, 102, 47, 135, 66, 139, 249, 131, 190, 28, 121, 244, 20, 66, 85, 22, 123, 50, 139, 100, 178, 16, 19, 11, 172, 57, 89, 206, 241, 119, 224, 91, 14, 61, 217, 179, 172, 156, 64, 161, 183, 140, 211, 51, 145, 41, 168, 126, 93, 115, 214, 160, 158, 180, 113, 232, 217, 228, 64, 134, 215, 253, 40, 153, 132, 54, 107, 5, 199, 17, 176, 12, 136, 221, 253, 123, 252, 167, 210, 232, 141, 177, 149, 114, 229, 118, 111, 218, 254, 12, 9, 163, 97, 138, 171, 61, 213, 45, 121, 249, 163, 191, 231, 119, 115, 122, 63, 215, 18, 174, 146, 119, 98, 91, 102, 185, 246, 118, 156, 11, 15, 250, 123, 160, 82, 150, 11, 11, 148, 170, 79, 194, 172, 156, 114, 185, 50, 43, 172, 66, 86, 199, 16, 234, 235, 109, 183, 57, 146, 11, 43, 205, 110, 231, 106, 36, 223, 141, 170, 72, 81, 48, 227, 85, 165, 54, 17, 59, 0, 29, 185, 171, 195, 149, 234, 55, 44, 57, 133, 84, 176, 230, 217, 175, 135, 169, 250, 127, 150, 117, 32, 165, 85, 180, 87, 212, 82, 238, 124, 98, 103, 97, 146, 239, 26, 86, 253, 153, 245, 235, 65, 108, 188, 72, 227, 143, 195, 251, 244, 181, 64, 184, 199, 129, 160, 126, 99, 139, 35, 194, 208, 12, 184, 198, 196, 112, 195, 175, 165, 98, 200, 68, 117, 86, 26, 151, 107, 60, 251, 226, 242, 26, 22, 54, 179, 195, 245, 44, 41, 68, 115, 227, 110, 242, 63, 229, 4, 231, 229, 98, 149, 174, 78, 114, 73, 47, 250, 253, 182, 101, 1, 48, 39, 46, 65, 45, 63, 24, 230, 180, 34, 223, 227, 151, 187, 36, 154, 159, 123, 45, 0, 195, 198, 217, 87, 181, 233, 107, 185, 203, 19, 70, 241, 158, 108, 121, 72, 102, 112, 10, 63, 248, 39, 29, 194, 173, 27, 9, 0, 136, 131, 30, 50, 77, 184, 153, 183, 35, 154, 18, 105, 202, 125, 253, 189, 216, 146, 31, 25, 145, 136, 23, 193, 203, 240, 220, 217, 37, 87, 215, 222, 111, 111, 222, 44, 62, 238, 181, 10, 1, 70, 13, 148, 31, 171, 63, 210, 95, 13, 61, 46, 224, 143, 3, 187, 82, 37, 71, 120, 228, 205, 213, 201, 138, 236, 148, 13, 239, 99, 142, 247, 217, 122, 176, 241, 11, 202, 0, 143, 111, 168, 60, 153, 203, 233, 111, 205, 60, 140, 26, 69, 197, 235, 182, 184, 235, 111, 13, 114, 62, 192, 236, 147, 16, 16, 194, 107, 110, 3, 183, 31, 201, 81, 251, 244, 36, 163, 28, 29, 125, 250, 126, 46, 218, 219, 206, 54, 93, 52, 184, 95, 165, 60, 44, 58, 133, 1, 0, 190, 14, 167, 200, 63, 202, 201, 6, 132, 220, 216, 79, 55, 46, 77, 11, 166, 115, 170, 36, 125, 51, 168, 28, 48, 85, 38, 69, 151, 182, 136, 79, 247, 88, 20, 63, 153, 65, 202, 252, 132, 73, 78, 135, 1, 129, 14, 250, 143, 30, 206, 59, 104, 85, 78, 29, 44, 51, 177, 3, 130, 237, 59, 181, 20, 172, 82, 246, 165, 45, 28, 225, 17, 43, 88, 192, 123, 254, 90, 242, 35, 19, 171, 198, 170, 94, 195, 86, 41, 160, 219, 148, 223, 8, 157, 238, 111, 77, 228, 46, 86, 195, 21, 78, 255, 126, 43, 188, 80, 213, 24, 145, 183, 37, 127, 148, 245, 215, 9, 67, 109, 185, 18, 133, 20, 255, 94, 77, 220, 172, 118, 215, 81, 66, 44, 48, 192, 184, 219, 252, 217, 136, 226, 112, 101, 225, 27, 182, 122, 53, 8, 42, 242, 250, 206, 87, 59, 66, 203, 182, 205, 241, 199, 236, 30, 108, 152, 90, 134, 44, 164, 130, 223, 5, 174, 92, 89, 126, 218, 44, 169, 194, 255, 99, 76, 55, 102, 43, 239, 27, 176, 174, 157, 145, 169, 198, 112, 227, 79, 43, 239, 20, 127, 7, 14, 10, 228, 88, 28, 254, 136, 78, 20, 141, 168, 19, 142, 115, 36, 35, 113, 97, 136, 173, 165, 64, 209, 145, 130, 92, 63, 65, 198, 57, 141, 211, 21, 192, 87, 52, 249, 15, 49, 194, 35, 24, 216, 107, 245, 70, 241, 217, 197, 9, 251, 108, 180, 162, 20, 5, 147, 19, 90, 133, 212, 17, 154, 111, 101, 121, 156, 178, 150, 88, 79, 242, 112, 209, 165, 15, 131, 91, 11, 142, 158, 173, 66, 89, 142, 213, 146, 218, 141, 248, 188, 212, 33, 255, 183, 248, 165, 207, 66, 139, 209, 54, 91, 214, 175, 40, 129, 179, 71, 25, 157, 196, 252, 120, 170, 23, 247, 102, 165, 176, 69, 204, 37, 25, 215, 122, 229, 63, 57, 159, 146, 38, 42, 72, 129, 64, 136, 175, 13, 179, 210, 118, 154, 120, 219, 193, 43, 178, 92, 33, 138, 218, 2, 166, 18, 222, 127, 232, 210, 175, 178, 244, 223, 122, 62, 214, 255, 241, 242, 195, 44, 12, 9, 221, 189, 111, 178, 66, 226, 38, 41, 219, 41, 200, 136, 83, 215, 42, 111, 98, 200, 143, 91, 113, 216, 44, 96, 160, 192, 124, 121, 1, 120, 58, 161, 48, 105, 232, 31, 223, 78, 198, 180, 144, 234, 237, 123, 144, 109, 6, 15, 216, 89, 71, 237, 165, 223, 8, 180, 162, 186, 42, 64, 52, 25, 46, 128, 11, 232, 119, 207, 217, 59, 112, 227, 15, 37, 128, 181, 76, 23, 250, 231, 187, 149, 56, 21, 87, 15, 186, 21, 23, 239, 36, 148, 89, 254, 26, 132, 243, 161, 213, 152, 159, 158, 128, 193, 215, 124, 191, 244, 11, 122, 164, 132, 194, 86, 234, 118, 33, 123, 247, 167, 56, 29, 158, 182, 12, 140, 168, 129, 80, 208, 75, 140, 128, 235, 51, 207, 8, 92, 71, 97, 187, 122, 195, 202, 91, 168, 151, 185, 105, 31, 88, 4, 69, 195, 254, 148, 218, 13, 247, 174, 232, 181, 145, 17, 49, 5, 84, 3, 235, 218, 122, 123, 166, 223, 35, 164, 28, 60, 148, 155, 100, 240, 172, 232, 211, 157, 183, 107, 248, 125, 225, 90, 13, 102, 9, 26, 73, 129, 37, 101, 254, 75, 43, 38, 162, 225, 70, 210, 151, 201, 107, 223, 209, 215, 207, 113, 149, 116, 28, 117, 48, 226, 17, 117, 190, 5, 196, 10, 226, 164, 212, 141, 104, 73, 104, 34, 11, 114, 239, 38, 20, 39, 116, 192, 218, 142, 249, 87, 174, 243, 89, 94, 45, 206, 199, 43, 166, 167, 17, 53, 253, 140, 25, 133, 100, 17, 167, 128, 9, 157, 144, 143, 17, 66, 41, 210, 224, 206, 208, 229, 231, 47, 148, 165, 221, 137, 123, 254, 92, 5, 9, 146, 126, 195, 90, 38, 90, 228, 168, 104, 37, 79, 242, 56, 162, 59, 160, 247, 249, 227, 214, 252, 96, 145, 104, 225, 42, 33, 44, 150, 13, 215, 27, 214, 84, 198, 19, 145, 75, 134, 230, 47, 113, 124, 157, 42, 123, 119, 108, 215, 117, 67, 83, 52, 202, 20, 243, 127, 50, 156, 169, 244, 122, 205, 180, 36, 207, 45, 90, 28, 178, 220, 178, 175, 70, 251, 40, 47, 247, 252, 107, 46, 2, 195, 93, 208, 191, 33, 53, 184, 210, 162, 8, 212, 76, 32, 200, 86, 55, 153, 253, 251, 5, 125, 19, 178, 35, 41, 247, 250, 76, 10, 70, 61, 207, 208, 141, 62, 128, 186, 164, 82, 158, 52, 65, 152, 152, 14, 85, 3, 84, 236, 3, 202, 226, 14, 205, 129, 55, 39, 216, 61, 218, 204, 193, 238, 168, 56, 135, 228, 35, 55, 195, 36, 41, 73, 17, 157, 3, 195, 19, 176, 227, 35, 64, 82, 40, 119, 75, 208, 212, 122, 136, 215, 195, 205, 156, 95, 243, 50, 183, 29, 63, 169, 214, 104, 49, 189, 44, 156, 206, 227, 230, 205, 227, 164, 63, 14, 96, 43, 189, 168, 107, 196, 93, 36, 224, 245, 84, 6, 88, 178, 144, 153, 12, 163, 253, 146, 39, 123, 96, 106, 12, 90, 16, 180, 44, 7, 241, 75, 83, 52, 45, 94, 128, 148, 36, 69, 165, 8, 224, 29, 33, 124, 2, 185, 81, 57, 156, 193, 125, 158, 72, 141, 95, 238, 213, 93, 228, 6, 70, 73, 14, 43, 72, 112, 198, 120, 170, 66, 177, 216, 136, 177, 78, 243, 246, 22, 128, 25, 67, 168, 119, 8, 25, 253, 188, 219, 209, 84, 61, 178, 107, 87, 74, 244, 61, 151, 141, 251, 155, 4, 150, 216, 189, 102, 32, 108, 121, 245, 23, 186, 77, 137, 43, 236, 82, 192, 32, 193, 72, 31, 66, 21, 63, 139, 202, 212, 77, 139, 177, 172, 230, 124, 175, 67, 90, 6, 209, 127, 108, 78, 180, 26, 229, 228, 28, 234, 68, 73, 132, 88, 122, 111, 137, 222, 108, 185, 84, 87, 130, 187, 133, 5, 81, 139, 3, 182, 151, 207, 82, 200, 177, 232, 11, 225, 91, 105, 254, 140, 214, 6, 7, 129, 82, 108, 83, 57, 183, 21, 158, 137, 150, 104, 92, 196, 203, 219, 183, 245, 193, 193, 44, 177, 84, 23, 201, 68, 127, 12, 57, 68, 96, 15, 218, 176, 202, 169, 208, 129, 29, 56, 246, 38, 23, 229, 250, 62, 152, 127, 239, 94, 250, 97, 203, 234, 115, 214, 57, 225, 46, 69, 13, 147, 63, 159, 126, 60, 237, 167, 77, 87, 218, 84, 90, 167, 169, 0, 128, 44, 174, 216, 218, 205, 56, 186, 70, 159, 125, 65, 175, 129, 65, 29, 145, 142, 70, 213, 167, 156, 155, 71, 113, 110, 148, 206, 98, 119, 160, 38, 116, 171, 109, 55, 34, 167, 64, 28, 234, 232, 222, 223, 223, 158, 195, 13, 105, 181, 96, 39, 82, 108, 253, 23, 5, 106, 193, 243, 136, 35, 40, 109, 242, 89, 77, 181, 55, 64, 113, 144, 237, 112, 73, 173, 124, 197, 161, 131, 108, 223, 116, 11, 187, 233, 54, 33, 96, 85, 195, 5, 74, 247, 209, 110, 101, 9, 53, 196, 137, 20, 29, 202, 48, 14, 149, 152, 33, 231, 4, 162, 145, 7, 255, 127, 77, 146, 175, 198, 18, 90, 63, 182, 14, 63, 157, 192, 217, 224, 210, 102, 93, 253, 105, 106, 53, 229, 105, 194, 199, 64, 243, 182, 248, 195, 216, 130, 238, 183, 111, 8, 127, 239, 220, 217, 231, 79, 122, 205, 143, 114, 172, 46, 194, 21, 223, 35, 78, 116, 254, 253, 2, 176, 46, 4, 74, 139, 65, 230, 225, 244, 231, 222, 145, 3, 244, 48, 233, 110, 176, 243, 97, 72, 169, 214, 225, 231, 91, 205, 128, 34, 223, 205, 216, 52, 240, 152, 95, 38, 159, 141, 234, 8, 225, 75, 59, 114, 142, 73, 91, 232, 196, 12, 93, 249, 35, 195, 52, 85, 119, 108, 163, 7, 175, 126, 13, 165, 177, 67, 209, 46, 18, 201, 103, 213, 169, 76, 35, 180, 163, 139, 201, 213, 49, 235, 48, 57, 25, 147, 4, 208, 60, 217, 23, 247, 251, 48, 189, 233, 41, 38, 19, 29, 196, 105, 227, 14, 201, 55, 152, 176, 193, 2, 206, 131, 164, 184, 9, 55, 173, 188, 22, 132, 178, 0, 172, 67, 126, 8, 98, 160, 91, 236, 125, 34, 201, 250, 224, 197, 156, 161, 231, 140, 2, 242, 147, 241, 113, 231, 9, 33, 176, 60, 159, 137, 205, 143, 94, 69, 103, 92, 136, 93, 234, 94, 32, 176, 60, 196, 161, 235, 79, 173, 28, 112, 160, 182, 219, 116, 148, 11, 170, 214, 247, 137, 78, 116, 45, 123, 26, 105, 227, 76, 20, 213, 204, 227, 50, 231, 181, 81, 62, 212, 31, 119, 126, 139, 141, 92, 252, 94, 197, 211, 75, 136, 5, 32, 175, 76, 111, 216, 8, 61, 147, 255, 87, 164, 11, 96, 117, 229, 16, 139, 155, 227, 75, 51, 63, 229, 28, 21, 61, 108, 34, 96, 105, 141, 205, 132, 30, 136, 231, 102, 142, 12, 140, 186, 10, 185, 109, 240, 93, 76, 90, 252, 144, 203, 135, 215, 100, 50, 10, 185, 199, 185, 71, 80, 79, 146, 86, 249, 53, 132, 54, 107, 235, 131, 10, 244, 235, 50, 174, 61, 120, 182, 194, 80, 34, 41, 191, 34, 79, 82, 54, 137, 205, 27, 248, 17, 135, 29, 150, 239, 229, 193], segment_lens = [824, 122], resent_lens = [621, 282, 655, 620, 509, 245, 926, 157, 620, 996, 864, 199, 376, 261, 982, 184, 492, 798, 552, 846, 973, 193, 858], directions = [false, false, true, false, true, true, true, true, false, false, false, true, true, false, true, false, true, false, false, false, false, true, true, true, true, false, false, true, false, false, true, true, false, false, false, false, true, true, false, false, true, false, true, true, false, false, false, true, false, true, false, false, false, true, true, false, true, true, false, true, false, true, true], fins = [false, true], pickup = Index(13588154912831445457), late = [(Index(1549884801839602718), 8), (Index(5283728441223443104), 4), (Index(5667936546643640863), 10), (Index(13870583739923080716), 12), (Index(9347314612275096432), 2)], keep_alives = [(Responder, Index(1937394207830421307))], delays = [3, 1, 1, 0, 3, 0, 2, 2, 0, 0, 2, 0, 1, 2, 3, 1, 0, 0, 1, 3, 3, 2], windows = [65535, 3578, 7349, 230, 5581, 689], fallback_window = 6315, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 11, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [2925, 1362, 1937, 0, 0, 1894, 0, 725, 2002, 0, 0, 0, 2055, 0, 2545, 0, 2208, 0, 2555, 0, 0, 1604, 0, 887, 0, 0, 0], acked_reads = [false, true, true, true, true] +cc cd33ea3ae124015acabb014731ca0b414c433dad6390277a3cc8f398ffba6da2 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252], segment_lens = [1, 1, 927, 623, 1783], resent_lens = [0], directions = [false, false, true], fins = [false, false], pickup = Index(10061860403841573609), late = [(Index(1537228672809129302), 1)], keep_alives = [], delays = [3, 0], windows = [1], fallback_window = 64, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc ecd27c368faf155a99c1415e7d0bfb9670a27701d4e700df506a519c2aea3bd5 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106], segment_lens = [1038], resent_lens = [0, 0, 0, 0, 0], directions = [false], fins = [false, false], pickup = Index(1229782938247303442), late = [], keep_alives = [], delays = [0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0], windows = [1], fallback_window = 64, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 7ae974cfe4d82742bfc60677fc8fafc18a06db79a0c32903dbbb0ffc53c3a440 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253], segment_lens = [741, 1191, 944, 1, 258, 1133, 1073, 663, 313, 1250, 1366, 1769, 973, 544], resent_lens = [0], directions = [false, true, true, true, true, false, true, true, true, true, true], fins = [false, false], extra_acks = 14, keep_alives = [(Initiator, Index(4882961666570175428)), (Initiator, Index(4743448476096741845)), (Responder, Index(1024819115206086201))], lost = [(Index(3074457345618258603), None)], windows = [1, 1, 65535, 1, 1, 1], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 76cda2d51e1708e1ed15dd4b9882b0f778e7dd28f8a688e037cf0a6123c2eca9 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159], segment_lens = [1, 1129, 1, 1618, 1661, 661, 214, 309, 394], resent_lens = [0, 0, 0, 0, 0, 0, 0, 0], directions = [true, true, false, true, false], fins = [true, true], extra_acks = 5, keep_alives = [(Initiator, Index(2635249153387078803)), (Initiator, Index(5030930201920786805)), (Initiator, Index(4812194106185100422))], lost = [(Index(2406097053092550211), Some(Index(1844674407370955162))), (Index(2406097053092550211), Some(Index(11068046444225730970))), (Index(3208129404123400282), Some(Index(9708812674858538016))), (Index(2469243282776238064), None), (Index(394832387940241890), Some(Index(8745095027429621070)))], windows = [1864, 65535, 65535, 65535, 223, 65535, 65535, 65535, 4568, 199, 19, 65535, 65535], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: Some(3), fallback_window: 4194304, ack_reorder_tolerance: 23, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [820, 2288, 349, 2039, 785, 1726, 802, 1656], acked_reads = [true, true, false, true, false, false, false, false, true, true, true, true, true, false] +cc b6e51ae2cb2d0719363a6a7d5b0df691aee3800ec9e10b05ca37e757e9d35474 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45], segment_lens = [519, 1151, 1357, 1496, 1512, 1478, 494, 1568, 834, 201, 673, 631, 83, 1542, 742], resent_lens = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85], directions = [true, true, false, false, false, true, true, true, true, false, true, false], fins = [true, true], extra_acks = 12, keep_alives = [], lost = [(Index(8330787646191410408), None), (Index(6148914691236517206), None), (Index(0), None), (Index(0), None), (Index(15640229100502842), Some(Index(17672541091710700575))), (Index(3497122955696687961), None), (Index(8904942294334782786), None), (Index(13153597920275603612), None), (Index(419749790314629744), None)], windows = [14, 5177, 7911, 69], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: Some(2), fallback_window: 4194304, ack_reorder_tolerance: 5, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [446, 1396, 946, 1882, 1775, 2386, 769, 1758, 1832, 1615, 2083, 2793], acked_reads = [false, false, true, true, true, false, true] +cc ea8ff5240347da97f960b51eb46fe75dd644feefcd1df653931854936d8aca24 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41], segment_lens = [1163], resent_lens = [454, 470, 443, 550, 867, 330, 269, 598, 610, 534, 485, 371, 243, 481, 50, 566, 519, 475, 597, 945, 308], directions = [false, true, false, false, true, false, true, false, false, true, false, false, true, true, false, false, false, false, false, false, false, true, false, true, true, false, false, true, true, false, true, false, true, true, false, false, true, false, false, true, true, false, true, false, true, false, true, true, false, false, false, false, false, false, true, true, false, true, false, false], fins = [true, true], extra_acks = 25, keep_alives = [(Initiator, Index(4942544972819550173)), (Initiator, Index(2361129123545259979))], lost = [(Index(13509772251562216113), Some(Index(10612268443166481682))), (Index(3294362130719924147), Some(Index(4556742427225138184))), (Index(15990699131780712021), None), (Index(10983640183934691941), Some(Index(4677424795395766455))), (Index(13740689681242244711), None), (Index(14901983406884532654), Some(Index(7803904496634682018))), (Index(17837159648084782013), Some(Index(12578468920750515802))), (Index(6161693604632281563), None), (Index(8112137412013544799), None), (Index(3587346111651258196), Some(Index(16244969867323069174))), (Index(6571235642957080562), None), (Index(8237607420032597760), None), (Index(14884015873696546540), None)], windows = [855, 3107, 148], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: Some(1), fallback_window: 4194304, ack_reorder_tolerance: 8, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [792, 2810, 2659, 1170, 575], acked_reads = [false, false, true, true, false, false, false, false, false, true, true, false, false] +cc bf3b5f2d2faece863d47cdb64920b98c3893f3a88e43e3f10a0f97eb4a2e36f2 # shrinks to initiator_isn = 0, responder_isn = 0, before = [[20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107], [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105]], after = [[], [20]], jumps = [None, Some(3000)], segment_lens = [27, 33, 29, 31, 29, 188, 29, 1, 34, 166, 196, 91, 56, 69, 1, 28, 16, 103], directions = [false, false, true, true], fins = [false, false], one_direction = false, window = 200, resync_after_segments = None, delays = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], actions = [None], consume_lens = [0], acked_reads = [false] +cc 2d9600c954e5f4e4ec17783460122d3c2cb8a1d8f35775a1d3e2a9a2beeed3c6 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17], segment_lens = [1465, 61], resent_lens = [0], directions = [false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], fins = [false, false], pickup = Index(636094623231363849), late = [(Index(0), 3)], keep_alives = [(Responder, Index(614891469123651721)), (Initiator, Index(2380225041768974403))], delays = [0, 0, 0, 0, 0, 2], windows = [1, 1, 1, 1, 1, 1, 1], fallback_window = 64, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 6c28475d0e1839c61d5c476ec014732ebcfc3c8d00a655f42468e8355e6c7c96 # shrinks to initiator_isn = 0, responder_isn = 0, before = [[20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53], [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246]], after = [[20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243], [20]], jumps = [Some(3000), None], segment_lens = [71, 120, 90, 182, 85, 68, 163, 7, 186, 165, 107, 81, 15, 20, 93, 57, 80, 118], directions = [true, false, true, false], fins = [false, false], one_direction = false, window = 200, resync_after_segments = None, delays = Some([0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), actions = [None], consume_lens = [0], acked_reads = [false] +cc 02701b4df8e46ef8b1a5db7491d493391f38ef2856be65883d320acadc53d542 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201], segment_lens = [1863, 793, 1345, 316, 1201, 1422, 322, 1423, 86, 355, 1087, 1610, 1020, 581, 1624, 1131, 952, 1233, 1027, 150, 1907, 1202], resent_lens = [751, 62, 221, 368, 716], directions = [false, false, false, true, true, true, true, false, false, true, true, false, true, false, false, true, false, false, true, false, true, true, false, false, false, false, false, true, false, false, true], fins = [true, false], extra_acks = 12, keep_alives = [(Initiator, Index(8107645035902666616))], lost = [(Index(1716278726545383518), Some(Index(14448443097719467112))), (Index(4407459159055845879), Some(Index(12104549572328897130))), (Index(16283725862491952538), None), (Index(8915194294147267793), None), (Index(14140828167148210167), Some(Index(14869956881489490005))), (Index(8075855800612048771), Some(Index(5265168644005008167))), (Index(11199790681598396790), None), (Index(2194703871297490552), Some(Index(12699003926118227662))), (Index(13364009321327408487), Some(Index(16278645492545798395))), (Index(6282974855631369189), None), (Index(14469795640221810157), Some(Index(11680691095713359537)))], windows = [64, 65535, 226, 112, 4840, 10, 3683, 3011, 80], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 4, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [703, 1446, 187, 2986, 1515, 2831, 974, 2627, 1896, 1353, 1538, 280, 2647, 1993, 1800, 400, 1589, 642, 1418, 2914, 1689], acked_reads = [true, true, false, false, false, true] +cc 04fc772f98d44bab51303aed7521ce2035bd99497f094df38d02c2a13b828d12 # shrinks to initiator_isn = 0, responder_isn = 0, before = [[20], [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94]], after = [[20], [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94]], jumps = [None, None], segment_lens = [1], directions = [false], fins = [false, false], pickup = false, one_direction = false, lost = [], injected = [(Initiator, Index(9140774675330703189), 1559, [0]), (Initiator, Index(9168471012825878333), 2272, [0])], window = 200, resync_after_segments = Some(2), delays = None, actions = [None], consume_lens = [0], acked_reads = [false] +cc 46ea681b155aea25ba32807f4c570f61a007b0eaf46c61dc6935543d5588e67e # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181, 202, 207, 106, 146, 60, 148, 19, 25, 155, 100, 200, 251, 103, 142, 198, 102, 22, 223, 196, 20, 23, 14, 39, 37, 81, 156, 160, 154, 197, 57, 201, 215, 19, 25, 98, 227, 184, 80, 161, 24, 173, 36, 143, 29, 91, 66, 63, 123, 140, 26, 202, 148, 33, 95, 155, 252, 22, 190, 60, 74, 248, 134, 25, 180, 245, 160, 240, 87, 178, 62, 182, 103, 57, 93, 246, 192, 34, 178, 30, 134, 151, 150, 1, 77, 171, 139, 80, 130, 156, 142, 180, 202, 6, 138, 2, 5, 41, 62, 28, 163, 163, 88, 12, 249, 21, 247, 8, 10, 73, 208, 12, 187, 120, 184, 62, 101, 44, 110, 229, 187, 8, 169, 31, 215, 93, 229, 11, 242, 12, 168, 150, 189, 90, 159, 250, 28, 165, 190, 254, 152, 92, 220, 52, 22, 17, 123, 7, 168, 158, 189, 204, 191, 84, 136, 36, 57, 0, 62, 85, 161, 189, 169, 84, 134, 1, 81, 191, 48, 139, 204, 76, 64, 89, 10, 140, 214, 22, 139, 218, 235, 228, 11, 181, 162, 169, 38, 123, 30, 255, 124, 71, 80, 37, 204, 6, 174, 192, 228, 214, 122, 247, 240, 189, 90, 197, 115, 11, 126, 71, 146, 46, 243, 104, 218, 67, 83, 74, 183, 216, 117, 102, 3, 221, 57, 27, 207, 93, 123, 224, 253, 202, 218, 62, 202, 54, 238, 128, 138, 4, 209, 216, 98, 38, 171, 113, 4, 57, 75, 233, 149, 180, 216, 158, 61, 228, 25, 209, 69, 83, 68, 251, 108, 71, 63, 242, 140, 176, 95, 17, 153, 222, 24, 76, 155, 183, 23, 63, 96, 123, 33, 250, 89, 242, 95, 71, 53, 239, 44, 219, 169, 41, 49, 116, 6, 31, 127, 93, 223, 52, 36, 15, 221, 56, 51, 27, 7, 29, 119, 251, 9, 121, 67, 51, 179, 81, 207, 60, 133, 68, 45, 104, 118, 54, 58, 121, 51, 150, 109, 243, 204, 9, 173, 14, 116, 184, 62, 255, 20, 105, 187, 94, 195, 2, 163, 105, 122, 65, 145, 141, 158, 165, 62, 145, 241, 137, 108, 193, 11, 69, 57, 109, 102, 156, 202, 181, 144, 235, 240, 5, 183, 100, 215, 30, 117, 238, 143, 194, 109, 247, 76, 84, 61, 189, 138, 78, 226, 224, 29, 88, 74, 8, 145, 19, 141, 91, 159, 171, 64, 0, 89, 49, 90, 50, 108, 88, 55, 192, 188, 133, 67, 142, 41, 119, 193, 197, 12, 27, 208, 175, 1, 53, 109, 132, 79, 253, 66, 88, 200, 109, 171, 163, 82, 39, 185, 180, 209, 143, 34, 28, 45, 221, 197, 100, 118, 228, 76, 2, 20, 38, 50, 197, 247, 145, 35, 37, 87, 108, 229, 104, 52, 131, 177, 191, 177, 39, 30, 71, 207, 74, 191, 193, 191, 93, 61, 60, 219, 58, 144, 247, 244, 211, 133, 104, 239, 148, 106, 249, 188, 170, 7, 117, 17, 27, 174, 194, 44, 149, 217, 31, 46, 237, 17, 198, 226, 125, 206, 42, 41, 124, 206, 91, 197, 74, 110, 4, 112, 153, 223, 58, 108, 118, 164, 166, 94, 196, 110, 202, 239, 82, 184, 126, 160, 33, 239, 241, 156, 230, 20, 11, 139, 42, 145, 80, 38, 246, 198, 239, 18, 245, 46, 51, 75, 182, 50, 99, 163, 198, 130, 13, 245, 122, 239, 241, 192, 5, 242, 81, 194, 38, 254, 239, 31, 237, 192, 235, 172, 25, 210, 94, 148, 52, 235, 210, 15, 226, 73, 116, 254, 142, 155, 10, 132, 69, 241, 198, 147, 57, 15, 121, 59, 40, 216, 225, 197, 28, 207, 178, 244, 255, 248, 74, 94, 177, 231, 75, 48, 145, 148, 236, 176, 172, 247, 27, 153, 90, 187, 91, 48, 7, 217, 116, 61, 238, 86, 90, 127, 88, 29, 140, 84, 217, 231, 207, 195, 147, 144, 49, 193, 140, 64, 55, 93, 23, 192, 131, 111, 104, 90, 9, 91, 22, 127, 252, 119, 244, 184, 242, 238, 229, 41, 139, 151, 226, 98, 129, 180, 138, 8, 153, 87, 25, 97, 70, 117, 166, 178, 106, 36, 139, 184, 34, 84, 106, 163, 84, 168, 4, 27, 14, 17, 163, 144, 239, 143, 77, 199, 63, 127, 15, 79, 42, 3, 65, 114, 182, 87, 61, 146, 233, 18, 226, 76, 222, 89, 245, 153, 254, 64, 146, 188, 181, 240, 27, 209, 235, 248, 66, 5, 49, 164, 92, 65, 128, 198, 124, 158, 177, 139, 150, 185, 246, 125, 147, 179, 5, 55, 127, 228, 148, 123, 38, 34, 74, 192, 167, 68, 33, 175, 55, 173, 240, 16, 16, 29, 190, 25, 136, 129, 119, 133, 83, 83, 210, 16, 173, 35, 207, 201, 118, 107, 11, 215, 2, 246, 105, 187, 137, 11, 248, 65, 40, 200, 70, 192, 42, 221, 230, 211, 245, 196, 139, 155, 217, 246, 157, 243, 113, 74, 155, 43, 254, 99, 19, 199, 230, 240, 21, 44, 141, 107, 160, 168, 92, 70, 127, 59, 237, 236, 107, 29, 180, 48, 6, 26, 65, 224, 216, 102, 229, 81, 24, 111, 161, 253, 131, 52, 183, 45, 40, 243, 239, 136, 68, 52, 205, 17, 222, 88, 87, 148, 78, 6, 215, 230, 211, 215, 238, 86, 170, 68, 15, 157, 201, 158, 248, 99, 77, 168, 173, 47, 7, 101, 53, 139, 133, 185, 220, 91, 187, 127, 214, 7, 39, 7, 209, 209, 80, 70, 81, 157, 73, 57, 181, 86, 40, 15, 0, 18, 34, 245, 245, 6, 200, 128, 16, 227, 135, 153, 123, 254, 154, 170, 89, 240, 199, 231, 150, 175, 120, 147, 213, 103, 74, 83, 76, 211, 35, 149, 5, 92, 154, 155, 193, 42, 32, 18, 165, 171, 145, 121, 224, 197, 155, 155, 31, 46, 77, 89, 77, 203, 130, 77, 78, 208, 29, 2, 117, 198, 76, 50, 155, 129, 155, 120, 44, 32, 6, 1, 21, 39, 183, 63, 154, 218, 236, 245, 61, 219, 6, 27, 203, 250, 245, 233, 213, 163, 224, 218, 109, 67, 212, 250, 158, 224, 203, 11, 228, 98, 56, 176, 204, 232, 18, 123, 235, 211, 9, 78, 115, 123, 21, 148, 95, 121, 29, 163, 176, 44, 99, 34, 227, 218, 66, 21, 0, 165, 221, 246, 255, 171, 185, 64, 205, 84, 146, 86, 111, 141, 30, 243, 186, 4, 99, 125, 97, 230, 28, 66, 163, 180, 80, 158, 220, 90, 216, 32, 235, 176, 219, 138, 62, 114, 241, 157, 28, 17, 241, 233, 97, 124, 107, 136, 195, 132, 86, 182, 147, 1, 46, 192, 12, 131, 95, 253, 135, 68, 169, 175, 188, 120, 238, 196, 209, 112, 14, 29, 89, 92, 2, 47, 30, 3, 28, 172, 198, 21, 161, 37, 94, 157, 2, 33, 39, 111, 218, 18, 138, 152, 173, 42, 134, 102, 168, 111, 151, 185, 79, 18, 201, 85, 83, 177, 18, 27, 2, 148, 6, 60, 152, 84, 3, 232, 211, 124, 15, 247, 250, 31, 160, 60, 125, 50, 212, 95, 92, 20, 12, 95, 4, 170, 63, 4, 255, 159, 243, 230, 74, 155, 208, 251, 169, 136, 255, 58, 118, 167, 88, 85, 22, 115, 85, 61, 192, 65, 238, 36, 255, 222, 58, 155, 63, 92, 182, 31, 175, 66, 192, 130, 151, 228, 15, 124, 215, 24, 23, 119, 125, 40, 158, 30, 81, 33, 65, 248, 36, 131, 46, 184, 181, 208, 112, 248, 183, 99, 254, 156, 202, 138, 15, 38, 232, 155, 27, 185, 167, 27, 32, 130, 126, 139, 214, 202, 17, 169, 73, 111, 61, 187, 170, 33, 99, 110, 229, 78, 197, 221, 81, 160, 64, 218, 16, 162, 10, 124, 22, 80, 93, 188, 217, 63, 159, 178, 249, 218, 112, 56, 104, 23, 181, 107, 9, 169, 146, 109, 32, 70, 29, 176, 154, 141, 173, 99, 236, 19, 205, 44, 229, 131, 39, 49, 27, 87, 184, 150, 90, 88, 199, 149, 161, 8, 14, 167, 102, 35, 83, 248, 167, 109, 154, 172, 236, 192, 36, 245, 78, 36, 181, 64, 189, 93, 167, 187, 62, 71, 190, 125, 246, 253, 154, 174, 65, 153, 113, 159, 216, 208, 24, 223, 79, 56, 86, 39, 181, 27, 153, 161, 96, 25, 129, 223, 76, 20, 49, 240, 150, 24, 151, 216, 17, 180, 82, 147, 210, 76, 34, 86, 129, 31, 12, 59, 161, 221, 106, 232, 94, 83, 165, 89, 236, 152, 208, 143, 157, 250, 57, 94, 234, 193, 253, 215, 167, 221, 155, 181, 219, 126, 174, 212, 46, 197, 5, 249, 166, 119, 166, 66, 51, 235, 76, 106, 19, 99, 243, 16, 33, 140, 120, 155, 247, 100, 233, 28, 121, 88, 158, 78, 31, 47, 79, 228, 203, 168, 245, 101, 242, 184, 255, 9, 233, 223, 115, 198, 180, 38, 33, 240, 186, 231, 201, 220, 79, 65, 175, 28, 14, 125, 13, 76, 252, 41, 158, 119, 153, 147, 158, 221, 213, 46, 190, 110, 123, 28, 218, 5, 136, 231, 96, 66, 22, 54, 19, 147, 110, 228, 18, 89, 93, 214, 125, 49, 95, 244, 116, 204, 122, 210, 64, 169, 81, 74, 6, 191, 190, 85, 197, 86, 8, 238, 195, 193, 96, 164, 49, 169, 51, 214, 126, 248, 176, 237, 147, 45, 234, 8, 177, 196, 126, 158, 44, 102, 232, 65, 243, 183, 215, 16, 195, 204, 51, 169, 34, 182, 2, 18, 110, 196, 209, 18, 235, 41, 4, 88, 93, 24, 14, 80, 148, 12, 150, 188, 102, 118, 26, 75, 66, 63, 144, 123, 188, 6, 183, 114, 198, 41, 59, 219, 17, 56, 242, 140, 55, 95, 32, 5, 94, 235, 66, 56, 128, 88, 110, 149, 194, 149, 81, 246, 118, 110, 126, 46, 239, 170, 60, 59, 122, 19, 23, 1, 77, 102, 175, 44, 55, 130, 177, 214, 4, 7, 200, 79, 35, 107, 84, 236, 147, 250, 217, 238, 82, 249, 30, 235, 101, 248, 45, 178, 239, 199, 197, 102, 9, 200, 30, 41, 76, 37, 218, 159, 148, 208, 64, 29, 131, 111, 126, 99, 136, 103, 190, 15, 190, 140, 72, 55, 61, 106, 231, 184, 148, 67, 81, 227, 30, 64, 94, 190, 19, 41, 0, 4, 22, 15, 190, 168, 188, 225, 39, 31, 26, 246, 133, 111, 99, 26, 154, 241, 70, 113, 20, 245, 225, 200, 78, 219, 245, 251, 54, 53, 133, 72, 9, 238, 104, 20, 18, 35, 253, 116, 147, 71, 206, 189, 35, 211, 173, 181, 43, 253, 126, 89, 190, 210, 75, 205, 129, 18, 244, 219, 244, 120, 220, 184, 202, 249, 68, 158, 221, 75, 244, 49, 141, 68, 144, 34, 7, 44, 116, 100, 76, 167, 86, 149, 177, 71, 113, 115, 51, 179, 152, 78, 163, 152, 157, 99, 17, 162, 246, 117, 11, 36, 214, 140, 181, 130, 141, 23, 167, 136, 34, 25, 230, 150, 3, 7, 254, 172, 115, 91, 167, 3, 229, 85, 88, 61, 109, 29, 149, 20, 101, 229, 157, 71, 255, 55, 195, 197, 42, 154, 192, 133, 251, 45, 247, 8, 182, 97, 126, 49, 237, 87, 21, 91, 157, 195, 67, 98, 152, 214, 235, 232, 49, 94, 224, 29, 103, 72, 213, 67, 40, 99, 70, 80, 6, 149, 136, 83, 33, 29, 218, 141, 190, 46, 135, 4, 162, 191, 231, 149, 173, 234, 191, 167, 226, 34, 188, 86, 94, 130, 1, 80, 105, 21, 19, 255, 34, 152, 189, 249, 167, 128, 219, 58, 160, 151, 35, 232, 226, 59, 21, 138, 38, 149, 189, 128, 123, 23, 63, 61, 81, 166, 154, 183, 143, 25, 91, 135, 0, 217, 186, 23, 69, 166, 156, 178, 101, 172, 183, 72, 139, 44, 93, 254, 209, 230, 221, 93, 50, 221, 88, 183, 215, 41, 215, 192, 74, 221, 73, 108, 218, 90, 149, 101, 125, 218, 225, 46, 210, 9, 188, 41, 93, 92, 223, 180, 100, 178, 54, 120, 189, 164, 98, 117, 251, 2, 35, 120, 29, 98, 112, 251, 95, 111, 242, 230, 139, 53, 183, 203, 52, 89, 133, 206, 145, 239, 255, 188, 207, 172, 14, 117, 70, 116, 54, 21, 80, 4, 212, 229, 114, 205, 53, 28, 133, 153, 150, 247, 151, 14, 149, 61, 13, 45, 10, 68, 51, 12, 220, 76, 182, 15, 139, 68, 253, 101, 122, 11, 76, 183, 211, 180, 194, 13, 249, 154, 237, 232, 246, 171, 228, 197, 67, 224, 189, 210, 111, 210, 164, 164, 40, 30, 224, 82, 46, 57, 45, 140, 22, 172, 110, 187, 147, 57, 23, 207, 125, 73, 245, 185, 161, 17, 151, 48, 27, 110, 119, 42, 87, 62, 175, 201, 210, 134, 173, 203, 56, 58, 226, 141, 13, 222, 170, 121, 140, 196, 96, 129, 223, 132, 177, 140, 100, 163, 71, 67, 150, 174, 164, 172, 31, 195, 138, 253, 195, 115, 11, 98, 45, 83, 82, 55, 112, 240, 3, 59, 202, 211, 150, 149, 116, 74, 249, 38, 52, 0, 104, 121, 164, 247, 112, 76, 52, 245, 71, 113, 23, 21, 22, 95, 198, 185, 161, 252, 164, 88, 109, 178, 248, 25, 112, 255, 254, 143, 210, 85, 13, 230, 114, 29, 211, 197, 104, 68, 17, 3, 79, 121, 83, 3, 27, 151, 252, 229, 13, 229, 252, 90, 165, 157, 8, 24], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120], segment_lens = [168, 1438, 431, 185, 650, 503, 531, 229, 1380, 177, 1426, 1109, 4, 1399, 869, 570], resent_lens = [0], directions = [false, false, false], fins = [true, true], pickup = Index(4165393823095705204), late = [(Index(0), 0), (Index(2635249153387078803), 0)], keep_alives = [(Initiator, Index(3416063717353620670)), (Responder, Index(4611686018427387904))], delays = [0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0], windows = [1, 1, 1, 1, 1, 1, 1, 1, 1], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 93919e8e9ceca8440ff637afd16bd2273aae5a8fa1c163129a752d98868240b7 # shrinks to initiator_isn = 0, responder_isn = 0, before = [[20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68], [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38]], after = [[20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166], [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244]], jumps = [None, Some(3000)], segment_lens = [158, 126, 117, 11, 170, 107, 127, 33, 67, 153, 193, 19, 16, 47, 18, 146, 18], directions = [true, true, true, false, false, false, false, false, false, true, false, false, false, true], fins = [false, false], pickup = false, one_direction = false, lost = [], injected = [], window = 200, resync_after_segments = None, delays = Some([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0]), actions = [None], consume_lens = [0], acked_reads = [false] +cc f1f866fd88d1fb4a53a42da381bd6914b5ef0fe9d20572ed063eaf6155279876 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30, 28, 143, 83, 61, 165, 169, 208, 140, 168, 59, 153, 204, 55, 228, 185, 8, 53, 243, 99, 8, 211, 136, 197, 23, 236, 123, 161, 29, 47, 99, 93, 161, 106, 228, 252, 10, 167, 187, 60, 153, 5, 237, 117, 137, 230, 202, 174, 247, 202, 215, 209, 248, 213, 85, 37, 184, 48, 97, 230, 167, 214, 176, 209, 81, 24, 93, 126, 230, 56, 3, 151, 215, 242, 88, 20, 59, 99, 194, 182, 169, 85, 206, 93, 175, 69, 14, 117, 117, 152, 54, 141, 218, 130, 125, 121, 225, 78, 213, 97, 248, 174, 192, 33, 22, 94, 153, 183, 165, 30, 243, 96, 234, 132, 130, 230, 71, 109, 41, 32, 89, 95, 101, 242, 105, 191, 58, 15, 214, 243, 232, 82, 150, 235, 228, 105, 181, 66, 39, 4, 56, 48, 78, 189, 53, 223, 167, 33, 254, 168, 15, 51, 67, 118, 39, 13, 154, 70, 3, 81, 6, 154, 115, 242, 59, 161, 42, 71, 228, 97, 108, 106, 95, 210, 134, 54, 97, 100, 230, 200, 190, 21, 26, 153, 143, 69, 7, 194, 50, 47, 122, 4, 185, 26, 195, 96, 210, 171, 30, 20, 237, 41, 146, 165, 183, 184, 97, 102, 122, 85, 240, 235, 197, 105, 11, 236, 231, 74, 100, 185, 155, 13, 101, 5, 191, 134, 174, 158, 255, 81, 206, 178, 99, 114, 93, 165, 50, 98, 6, 208, 110, 122, 157, 163, 76, 236, 189, 36, 99, 211, 43, 251, 166, 28, 124, 23, 237, 52, 187, 92, 130, 28, 55, 73, 10, 166, 98, 84, 35, 6, 222, 170, 57, 47, 154, 90, 111, 56, 150, 73, 47, 98, 0, 85, 114, 66, 117, 227, 160, 169, 32, 42, 61, 70, 187, 140, 164, 240, 160, 193, 41, 57, 195, 22, 171, 49, 57, 113, 100, 191, 55, 97, 64, 149, 97, 144, 32, 167, 15, 29, 44, 138, 159, 209, 85, 241, 131, 249, 14, 58, 42, 157, 95, 93, 148, 244, 20, 139, 212, 61, 182, 209, 232, 225, 2, 237, 118, 145, 58, 174, 168, 203, 148, 238, 5, 42, 123, 22, 64, 198, 158, 22, 125, 68, 87, 136, 136, 206, 180, 220, 128, 47, 26, 142, 118, 100, 101, 99, 203, 213, 53, 83, 247, 82, 109, 50, 182, 223, 140, 78, 123, 231, 57, 244, 40, 61, 25, 205, 51, 78, 119, 210, 7, 104, 143, 50, 122, 129, 116, 121, 190, 218, 236, 28, 117, 74, 144, 191, 133, 93, 169, 177, 138, 57, 96, 194, 107, 153, 192, 187, 215, 105, 33, 225, 121, 254, 122, 7, 114, 123, 68, 67, 10, 217, 169, 116, 75, 251, 231, 70, 39, 128, 46, 117, 42, 213, 57, 145, 217, 151, 66, 70, 71, 153, 17, 3, 83, 23, 209, 157, 162, 220, 254, 246, 201, 112, 19, 150, 236, 5, 189, 130, 140, 161, 57, 106, 234, 80, 157, 191, 85, 175, 155, 145, 169, 97, 170, 225, 181, 30, 183, 246, 98, 27, 220, 119, 14, 233, 76, 0, 245, 216, 228, 236, 177, 68, 225, 233, 203, 6, 58, 250, 55, 87, 169, 176, 73, 211, 150, 158, 12, 102, 106, 2, 60, 10, 244, 220, 114, 106, 131, 44, 128, 99, 73, 151, 214, 237, 214, 173, 218, 138, 42, 149, 40, 225, 25, 229, 235, 249, 82, 113, 111, 35, 38, 239, 63, 33, 31, 234, 251, 126, 129, 57, 190, 3, 204, 246, 115, 129, 222, 191, 231, 224, 141, 168, 224, 63, 254, 206, 50, 186, 222, 85, 244, 207, 45, 214, 227, 148, 131, 72, 47, 98, 230, 47, 166, 131, 164, 109, 238, 25, 76, 156, 89, 94, 89, 244, 239, 186, 6, 162, 69, 48, 203, 40, 107, 209, 56, 199, 22, 174, 239, 139, 136, 231, 84, 219, 84, 233, 54, 81, 179, 98, 200, 232, 139, 252, 253, 177, 158, 99, 191, 216, 32, 105, 169, 12, 66, 222, 133, 86, 78, 15, 207, 50, 11, 212, 45, 76, 206, 250, 216, 93, 72, 78, 131, 7, 59, 60, 80, 47, 51, 131, 242, 96, 223, 49, 114, 46, 170, 110, 200, 148, 236, 66, 75, 53, 134, 126, 90, 193, 59, 96, 221, 151, 211, 84, 89, 137, 115, 237, 254, 162, 10, 73, 215, 38, 245, 179, 131, 192, 168, 107, 159, 199, 192, 108, 248, 24, 179, 149, 59, 4, 185, 221, 48, 95, 177, 111, 172, 126, 107, 208, 177, 122, 98, 167, 199, 174, 31, 168, 156, 134, 106, 152, 135, 63, 61, 241, 176, 60, 123, 55, 211, 44, 154, 46, 199, 117, 237, 189, 29, 187, 55, 121, 60, 81, 66, 167, 244, 80, 11, 87, 166, 91, 236, 14, 196, 51, 163, 145, 24, 174, 167, 211, 101, 93, 89, 21, 126, 216, 191, 219, 248, 101, 89, 173, 69, 192, 101, 79, 238, 2, 166, 165, 4, 183, 3, 210, 93, 250, 91, 189, 210, 191, 113, 202, 180, 27, 63, 102, 17, 186, 190, 253, 201, 78, 213, 46, 82, 80, 246, 209, 208, 146, 95, 92, 205, 171, 193, 177, 13, 176, 206, 212, 151, 124, 200, 120, 144, 211, 161, 3, 146, 248, 248, 75, 110, 87, 8, 11, 120, 88, 184, 228, 99, 209, 16, 16, 152, 163, 130, 95, 240, 17, 51, 127, 34, 88, 113, 215, 163, 105, 110, 113, 9, 66, 223, 36, 214, 94, 45, 109, 157, 177, 52, 243, 251, 119, 195, 30, 78, 219, 246, 95, 162, 53, 0, 118, 80, 129, 228, 7, 13, 219, 255, 232, 196, 130, 227, 187, 209, 58, 111, 71, 218, 237, 168, 50, 97, 86, 28, 207, 5, 156, 56, 35, 199, 232, 69, 243, 205, 195, 75, 196, 6, 153, 57, 193, 169, 19, 112, 216, 105, 218, 72, 107, 119, 67, 195, 184, 232, 251, 14, 240, 254, 53, 52, 188, 30, 126, 141, 50, 102, 48, 249, 43, 123, 134, 95, 177, 163, 239, 51, 143, 155, 202, 40, 67, 235, 80, 126, 113, 145, 244, 91, 25, 162, 10, 139, 149, 164, 46, 199, 183, 47, 155, 151, 41, 159, 136, 131, 102, 149, 85, 181, 93, 194, 76, 124, 185, 76, 121, 246, 251, 60, 176, 82, 72, 168, 28, 201, 197, 229, 157, 80, 117, 219, 105, 63, 146, 77, 23, 246, 251, 33, 47, 187, 117, 123, 135, 161, 217, 244, 32, 203, 110, 205, 74, 141, 162, 179, 66, 173, 11, 20, 127, 73, 101, 214, 75, 29, 13, 114, 102, 234, 16, 30, 9, 79, 188, 170, 132, 197, 78, 91, 150, 58, 157, 167, 154, 126, 234, 28, 102, 81, 193, 114, 26, 93, 238, 41, 73, 68, 232, 202, 149, 53, 128, 219, 157, 235, 178, 228, 77, 68, 5, 169, 110, 26, 141, 240, 98, 50, 151, 29, 71, 45, 219, 79, 16, 83, 20, 164, 189, 10, 93, 222, 187, 47, 59, 254, 158, 3, 110, 162, 237, 235, 57, 21, 225, 214, 160, 209, 216, 14, 126, 40, 151, 43, 138, 238, 211, 4, 110, 134, 234, 167, 238, 138, 180, 157, 65, 79, 216, 239, 203, 151, 244, 76, 116, 214, 197, 169, 105, 73, 142, 13, 145, 0, 171, 112, 33, 230, 30, 206, 228, 152, 127, 157, 57, 30, 75, 240, 132, 205, 207, 71, 25, 198, 184, 74, 90, 94, 250, 152, 29, 13, 51, 166, 131, 248, 174, 17, 144, 148, 254, 25, 80, 132, 106, 50, 3, 222, 142, 88, 30, 19, 131, 197, 204, 56, 211, 69, 152, 89, 83, 13, 74, 160, 224, 153, 255, 208, 189, 125, 41, 220, 42, 54, 105, 91, 95, 54, 33, 174, 40, 178, 115, 93, 99, 4, 52, 177, 30, 79, 219, 57, 131, 111, 197, 244, 63, 171, 149, 171, 105, 67, 60, 192, 240, 169, 232, 64, 225, 106, 179, 157, 24, 213, 166, 124, 67, 211, 143, 83, 241, 99, 122, 36, 5, 199, 175, 227, 83, 171, 169, 235, 188, 188, 197, 32, 75, 227, 10, 151, 169, 249, 20, 69, 68, 157, 41, 128, 187, 54, 171, 201, 102, 4, 65, 138, 193, 29, 235, 9, 162, 78, 109, 35, 77, 21, 147, 159, 161, 114, 178, 83, 21, 218, 15, 67, 74, 188, 93, 41, 103, 219, 209, 107, 73, 41, 219, 15, 213, 61, 170, 243, 0, 195, 72, 181, 196, 145, 13, 144, 33, 227, 182, 173, 149, 91, 33, 84, 68, 103, 197, 222, 77, 118, 215, 195, 115, 73, 80, 12, 243, 140, 90, 8, 169, 145, 29, 95, 204, 219, 81, 223, 248, 216, 53, 36, 8, 152, 219, 97, 87, 6, 189, 113, 11, 86, 245, 231, 117, 23, 112, 180, 176, 150, 207, 33, 15, 191, 99, 202, 161, 238, 95, 242, 38, 62, 135, 90, 149, 99, 15, 61, 132, 67, 120, 243, 111, 125, 95, 76, 254, 119, 31, 160, 107, 120, 110, 150, 70, 52, 102, 219, 71, 117, 196, 222, 103, 47, 208, 108, 199, 234, 235, 192, 130, 16, 173, 170, 184, 141, 177, 14, 135, 96, 58, 154, 149, 108, 229, 77, 48, 8, 213, 198, 194, 57, 140, 144, 108, 148, 34, 83, 133, 98, 9, 201, 105, 234, 138, 71, 22, 52, 208, 29, 208, 162, 7, 130, 183, 106, 49, 86, 15, 156, 40, 197, 233, 5, 40, 44, 99, 139, 251, 245, 8, 242, 43, 196, 85, 227, 55, 194, 187, 253, 36, 77, 7, 195, 69, 100, 236, 96, 177, 197, 204, 82, 200, 174, 251, 61, 151, 100, 20, 113, 249, 2, 240, 118, 126, 112, 141, 0, 212, 119, 115, 234, 20, 241, 147, 194, 88, 42, 104, 58, 123, 168, 244, 33, 82, 24, 121, 133, 87, 109, 174, 114, 166, 229, 118, 206, 50, 234, 92, 24, 177, 159, 200, 229, 246, 144, 75, 32, 100, 219, 44, 237, 115, 78, 64, 148, 250, 2, 205, 234, 98, 253, 245, 205, 200, 200, 235, 28, 162, 137, 84, 101, 108, 184, 127, 177, 7, 31, 8, 76, 3, 201, 57, 154, 72, 163, 168, 81, 211, 210, 167, 74, 253, 219, 151, 27, 174, 48, 204, 152, 94, 107, 163, 20, 178, 64, 150, 253, 140, 86, 159, 95, 155, 247, 74, 24, 0, 238, 199, 218, 142, 2, 101, 42, 59, 139, 73, 131, 216, 138, 65, 156, 59, 128, 246, 75, 139, 206, 240, 14, 205, 198, 208, 48, 150, 175, 171, 97, 209, 244, 8, 21, 100, 224, 129, 175, 172, 8, 149, 35, 173, 242, 16, 37, 202, 102, 139, 116, 117, 159, 137, 186, 121, 207, 244, 185, 89, 66, 148, 208, 131, 113, 245, 247, 212, 172, 133, 8, 43, 193, 102, 205, 247, 99, 239, 24, 169, 145, 27, 17, 232, 179, 42, 113, 192, 227, 4, 52, 61, 23, 93, 138, 26, 194, 239, 196, 65, 119, 8, 114, 129, 156, 234, 221, 155, 206, 151, 134, 182, 22, 204, 238, 141, 184, 170, 166, 166, 58, 18, 132, 188, 56, 229, 33, 82, 183, 218, 97, 194, 124, 6, 233, 94, 116, 190, 253, 41, 187, 26, 142, 90, 181, 127, 61, 7, 102, 21, 34, 251, 169, 77, 25, 171, 24, 168, 46, 244, 201, 69, 158, 17, 246, 10, 124, 45, 32, 40, 154, 235, 148, 157, 147, 29, 247, 169, 4, 7, 74, 98, 163, 224, 53, 129, 15, 110, 141, 98, 141, 114, 59, 61, 162, 250, 251, 185, 170, 39, 41, 188, 8, 123, 46, 25, 22, 7, 185, 75, 29, 77, 147, 250, 161, 238, 247, 55, 12, 31, 190, 86, 228, 176, 54, 61, 48, 165, 133, 203, 27, 161, 39, 215, 163, 54, 215, 154, 11, 145, 224, 170, 70, 95, 41, 212, 44, 205, 209, 156, 41, 224, 100, 36, 43, 158, 123, 111, 46, 175, 146, 184, 202, 94, 250, 64, 155, 138, 244, 41, 22, 135, 190, 25, 215, 192, 21, 210, 153, 123, 216, 247, 78, 218, 133, 104, 82, 8, 13, 12, 140, 84, 11, 30, 244, 171, 90, 133, 177, 150, 31, 168, 28, 175, 117, 112, 1, 240, 62, 195, 227, 111, 135, 143, 101, 244, 242, 125, 93, 245, 20, 190, 139, 184, 80, 132, 253, 40, 124, 188, 205, 150, 180, 233, 87, 252, 120, 194, 14, 209, 137, 152, 237, 131, 71, 220, 26, 203, 187, 88, 219, 238, 18, 144, 125, 247, 48, 229, 37, 49, 57, 3, 39, 55, 238, 150, 77, 162, 119, 98, 150, 170, 138, 80, 255, 185, 119, 45, 57, 86, 22, 200, 74, 180, 209, 133, 30, 153, 121, 121, 214, 101, 155, 62, 175, 64, 253, 192, 35, 176, 8, 125, 73, 154, 101, 148, 130, 234, 195, 28, 35, 59, 144, 64, 169, 75, 131, 166, 6, 251, 143, 47, 106, 247, 154, 162, 89, 216, 201, 135, 38, 164, 211, 96, 231, 76, 189, 26, 112, 220, 119, 222, 134, 21, 209, 230, 91, 130, 244, 71, 5, 110, 23, 117, 92, 82, 147, 242, 58, 71, 206, 184, 207, 238, 67, 232, 197, 96, 78, 188, 187, 113, 93, 189, 67, 192, 196, 202, 144, 224, 41, 51, 200, 239, 59, 107, 46, 8, 49, 168, 148, 43, 231, 51, 14, 105, 118, 165, 124, 110, 78, 115, 195, 81, 224, 24, 35, 62, 197, 223, 108, 73, 113, 123, 202, 227, 234, 188, 179, 21, 108, 220, 109, 226, 225, 125, 105, 155, 172, 245, 114, 80, 171, 135, 223, 244, 70, 200, 51, 202, 62, 230, 133, 207, 118, 34, 70, 134, 69, 85, 231, 51, 182, 81, 210, 92, 86, 41, 61, 216, 78, 138, 93, 8, 15, 193, 39, 196, 49, 19, 127, 139, 7, 65, 138, 161, 254, 211, 240, 179, 107, 112, 68, 82, 179, 213, 153, 135, 163, 137, 106, 111, 153, 237, 52, 195, 159, 223, 217, 234, 26, 9, 89, 128, 17, 153, 155, 138, 194, 201, 3, 252, 244, 161, 41, 59, 101, 24, 51, 39, 150, 172, 186, 149, 243, 225, 199, 72, 180, 55, 17, 104, 222, 197, 123, 104, 252, 64, 63, 56, 14, 52, 139, 88, 184, 55, 240, 239, 80, 16, 37, 71, 20, 169, 149, 5, 34, 239, 167, 128, 244, 22, 255, 49, 97, 4, 14, 208, 161, 107, 203, 23, 236, 134, 246, 75, 183, 137, 61, 154, 244, 33, 171, 69, 17, 7, 188, 44, 232, 6, 43, 247, 202, 136, 101, 86, 238, 66, 250, 215, 12, 169, 237, 203, 45, 177, 107, 224, 169, 212, 74, 166, 173, 178, 79, 9, 241, 100, 122, 35, 235, 163, 4, 194, 160, 240, 217, 135, 2, 233, 230, 222, 241, 72, 246, 248, 213, 128, 224, 181, 42, 188, 60, 16, 73, 235, 130, 36, 237, 112, 242, 233, 110, 240, 41, 162, 13, 49, 38, 1, 70, 8, 222, 5, 96, 41, 179, 156, 87, 46, 151, 30, 94, 213, 228, 30, 147, 67, 169, 75, 233, 245, 58, 245, 225, 9, 235, 6, 233, 65, 21, 60, 163, 166, 223, 59, 96, 203, 231, 45, 135, 221, 103, 111, 165, 91, 239, 72, 109, 192, 159, 32, 23, 217, 125, 170, 80, 204, 110, 86, 35, 132, 13, 223, 178, 242, 101, 140, 245, 131, 193, 106, 46, 132, 22, 154, 6, 160, 34, 143, 116, 251, 110, 50, 188, 219, 120, 29, 114, 156, 40, 220, 83, 170, 32, 247, 61, 111, 125, 138, 70, 97, 72, 9, 10, 229, 27, 138, 38, 250, 253, 78, 159, 118, 169, 189, 142, 78, 168, 63, 56, 253, 173, 173, 29, 150, 142, 206, 24, 179, 33, 186, 184, 171, 60, 103, 56, 73, 62, 4, 174, 111, 45, 67, 1, 56, 219, 25, 132, 49, 169, 205, 243, 42, 181, 62, 220, 99, 18, 161, 77, 74, 54, 134, 62, 165, 195, 223, 35, 201, 185, 100, 157, 217, 21, 179, 127, 120, 126, 144, 57, 171, 169, 23, 85, 130, 27, 97, 94, 177, 37, 219, 97, 48, 254, 90, 127, 235, 0, 167, 136, 162, 21, 8, 85, 33, 233, 97, 69, 161, 31, 221, 141, 89, 41, 88, 22, 37, 154, 54, 55, 57, 219, 207, 113, 130, 191, 130, 26, 229, 206, 189, 140, 30, 75, 49, 223, 191, 57, 128, 176, 55, 148, 223, 241, 222, 241, 88, 123, 34, 22, 190, 167, 239, 252, 114, 0, 17, 6, 201, 3, 125, 226, 10, 115, 178, 115, 194, 169, 217, 11, 230, 166, 192, 173, 151, 109, 159, 184, 216, 189, 69, 100, 202, 5, 19, 243, 59, 99, 18, 16, 222, 189, 200, 222, 185, 98, 60, 19, 123, 207, 62, 69, 105, 103, 108, 53, 43, 108, 247, 217, 159, 0, 221, 251, 151, 133, 28, 50, 22, 53, 87, 237, 113, 63, 80, 79, 153, 57, 140, 237, 68, 10, 212, 197, 184, 129, 17, 234, 141, 88, 228, 90, 244, 142, 193, 81, 111, 56, 188, 237, 37, 142, 94, 52, 10, 95, 92, 240, 134, 209, 11, 72, 140, 123, 60, 86, 216, 204, 207, 182, 16, 57, 184, 177, 6, 245, 122, 61, 163, 83, 20, 108, 50, 85, 226, 125, 215, 202, 206, 83, 216, 194, 196, 195, 206, 196, 254, 143, 36, 72, 228, 137, 130, 208, 128, 175, 212, 254, 120, 125, 142, 39, 181, 164, 177, 192, 212, 66, 14, 254, 46, 172, 90, 64, 244, 18, 61, 65, 7, 187, 190, 35, 52, 24, 80, 10, 103, 139, 46, 132, 67, 64, 84, 134, 32, 99, 151, 208, 37, 125, 225, 25, 236, 120, 131, 220, 7, 86, 191, 177, 25, 5, 76, 84, 118, 21, 172, 47, 221, 67, 196, 210, 204, 147, 216, 4, 80, 4, 145, 175, 81, 11, 186, 246, 31, 162, 80, 129, 0, 99, 146, 61, 92, 127, 75, 26, 38, 168, 234, 224, 31, 50, 99, 151, 54, 159, 161, 10, 29, 164, 189, 182, 119, 164, 9, 193, 201, 6, 192, 145, 77, 210, 101, 146, 147, 237, 67, 203, 44, 104, 253, 171, 127, 108, 49, 56, 18, 224, 98, 167, 99, 134, 160, 78, 82, 95, 228, 4, 8, 73, 213, 204, 91, 131, 23, 134, 23, 206, 248, 189, 119, 154, 124, 241, 210, 46, 37, 12, 66, 202, 82, 208, 103, 180, 227, 238, 197, 169, 147, 28, 180, 135, 180, 133, 138, 43, 27, 231, 84, 213, 235, 86, 226, 45, 130, 222, 122, 181, 222, 0, 207, 203, 217, 245, 63, 232, 45, 52, 89, 242, 97, 50, 138, 197, 212, 139, 185, 118, 241, 11, 133, 173, 130, 230, 96, 181, 117, 80, 193, 216, 164, 25, 92, 44, 177, 227, 216, 68, 149, 103, 144, 156, 7, 236, 89, 163, 2, 123, 3, 129, 109, 18, 23, 228, 196, 139, 151, 147, 13, 227, 148, 234, 153, 153, 43, 4, 63, 72, 205, 204, 32, 136, 24, 68, 168, 115, 116, 185, 162, 43, 107, 149, 13, 19, 126, 217, 182, 37, 32, 125, 194, 165, 35, 195, 251, 163, 122, 72, 201, 153, 72, 48, 62, 238, 114, 2, 126, 232, 95, 182, 178, 102, 149, 149, 50, 0, 41, 182, 76, 51, 4, 214, 106, 146, 129, 63, 196, 212, 72, 248, 2, 163, 245, 40, 66, 51, 48, 26, 57, 224, 170, 133, 223, 152, 19, 249, 239, 160, 208, 185, 76, 136, 64, 128, 241, 148, 41, 9, 54, 177, 203, 121, 150, 196, 115, 120, 204, 132, 165, 91, 135, 73, 215, 181, 116, 169, 168, 228, 198, 181, 162, 130, 154, 227, 231, 76, 194, 128, 6, 62, 104, 142, 115, 95, 102, 157, 172, 199, 62, 92, 171, 97, 70, 237, 134, 197, 220, 254, 59, 154, 250, 86, 142, 185, 15, 172, 217, 173, 18, 143, 189, 77, 118, 59, 168, 73, 178, 231, 31, 96, 139, 66, 63, 43, 179, 184, 34, 60, 74, 109, 143, 141, 226, 111, 92, 201, 82, 140, 249, 12, 11, 172, 241, 84, 203, 212, 94, 221, 125, 65, 91, 71, 56, 86, 124, 144, 44, 255, 4, 250, 39, 247, 80, 56, 64, 140, 96, 137, 36, 6, 154, 218, 182, 55, 131, 103, 185, 252, 45, 128, 130, 222, 239, 114, 180, 61, 32, 142, 9, 66, 66, 225, 7, 44, 145, 28, 181, 56, 76, 74, 34, 240, 237, 111, 147, 32, 37, 60, 164, 15, 199, 37, 62, 93, 107, 64, 7, 150, 159, 226, 201, 49, 66, 154, 89, 85, 199, 122, 35, 175, 216, 250, 40, 82, 90, 223, 225, 138, 14, 36, 23, 8, 100, 106, 226, 126, 68, 19, 107, 243, 188, 247, 238, 49, 195, 41, 47, 227, 222, 217, 59, 30, 12, 23, 96, 42, 236, 240, 11, 218, 57, 165, 96, 81, 72, 12, 112, 237, 53, 143, 108, 86, 183, 252, 178, 72, 37, 14, 77, 23, 87, 206, 107, 43, 110, 140, 116, 141, 114, 238, 208, 125, 86, 130, 133, 75, 112, 251, 207, 20, 3, 207, 18, 40, 77, 184, 87, 231, 152, 177, 35, 118, 41, 62, 255, 118, 161, 228, 124, 182, 98, 51, 159, 196, 95, 201, 48, 217, 61, 111, 108, 176, 161, 251, 212, 241, 53, 213, 206, 16, 35, 67, 67, 71, 164, 252, 145, 104, 177, 221, 204, 244, 63, 16, 221, 201, 211, 77, 93, 63, 54, 181, 151, 210, 64, 167, 54, 77, 11, 77, 51, 29, 169, 109, 180, 74, 185, 165, 179, 201, 221, 252, 94, 158, 25, 62, 0, 159, 150, 201, 191, 90, 229, 243, 255, 4, 40, 150, 138, 43, 108, 250, 246, 166, 140, 219, 180, 197, 187, 125, 84, 169, 178, 142, 49, 226, 107, 227, 240, 2, 208, 28, 79, 103, 94, 148, 130, 128, 10, 251, 133, 206, 125, 170, 119, 41, 249, 24, 114, 25, 12, 99, 94, 94, 229, 126, 228, 198, 246, 30, 111, 23, 87, 27, 194, 165, 63, 237, 224, 155, 13, 152, 92, 234, 36, 122, 128, 111, 207, 45, 204, 80, 56, 251, 245, 202, 224, 76, 180, 140, 250, 15, 63, 65, 212, 243, 115, 108, 171, 87, 15, 29, 226, 216, 120, 221, 2, 247, 51, 38, 126, 34, 92, 129, 122, 210, 254, 133, 179, 190, 20, 116, 212, 144, 42, 104, 66, 77, 212, 192, 63, 3, 134, 171, 4, 172, 19, 16, 121, 34, 224, 187, 146, 151, 198, 57, 11, 143, 151, 52, 189, 19, 111, 244, 34, 12, 79, 247, 69, 38, 145, 241, 15, 233, 37, 37, 159, 197, 190, 159, 22, 114, 160, 38, 55, 208, 207, 223, 101, 4, 228, 14, 173, 243, 181, 137, 66, 94, 208, 83, 138, 235, 68, 133, 88, 79, 98, 165, 150, 208, 78, 127, 52, 200, 208, 88, 159, 203, 174, 158, 18, 176, 168, 122, 29, 224, 17, 149, 127, 34, 111, 186, 145, 46, 249, 103, 248, 203, 217, 189, 198, 88, 132, 213, 8, 122, 5, 191, 8, 69, 200, 92, 234, 37, 42, 142, 154, 142, 113, 25, 62, 143, 153, 67, 7, 85, 202, 85, 136, 26, 169, 157, 242, 71, 159, 123, 224, 216, 155, 144, 247, 49, 68, 29, 30, 209, 83, 132, 249, 87, 145, 158, 25, 208, 48, 16, 130, 146, 89, 129, 176, 170, 174, 250, 137, 52, 30, 89, 26, 224, 227, 172, 101, 178, 228, 100, 30, 190, 253, 92, 136, 226, 162, 70, 29, 154, 115, 220, 66, 198, 70, 132, 76, 117, 79, 222, 13, 80, 239, 234, 57, 87, 127, 84, 149, 112, 251, 87, 9, 49, 95, 50, 235, 35, 8, 187, 85, 245, 133, 159, 157, 35, 132, 27, 221, 162, 110, 242, 9, 48, 200, 11, 60, 20, 217, 73, 221, 241, 175, 199, 70, 106, 168, 124, 136, 251, 107, 147, 55, 49, 104, 102, 228, 232, 1, 120, 58, 70, 220, 107, 43, 138, 142, 45, 215, 21, 72, 154, 170, 192, 80, 172, 238, 87, 250, 211, 218, 14, 181], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216, 118, 134, 208, 101, 112, 139, 205, 130, 145, 175, 63, 98, 27, 13, 113, 55, 77, 2, 40, 172, 250, 126, 235, 72, 61, 232, 230, 64, 185, 2, 75, 182, 35, 219, 165, 54, 10, 243, 31, 143, 186, 37, 80, 130, 75, 194, 251, 243, 181, 238, 41, 128, 106, 135, 23, 25, 94, 189, 35, 82, 137, 252, 4, 188, 113, 107, 135, 156, 6, 239, 167, 106, 94, 106, 23, 73, 22, 26, 181, 132, 228, 92, 240, 111, 33, 69, 73, 124, 236, 177, 201, 144, 81, 240, 22, 166, 137, 202, 80, 146, 67, 56, 84, 81, 91, 207, 218, 80, 10, 114, 194, 39, 32, 230, 31, 100, 95, 171, 146, 155, 121, 55, 25, 115, 188, 246, 23, 195, 48, 189, 45, 18, 22, 199, 245, 22, 95, 155, 84, 133, 57, 252, 82, 95, 133, 18, 110, 138, 63, 126, 88, 222, 38, 155, 127, 59, 94, 18, 90, 242, 145, 222, 164, 101, 135, 47, 185, 144, 131, 159, 114, 80, 173, 178, 86, 232, 68, 221, 235, 39, 206, 141, 93, 36, 155, 220, 254, 51, 227, 3, 136, 228, 138, 243, 29, 234, 101, 88, 97, 246, 254, 13, 160, 109, 222, 96, 205, 47, 120, 37, 66, 45, 174, 220, 161, 38, 66, 181, 148, 172, 162, 87, 206, 77, 41, 135, 144, 7, 202, 239, 182, 20, 30, 25, 147, 37, 68, 14, 255, 253, 72, 55, 38, 179, 149, 31, 194, 26, 68, 186, 122, 66, 49, 57, 150, 96, 41, 144, 140, 57, 237, 86, 240, 84, 141, 189, 232, 179, 183, 208, 55, 99, 121, 17, 156, 112, 215, 94, 67, 102, 224, 97, 132, 185, 93, 230, 252, 44, 24, 140, 20, 222, 61, 159, 18, 4, 56, 238, 47, 221, 108, 115, 160, 143, 186, 116, 209, 124, 86, 99, 123, 253, 136, 226, 223, 158, 101, 125, 235, 72, 46, 4, 169, 212, 62, 181, 159, 120, 113, 218, 163, 96, 42, 129, 97, 209, 156, 158, 208, 198, 38, 64, 249, 8, 144, 6, 232, 207, 131, 190, 48, 208, 247, 25, 83, 243, 252, 209, 196, 104, 111, 213, 69, 36, 191, 191, 121, 250, 161, 50, 224, 232, 218, 76, 188, 142, 30, 83, 56, 50, 97, 43, 243, 195, 127, 179, 144, 39, 181, 70, 145, 96, 184, 47, 27, 11, 180, 121, 136, 39, 166, 231, 5, 177, 132, 230, 245, 3, 242, 121, 160, 16, 144, 31, 157, 149, 45, 197, 235, 22, 235, 219, 228, 2, 255, 133, 227, 214, 253, 5, 82, 30, 170, 108, 233, 12, 69, 143, 214, 3, 139, 119, 121, 2, 0, 179, 118, 57, 37, 73, 45, 68, 25, 19, 94, 177, 97, 231, 229, 155, 139, 51, 195, 132, 12, 81, 111, 224, 214, 53, 120, 251, 90, 138, 152, 173, 1, 131, 68, 200, 214, 207, 67, 255, 29, 63, 12, 77, 107, 206, 113, 80, 177, 187, 7, 160, 84, 226, 24, 31, 77, 241, 10, 13, 17, 246, 11, 93, 181, 242, 177, 179, 79, 191, 117, 185, 173, 155, 92, 197, 220, 214, 10, 18, 185, 74, 167, 177, 4, 102, 205, 97, 73, 18, 63, 62, 69, 130, 252, 24, 132, 34, 91, 126, 220, 19, 210, 1, 83, 92, 139, 160, 197, 43, 122, 41, 55, 126, 118, 132, 16, 183, 168, 86, 213, 248, 53, 213, 96, 161, 44, 198, 180, 115, 87, 21, 221, 175, 143, 223, 214, 95, 234, 238, 135, 179, 197, 44, 106, 196, 222, 154, 84, 201, 4, 166, 90, 7, 62, 203, 75, 136, 239, 231, 94, 80, 70, 33, 185, 121, 156, 57, 107, 247, 36, 176, 28, 80, 83, 53, 118, 42, 53, 1, 189, 148, 118, 25, 126, 10, 110, 52, 46, 151, 219, 145, 173, 252, 28, 1, 146, 231, 197, 168, 203, 92, 35, 93, 45, 235, 190, 209, 40, 249, 165, 250, 211, 174, 31, 111, 243, 53, 44, 227, 75, 34, 41, 120, 153, 29, 123, 180, 169, 242, 110, 75, 192, 103, 77, 255, 161, 131, 66, 255, 181, 89, 179, 141, 244, 236, 131, 185, 38, 92, 207, 189, 69, 9, 67, 102, 114, 3, 192, 130, 59, 83, 114, 41, 6, 103, 113, 70, 197, 11, 29, 177, 48, 68, 125, 95, 188, 159, 16, 237, 8, 32, 231, 195, 249, 95, 1, 176, 246, 13, 190, 0, 62, 45, 133, 20, 224, 103, 28, 242, 102, 210, 26, 28, 65, 163, 143, 116, 3, 48, 105, 26, 94, 67, 235, 107, 162, 47, 226, 36, 2, 225, 196, 228, 131, 175, 49, 85, 94, 136, 245, 42, 10, 207, 241, 120, 60, 235, 119, 238, 77, 101, 241, 161, 139, 0, 181, 137, 20, 77, 202, 106, 198, 226, 159, 48, 156, 165, 183, 230, 26, 219, 93, 146, 242, 106, 102, 254, 246, 29, 77, 118, 155, 7, 25, 0, 79, 193, 190, 6, 171, 79, 220, 210, 194, 251, 40, 59, 56, 151, 3, 185, 255, 202, 181, 98, 149, 95, 188, 120, 70, 250, 230, 154, 93, 103, 166, 204, 161, 146, 219, 110, 230, 219, 142, 112, 13, 170, 50, 135, 213, 183, 77, 59, 193, 11, 125, 63, 246, 154, 147, 45, 198, 1, 191, 79, 131, 235, 115, 236, 156, 106, 14, 149, 173, 244, 62, 158, 249, 40, 241, 138, 42, 228, 63, 41, 184, 20, 255, 83, 156, 88, 39, 185, 57, 236, 100, 176, 202, 224, 25, 134, 110, 161, 29, 204, 223, 56, 141, 12, 162, 175, 83, 56, 35, 202, 11, 235, 40, 30, 61, 204, 213, 90, 188, 11, 205, 113, 185, 21, 214, 166, 128, 181, 49, 241, 138, 94, 21, 169, 17, 30, 206, 7, 82, 154, 4, 120, 105, 154, 64, 12, 131, 238, 129, 141, 26, 208, 150, 103, 116, 230, 4, 163, 121, 184, 236, 197, 25, 158, 87, 84, 7, 144, 50, 231, 1, 150, 3, 213, 56, 85, 183, 228, 109, 216, 231, 89, 254, 143, 158, 193, 254, 205, 170, 153, 100, 75, 20, 2, 31, 99, 24, 224, 148, 63, 89, 25, 171, 223, 177, 215, 95, 186, 119, 17, 253, 85, 202, 175, 219, 227, 103, 113, 48, 86, 5, 105, 52, 148, 147, 5, 147, 113, 220, 36, 47, 101, 76, 1, 156, 14, 97, 189, 140, 8, 155, 42, 14, 79, 146, 219, 129, 149, 205, 198, 96, 186, 20, 224, 88, 92, 166, 50, 88, 83, 200, 215, 251, 174, 132, 198, 198, 252, 54, 62, 105, 236, 197, 214, 135, 216, 59, 81, 219, 191, 43, 208, 199, 17, 128, 213, 144, 90, 216, 94, 26, 238, 154, 177, 100, 122, 221, 61, 15, 181, 101, 84, 94, 220, 247, 48, 159, 111, 169, 255, 151, 176, 226, 1, 148, 46, 238, 150, 48, 185, 234, 38, 188, 83, 193, 159, 108, 150, 212, 174, 254, 208, 27, 13, 17, 188, 19, 27, 218, 148, 29, 220, 79, 241, 123, 132, 189, 46, 29, 170, 24, 115, 179, 104, 181, 130, 171, 40, 4, 48, 215, 153, 47, 85, 138, 252, 120, 138, 139, 248, 131, 189, 170, 49, 160, 158, 68, 181, 55, 230, 220, 224, 78, 181, 184, 79, 111, 38, 232, 155, 70, 253, 88, 223, 66, 26, 183, 179, 237, 248, 255, 154, 34, 119, 245, 126, 209, 47, 148, 144, 55, 141, 253, 219, 82, 44, 203, 132, 97, 196, 111, 114, 98, 3, 209, 9, 228, 58, 16, 55, 97, 39, 57, 135, 172, 185, 211, 210, 137, 206, 181, 63, 244, 71, 107, 140, 1, 238, 254, 195, 165, 142, 240, 19, 210, 54, 83, 213, 16, 14, 14, 125, 173, 249, 87, 46, 38, 99, 51, 38, 154, 160, 23, 124, 182, 170, 239, 123, 95, 179, 227, 91, 160, 144, 65, 1, 209, 167, 222, 206, 219, 64, 243, 156, 23, 41, 249, 83, 12, 81, 25, 106, 42, 144, 121, 44, 211, 242, 71, 81, 164, 31, 112, 25, 159, 248, 161, 197, 221, 15, 88, 108, 225, 129, 9, 237, 9, 206, 238, 169, 231, 191, 156, 11, 14, 182, 156, 66, 28, 43, 5, 171, 131, 6, 180, 160, 103, 18, 21, 221, 199, 79, 254, 14, 212, 204, 245, 9, 119, 193, 248, 114, 114, 82, 131, 238, 207, 230, 80, 255, 34, 143, 229, 24, 25, 255, 71, 96, 54, 185, 3, 122, 250, 193, 244, 14, 176, 118, 58, 125, 135, 87, 87, 10, 252, 172, 110, 97, 172, 182, 238, 157, 219, 36, 111, 21, 184, 254, 75, 72, 27, 41, 220, 35, 113, 79, 208, 78, 215, 187, 111, 251, 215, 188, 12, 68, 212, 89, 115, 221, 157, 11, 182, 143, 128, 204, 34, 202, 90, 69, 239, 122, 64, 134, 255, 11, 87, 206, 38, 219, 125, 58, 125, 234, 19, 131, 31, 227, 78, 163, 151, 44, 172, 33, 10, 222, 150, 36, 215, 143, 201, 182, 141, 186, 121, 217, 192, 116, 90, 89, 112, 120, 217, 115, 228, 113, 134, 58, 190, 173, 36, 16, 222, 81, 197, 38, 58, 114, 242, 216, 176, 134, 58, 86, 201, 138, 71, 222, 20, 112, 103, 76, 46, 146, 2, 77, 15, 128, 241, 38, 144, 56, 245, 77, 103, 87, 198, 145, 63, 196, 172, 136, 155, 232, 147, 223, 147, 170, 143, 187, 145, 27, 244, 253, 171, 112, 150, 158, 160, 192, 66, 230, 134, 36, 65, 172, 124, 68, 151, 196, 204, 236, 24, 241, 79, 87, 172, 50, 98, 58, 91, 139, 23, 175, 207, 78, 128, 104, 1, 215, 11, 247, 128, 72, 21, 31, 87, 185, 163, 138, 243, 209, 253, 251, 107, 174, 161, 15, 108, 206, 221, 149, 46, 163, 243, 206, 27, 54, 240, 133, 191, 60, 205, 49, 216, 130, 2, 25, 154, 242, 104, 145, 237, 4, 69, 62, 217, 195, 50, 171, 19, 168, 182, 252, 6, 139, 72, 210, 81, 90, 224, 42, 216, 93, 84, 198, 210, 185, 203, 222, 213, 86, 222, 86, 43, 38, 60, 63, 231, 9, 169, 18, 210, 85, 171, 25, 102, 233, 39, 103, 230, 37, 174, 46, 173, 19, 210, 96, 104, 236, 59, 135, 135, 79, 216, 149, 150, 156, 176, 98, 43, 173, 12, 58, 111, 232, 119, 157, 156, 228, 20, 47, 181, 53, 243, 74, 63, 239, 90, 41, 26, 94, 207, 109, 159, 83, 119, 185, 108, 34, 133, 70, 166, 34, 75, 145, 221, 182, 234, 164, 16, 8, 127, 243, 108, 65, 250, 224, 59, 168, 226, 171, 31, 252, 79, 163, 143, 183, 185, 88, 147, 25, 237, 135, 209, 38, 156, 23, 122, 248, 93, 185, 113, 76, 83, 182, 211, 109, 207, 189, 107, 26, 77, 20, 101, 133, 101, 118, 125, 63, 180, 23, 135, 131, 254, 238, 170, 12, 20, 188, 23, 57, 138, 48, 100, 137, 216, 231, 62, 163, 185, 244, 131, 78, 11, 46, 85, 206, 7, 21, 247, 85, 121, 176, 109, 7, 206, 216, 23, 226, 192, 15, 251, 159, 247, 247, 183, 161, 224, 10, 75, 85, 83, 186, 235, 54, 163, 232, 49, 31, 251, 80, 163, 29, 195, 22, 141, 218, 26, 83, 140, 231, 105, 234, 181, 53, 48, 254, 28, 102, 171, 105, 194, 58, 166, 229, 148, 245, 56, 16, 84, 100, 57, 25, 108, 80, 66, 204, 240, 223, 197, 97, 14, 109, 106, 171, 238, 213, 146, 29, 9, 151, 219, 143, 147, 117, 72, 210, 6, 249, 5, 161, 198, 211, 157, 143, 221, 55, 160, 23, 199, 11, 171, 204, 169, 88, 33, 96, 85, 165, 138, 148, 179, 93, 144, 251, 183, 4, 233, 93, 96, 184, 229, 43, 74, 184, 244, 115, 164, 34, 97, 7, 0, 233, 179, 41, 181, 85, 232, 94, 58, 199, 26, 78, 218, 28, 237, 200, 89, 157, 167, 236, 99, 84, 12, 195, 110, 36, 127, 18, 186, 105, 54, 32, 161, 234, 152, 236, 145, 54, 255, 230, 189, 129, 197, 109, 180, 226, 60, 244, 130, 148, 35, 221, 124, 108, 135, 82, 33, 155, 220, 42, 51, 68, 185, 3, 111, 115, 135, 193, 16, 35, 108, 190, 27, 242, 30, 28, 101, 83, 93, 155, 117, 17, 119, 17, 77, 8, 95, 85, 237, 48, 132, 189, 106, 180, 42, 126, 242, 117, 103, 10, 67, 181, 130, 35, 61, 126, 242, 24, 43, 166, 95, 132, 25, 146, 24, 248, 113, 163, 222, 172, 61, 1, 50, 91, 8, 56, 97, 96, 243, 5, 169, 230, 55, 182, 202, 216, 129, 249, 68, 51, 197, 49, 215, 93, 207, 136, 26, 38, 217, 135, 26, 156, 218, 194, 2, 74, 125, 70, 38, 118, 125, 125, 84, 246, 229, 221, 172, 254, 173, 255, 64, 188, 172, 222, 236, 78, 163, 245, 99, 95, 179, 211, 178, 3, 104, 153, 111, 167, 63, 37, 215, 153, 173, 124, 105, 10, 183, 193, 201, 238, 244, 42, 234, 195, 70, 18, 42, 194, 11, 235, 24, 239, 183, 239, 146, 112, 177, 181, 50, 199, 204, 87, 161, 188, 170, 181, 185, 204, 247, 25, 182, 102, 50, 53, 107, 55, 132, 195, 165, 201, 33, 31, 222, 71, 122, 186, 183, 239, 85, 201, 115, 10, 63, 158, 114, 208, 226, 39, 240, 190, 227, 129, 138, 68, 212, 222, 187, 247, 57, 203, 106, 9, 221, 30, 150, 5, 135, 80, 220, 88, 199, 234, 246, 197, 31, 125, 114, 153, 182, 131, 240, 22, 63, 31, 225, 76, 56, 216, 204, 92, 6, 252, 252, 219, 193, 34, 159, 230, 32, 21, 157, 55, 151, 125, 154, 30, 94, 55, 241, 153, 212, 90, 96, 106, 253, 229, 208, 183, 255, 33, 110, 27, 190, 39, 40, 4, 74, 46, 41, 153, 225, 128, 170, 200, 121, 75, 231, 70, 95, 83, 160, 239, 246, 249, 250, 180, 230, 134, 192, 170, 86, 234, 216, 243, 9, 225, 168, 132, 164, 206, 188, 0, 185, 60, 123, 217, 243, 81, 91, 23, 115, 16, 73, 18, 209, 22, 46, 201, 51, 205, 71, 77, 43, 80, 3, 70, 81, 195, 193, 217, 60, 178, 172, 31, 136, 44, 106, 47, 53, 151, 233, 225, 120, 162, 82, 134, 224, 227, 145, 44, 129, 205, 198, 228, 6, 112, 5, 142, 9, 206, 118, 127, 57, 97, 68, 208, 249, 87, 25, 147, 89, 0, 36, 250, 8, 111, 39, 203, 253, 173, 224, 16, 244, 6, 5, 253, 134, 158, 31, 149, 31, 176, 235, 146, 59, 75, 52, 80, 89, 235, 177, 178, 63, 4, 165, 198, 34, 101, 196, 72, 235, 204, 117, 94, 3, 169, 224, 227, 95, 13, 92, 75, 121, 243, 51, 24, 134, 224, 1, 197, 183, 37, 225, 217, 253, 63, 157, 225, 51, 18, 189, 87, 94, 134, 176, 187, 17, 52, 216, 78, 105, 175, 121, 102, 98, 94, 6, 226, 41, 117, 105, 23, 254, 136, 98, 185, 80, 223, 163, 125, 69, 72, 160, 97, 144, 93, 18, 203, 215, 197, 109, 175, 70, 244, 59, 34, 73, 89, 201, 197, 233, 130, 3, 214, 146, 138, 92, 153, 82, 75, 157, 69, 45, 223, 188, 136, 41, 110, 203, 100, 164, 211, 52, 159, 50, 177, 95, 20, 68, 182, 208, 178, 63, 39, 205, 72, 126, 188, 34, 187, 114, 183, 248, 151, 179, 146, 51, 114, 229, 136, 216, 216, 141, 117, 227, 104, 195, 154, 6, 81, 159, 6, 213, 33, 54, 185, 21, 106, 135, 112, 150, 46, 235, 225, 91, 169, 50, 3, 181, 169, 107, 22, 39, 40, 198, 240, 203, 46, 144, 167, 207, 31, 20, 94, 138, 90, 209, 253, 177, 78, 24, 20, 248, 220, 175, 214, 180, 173, 80, 134, 68, 49, 175, 79, 215, 201, 243, 227, 232, 236, 101, 19, 193, 248, 70, 130, 92, 98, 67, 168, 128, 32, 132, 155, 200, 106, 117, 107, 175, 35, 83, 186, 46, 61, 122, 165, 35, 105, 114, 87, 16, 48, 205, 215, 172, 197, 208, 136, 177, 151, 121, 204, 246, 36, 28, 195, 65, 84, 119, 237, 128, 97, 8, 184, 153, 58, 221, 48, 139, 83, 114, 194, 178, 137, 236, 23, 229, 22, 95, 22, 106, 118, 58, 53, 203, 228, 56, 132, 29, 161, 87, 143, 128, 132, 42, 81, 33, 18, 211, 135, 120, 7, 58, 74, 78, 137, 236, 121, 9, 126, 61, 227, 199, 175, 181, 243, 201, 64, 163, 138, 64, 184, 233, 87, 35, 60, 20, 224, 102, 235, 193, 114, 217, 14, 6, 152, 245, 117, 160, 6, 224, 89, 67, 145, 178, 66, 71, 235, 101, 34, 195, 102, 134, 5, 172, 114, 157, 60, 167, 9, 196, 182, 76, 225, 35, 89, 160, 0, 2, 7, 172, 51, 149, 211, 26, 106, 225, 67, 28, 198, 249, 73, 90, 7, 0, 137, 67, 76, 222, 160, 110, 29, 51, 125, 139, 223, 165, 24, 66, 25, 186, 9, 11, 114, 13, 128, 187, 123, 136, 203, 124, 103, 81, 13, 244, 246, 213, 216, 157, 84, 160, 48, 115, 252, 185, 149, 201, 70, 74, 120, 43, 131, 152, 36, 181, 233, 154, 138, 50, 57, 239, 193, 182, 227, 167, 196, 195, 14, 78, 183, 49, 219, 199, 40, 135, 196, 251, 211, 198, 183, 156, 186, 17, 57, 208, 227, 1, 5, 26, 77, 234, 219, 198, 56, 3, 2, 92, 71, 60, 142, 169, 49, 89, 104, 169, 19, 133, 49, 30, 83, 203, 158, 94, 171, 160, 173, 213, 174, 131, 251, 38, 34, 69, 184, 247, 147, 28, 71, 88, 11, 162, 220, 0, 235, 207, 159, 167, 44, 130, 27, 138, 140, 238, 215, 255, 228, 73, 211, 210, 122, 40, 208, 50, 42, 138, 33, 116, 248, 237, 238, 97, 82, 137, 183, 217, 95, 41, 245, 2, 7, 247, 107, 10, 37, 144, 100, 222, 8, 239, 80, 117, 231, 231, 244, 67, 14, 29, 157, 171, 77, 97, 122, 179, 57, 114, 73, 207, 214, 127, 114, 248, 65, 164, 171, 92, 108, 81, 96, 152, 197, 47, 45, 210, 186, 109, 73, 77, 20, 113, 194, 65, 118, 68, 8, 165, 172, 170, 80, 109, 45, 96, 51, 246, 144, 56, 113, 114, 68, 167, 158, 138, 150, 183, 221, 208, 231, 32, 61, 98, 51, 64, 171, 36, 160, 251, 50, 126, 228, 32, 73, 109, 199, 242, 146, 255, 236, 177, 2, 135, 34, 216, 103, 35, 219, 120, 157, 60, 189, 23, 142, 135, 114, 103, 151, 55, 39, 37, 250, 93, 115, 242, 214, 77, 135, 37, 120, 126, 31, 28, 212, 137, 178, 22, 47, 237, 130, 115, 5, 150, 110, 222, 105, 82, 151, 11, 56, 164, 195, 30, 44, 142, 205, 101, 94, 186, 82, 3, 12, 57, 238, 86, 9, 119, 250, 112, 111, 204, 63, 130, 26, 123, 184, 99, 191, 103, 213, 202, 31, 30, 232, 13, 135, 214, 240, 56, 120, 56, 75, 87, 142, 129, 192, 123, 112, 18, 243, 137, 122, 137, 56, 182, 42, 228, 85, 204, 22, 111, 68, 65, 201, 159, 140, 68, 48, 204, 215, 120, 210, 43, 205, 72, 75, 117, 198, 246, 89, 116, 9, 33, 180, 161, 19, 181, 145, 100, 169, 229, 111, 104, 217, 143, 28, 132, 232, 156, 25, 227, 111, 119, 249, 181, 66, 16, 90, 196, 180, 74, 57, 55, 114, 34, 111, 15, 114, 9, 163, 73, 88, 87, 140, 225, 200, 61, 92, 126, 142, 223, 121, 134, 252, 252, 212, 188, 215, 111, 47, 112, 95, 98, 35, 73, 213, 22, 150, 3, 64, 87, 42, 140, 101, 8, 137, 60, 167, 144, 62, 106, 153, 122, 218, 117, 63, 144, 157, 248, 143, 117, 50, 220, 247, 108, 252, 219, 176, 225, 104, 98, 131, 74, 35, 141, 244, 221, 135, 18, 223, 95, 49, 210, 209, 89, 237, 155, 14, 85, 206, 32, 75, 203, 1, 193, 7, 94, 155, 138, 150, 35, 151, 122, 252, 60, 244, 245, 13, 115, 49, 137, 195, 67, 207, 245, 104, 32, 1, 143, 190, 19, 153, 6, 16, 240, 116, 173, 9, 169, 53, 129, 128, 180, 134, 100, 129, 168, 203, 48, 113, 126, 223, 185, 36, 106, 35, 226, 6, 247, 236, 82, 101, 215, 155, 242, 68, 186, 47, 90, 37, 246, 250, 51, 143, 140, 199, 131, 193, 34, 144, 197, 11, 44, 106, 44, 35, 67, 138, 181, 54, 175, 24, 255, 201, 250, 184, 131, 120, 235, 81, 72, 116, 125, 33, 47, 212, 184, 108, 186, 8, 148, 173, 14, 126, 37, 248, 29, 228, 225, 225, 228, 84, 53, 154, 218, 235, 108, 101, 23, 15, 174, 164, 15, 69, 5, 138, 189, 16, 22, 157, 50, 169, 162, 205, 237, 33, 194, 157, 54, 210, 73, 30, 89, 210, 33, 95, 120, 0, 187, 62, 252, 41, 184, 209, 64, 219, 182, 163, 253, 253, 44, 124, 13, 189, 67, 210, 155, 212, 161, 42, 114, 100, 147, 158, 47, 21, 174, 236, 192, 16, 176, 80, 166, 60, 8, 24, 203, 113, 120, 83, 213, 41, 167, 118, 185, 97, 251, 107, 247, 43, 211, 64, 44, 132, 124, 3, 224, 225, 108, 153, 10, 169, 46, 59, 150, 15, 61, 134, 193, 167, 21, 174, 27, 90, 29, 11, 119, 200, 163, 9, 150, 216, 207, 146, 110, 60, 247, 12, 66, 44, 186, 219, 237, 152, 152, 84, 242, 34, 42, 200, 107, 247, 33, 69, 78, 43, 253, 93, 59, 32, 48, 88, 85, 144, 172, 54, 78, 227, 58, 148, 167, 15, 120, 219, 17, 46, 28, 194, 106, 254, 128, 126, 251, 126, 88, 73, 156, 192, 227, 29, 29, 243, 206, 5, 47, 46, 46, 243, 119, 144, 252, 165, 123, 187, 56, 136, 228, 85, 34, 205, 156, 142, 67, 90, 109, 5, 53, 25, 9, 96, 73, 192, 123, 81, 53, 38, 253, 156, 248, 178, 216, 138, 186, 169, 218, 94, 240, 60, 14, 115, 114, 209, 18, 95, 66, 83, 180, 52, 124, 83, 63, 55, 211, 162, 41, 34, 113, 160, 2, 174, 102, 153, 25, 83, 102, 175, 194, 107, 63, 56, 93, 62, 175, 166, 192, 107, 219, 229, 236, 202, 189, 46, 216, 184, 171, 53, 65, 226, 32, 151, 34, 45, 149, 168, 151, 221, 50, 31, 47, 246, 79, 108, 14, 138, 128, 202, 16, 41, 48, 130, 17, 208, 6, 173, 252, 198, 216, 81, 162, 68, 157, 65, 97, 58, 152, 116, 135, 220, 247, 111, 141, 150, 177, 96, 119, 112, 243, 63, 157, 158, 27, 103, 139, 251, 148, 30, 165, 62, 223, 135, 147, 112, 171, 114, 68, 108, 30, 36, 50, 64, 93, 244, 242, 207, 197, 148, 140, 128, 167, 213, 32, 112, 103, 85, 234, 219, 172, 107, 41, 106, 214, 132, 217, 12, 7, 180, 203, 87, 130, 203, 110, 112, 216, 120, 10, 236, 222, 63, 14, 9, 173, 96, 96, 101, 69, 19, 80, 231, 200, 215, 101, 160, 155, 145, 20, 173, 103, 5, 7, 135, 191, 13, 13, 105, 133, 3, 186, 18, 185, 26, 239, 76, 111, 138, 170, 5, 70, 19, 50, 26, 174, 36, 105, 121, 252, 199, 101, 0, 175, 4, 135, 151, 196, 62, 90, 140, 32, 19, 79, 130, 184, 186, 4, 242, 134, 207, 214, 239, 250, 84, 150, 139, 103, 110, 147, 16, 114, 179, 40, 201, 115, 0, 120, 161, 80, 33, 165, 178, 124, 120, 103, 16, 23, 9, 33, 19, 230, 178, 203, 244, 216, 68, 81, 91, 175, 158, 182, 2, 107, 246, 228, 169, 95, 21, 208, 39, 219, 6, 103, 25, 98, 36, 207, 76, 69, 101, 132, 5, 211, 113, 69, 4, 33, 94, 143, 60, 22, 0, 63, 87, 42, 227, 181, 182, 171, 154, 178, 102, 226, 63, 197, 187, 25, 126, 43, 33, 171, 83, 199, 76, 178, 8, 198, 234, 72, 47, 121, 2, 238, 75, 70, 245, 223, 17, 0, 1, 147, 18, 252, 29, 157, 156, 9, 215, 156, 14, 133, 120, 81, 254, 123, 34, 20, 3, 170, 236, 156, 173, 252, 229, 255, 74, 248, 218, 241, 164, 155, 137, 129, 24, 7, 1, 47, 74, 247, 197, 46, 218, 198, 220, 51, 36, 46, 132, 78, 67, 191, 174, 41, 238, 68, 121, 32, 117, 26, 36, 65, 54, 114, 97, 172, 250, 141, 77, 73, 57, 39, 149, 241, 118, 148, 53, 142, 208, 236, 21, 101, 210, 9, 238, 33, 215, 30, 238, 238, 216, 14, 222, 210, 100, 56, 101, 8, 61, 46, 95, 155, 52, 14, 131, 7, 84, 67, 100, 239, 240, 235, 182, 78, 221, 20, 84, 143, 183, 54, 175, 78, 253, 101, 95, 62, 86, 235, 140, 126, 202, 22, 202, 116, 222, 205, 21, 16, 240, 65, 201, 162, 158, 204, 125, 78, 252, 170, 19, 220, 134, 248, 69, 165, 239, 247, 106, 79, 10, 148, 144, 234, 43, 7, 252, 181, 252, 186, 84, 233, 58, 194, 210, 212, 17, 183, 135, 159, 76, 200, 204, 43, 58, 236, 74, 126, 2, 55, 66, 91, 161, 63, 158, 166, 33, 105, 90, 105, 207, 48, 181, 43, 229, 138, 22, 207, 48, 125, 253, 150, 35, 96, 22, 181, 126, 114, 28, 206, 148, 227, 114, 21, 191, 19, 194, 56, 193, 255, 162, 103, 175, 103, 45, 33, 86, 54, 231, 174, 2, 34, 228, 42, 181, 187, 241, 6, 44, 18, 60, 10, 242, 254, 123, 34, 183, 31, 240, 48, 87, 116, 112, 199, 174, 206, 47, 223, 83, 204, 220, 58, 153, 54, 103, 7, 167, 53, 149, 96, 6, 240, 97, 10, 75, 177, 56, 24, 49, 188, 186, 101, 132, 44, 222, 72, 191, 241, 152, 151, 32, 30, 139, 213, 143, 8, 174, 70, 63, 177, 64, 123, 103, 99, 215, 226, 184, 218, 150, 81, 30, 70, 75, 120, 87, 184, 150, 111, 175, 228, 7, 116, 34, 39, 105, 250, 187, 209, 191, 84, 193, 27, 249, 136, 35, 103, 252, 253, 130, 224, 23, 165, 211, 123, 168, 208, 144, 153, 17, 182, 56, 237, 143, 251, 9, 150, 223, 56, 157, 247, 150, 232, 156, 101, 209, 128, 48, 82, 154, 34, 30, 218, 156, 51, 138, 241, 237, 84, 209, 87, 54, 14, 131, 130, 143, 86, 56, 157, 130, 117, 190, 219, 48, 129, 19, 125, 169, 198, 107, 14, 77, 101, 180, 49, 24, 29, 242, 229, 6, 167, 52, 108, 90, 184, 164, 120, 31, 252, 36, 81, 198, 243, 80, 223, 75, 118, 94, 32, 73, 127, 148, 45, 71, 193, 151, 133, 12, 146, 242, 242, 55, 240, 124, 15, 64, 213, 245, 247, 130, 173, 142, 32, 164, 178, 111, 221, 91, 133, 148, 205, 125, 59, 104, 46, 141, 145, 185, 8, 9, 123, 142, 113, 226, 30, 35, 210, 207, 193, 167, 234, 30], segment_lens = [711, 1288, 1400, 387, 1228, 810, 1981, 557, 20, 1535, 358], resent_lens = [447], directions = [true, true, true, true, true, false, false, true, true, false, true, false], fins = [false, false], extra_acks = 12, keep_alives = [(Initiator, Index(5534023222112865485))], lost = [(Index(2459565876494606883), None), (Index(636094623231363849), None), (Index(1976436865040309102), None), (Index(2049638230412172402), Some(Index(768614336404564651)))], windows = [1], config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc da980ac560d3d29647ea1baf7d275c1b3503d8798617bff65cda5fb26bb24c6a # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [176, 219, 162, 72, 53, 61, 244, 184, 213, 214, 10, 137, 41, 97, 91, 244, 80, 239, 105, 184, 180, 199, 247, 160, 213, 17, 167, 233, 51, 75, 136, 50, 252, 236, 44, 48, 86, 162, 126, 245, 71, 76, 81, 53, 201, 42, 112, 103, 224, 176, 239, 113, 79, 218, 227, 24, 178, 217, 137, 191, 148, 104, 29, 55, 247, 175, 8, 127, 156, 211, 74, 186, 137, 143, 161, 159, 25, 24, 82, 175, 229, 231, 143, 178, 242, 70, 92, 49, 41, 138, 89, 57, 169, 102, 136, 132, 162, 64, 173, 142, 163, 232, 18, 151, 160, 100, 149, 97, 227, 117, 163, 95, 248, 175, 146, 198, 184, 113, 21, 46, 200, 231, 158, 199, 177, 127, 247, 127, 185, 130, 161, 65, 209, 186, 215, 255, 187, 161, 203, 183, 92, 55, 70, 26, 156, 5, 125, 25, 16, 149, 158, 119, 146, 180, 66, 151, 126, 242, 32, 64, 7, 242, 208, 80, 120, 0, 151, 196, 211, 151, 228, 128, 220, 103, 7, 29, 16, 27, 167, 167, 169, 180, 136, 193, 12, 88, 187, 218, 164, 191, 163, 237, 84, 87, 220, 199, 91, 69, 213, 59, 204, 109, 71, 15, 166, 40, 65, 142, 47, 228, 166, 192, 101, 242, 34, 73, 198, 247, 160, 118, 70, 184, 129, 157, 199, 105, 54, 18, 70, 154, 21, 247, 50, 240, 229, 190, 4, 229, 204, 223, 156, 76, 122, 23, 208, 224, 61, 205, 228, 178, 14, 46, 171, 57, 165, 175, 176, 86, 195, 195, 198, 29, 60, 134, 210, 252, 49, 191, 193, 161, 230, 207, 149, 174, 179, 201, 112, 251, 145, 105, 28, 205, 147, 196, 66, 186, 43, 155, 213, 207, 65, 184, 169, 125, 55, 50, 85, 50, 49, 113, 23, 160, 245, 126, 119, 172, 93, 186, 251, 60, 9, 70, 96, 200, 74, 164, 151, 113, 121, 90, 214, 105, 186, 73, 135, 211, 71, 123, 135, 141, 185, 98, 3, 78, 164, 117, 144, 2, 36, 157, 170, 101, 166, 179, 184, 174, 91, 95, 134, 50, 76, 226, 126, 23, 244, 13, 115, 164, 19, 245, 254, 40, 199, 28, 112, 201, 39, 206, 178, 162, 241, 0, 178, 186, 159, 60, 162, 101, 60, 108, 22, 38, 108, 185, 164, 200, 88, 204, 182, 77, 208, 5, 167, 188, 127, 250, 161, 108, 129, 53, 192, 55, 14, 206, 122, 208, 249, 100, 14, 87, 237, 201, 96, 21, 19, 13, 189, 168, 120, 146, 184, 192, 219, 62, 21, 66, 90, 131, 9, 119, 29, 25, 173, 11, 16, 22, 50, 84, 29, 180, 251, 127, 211, 99, 93, 150, 221, 140, 74, 209, 62, 245, 40, 59, 133, 50, 98, 179, 216, 45, 12, 4, 82, 33, 47, 109, 188, 55, 29, 5, 178, 70, 197, 197, 221, 159, 145, 13, 181, 13, 17, 9, 207, 88, 240, 127, 38, 6, 30, 249, 120, 220, 15, 189, 53, 237, 35, 200, 155, 32, 82, 130, 160, 47, 108, 113, 87, 225, 94, 25, 65, 243, 87, 187, 24, 76, 194, 18, 53, 129, 249, 239, 153, 19, 207, 214, 144, 24, 131, 6, 28, 250, 164, 26, 29, 219, 80, 171, 30, 181, 17, 211, 25, 102, 78, 83, 127, 17, 180, 47, 164, 221, 195, 182, 171, 156, 55, 123, 231, 158, 214, 34, 223, 94, 241, 138, 115, 11, 118, 33, 206, 232, 220, 99, 132, 144, 125, 9, 46, 0, 253, 79, 185, 129, 183, 142, 49, 37, 161, 45, 45, 8, 47, 125, 71, 14, 102, 90, 123, 218, 195, 68, 31, 241, 103, 96, 92, 123, 33, 96, 58, 163, 166, 152, 97, 125, 94, 66, 17, 127, 8, 89, 28, 45, 247, 22, 84, 58, 12, 125, 219, 67, 114, 11, 207, 252, 21, 191, 140, 143, 84, 187, 55, 63, 249, 237, 35, 174, 202, 42, 36, 25, 151, 41, 9, 188, 91, 177, 138, 141, 121, 234, 144, 141, 193, 174, 57, 53, 208, 109, 162, 58, 63, 224, 202, 251, 133, 34, 234, 143, 147, 247, 18, 180, 203, 133, 191, 138, 122, 192, 224, 96, 148, 22, 163, 40, 207, 140, 79, 15, 207, 17, 11, 27, 190, 172, 73, 232, 153, 86, 68, 230, 186, 191, 70, 164, 184, 48, 245, 76, 84, 23, 171, 254, 14, 126, 195, 242, 137, 69, 132, 251, 202, 46, 242, 187, 114, 223, 216, 226, 146, 173, 255, 235, 101, 43, 56, 82, 213, 38, 247, 69, 253, 120, 230, 89, 155, 236, 212, 32, 1, 245, 28, 57, 3, 124, 223, 231, 193, 167, 30, 152, 135, 67, 189, 235, 131, 22, 44, 132, 89, 161, 95, 125, 202, 114, 120, 44, 217, 171, 225, 164, 109, 166, 121, 113, 173, 53, 9, 196, 2, 93, 72, 10, 168, 170, 162, 19, 93, 168, 62, 132, 100, 146, 231, 56, 230, 96, 213, 96, 134, 144, 77, 149, 236, 55, 12, 67, 117, 241, 159, 235, 232, 3, 15, 75, 16, 68, 27, 196, 132, 182, 193, 55, 247, 235, 27, 148, 33, 248, 188, 106, 203, 146, 195, 226, 76, 72, 5, 51, 107, 253, 86, 61, 43, 252, 57, 169, 191, 80, 173, 178, 172, 15, 226, 22, 56, 180, 224, 189, 219, 108, 234, 80, 61, 144, 35, 129, 31, 57, 40, 39, 227, 5, 49, 109, 141, 240, 106, 24, 68, 241, 182, 241, 211, 96, 251, 77, 136, 177, 221, 112, 148, 13, 36, 67, 200, 5, 114, 89, 225, 219, 230, 255, 176, 137, 170, 249, 152, 245, 244, 68, 187, 21, 64, 92, 86, 137, 27, 62, 165, 79, 90, 109, 206, 39, 103, 233, 157, 135, 249, 92, 50, 28, 75, 22, 185, 213, 111, 229, 153, 181, 28, 197, 202, 246, 87, 196, 166, 127, 18, 66, 114, 147, 80, 246, 16, 250, 209, 234, 54, 86, 145, 110, 226, 223, 121, 234, 232, 250, 45, 99, 36, 206, 80, 141, 194, 175, 170, 226, 225, 35, 171, 219, 205, 226, 66, 141, 34, 199, 122, 213, 162, 151, 188, 82, 6, 11, 243, 163, 90, 215, 62, 125, 152, 131, 198, 52, 65, 123, 226, 93, 221, 44, 185, 51, 153, 202, 252, 22, 222, 70, 130, 6, 111, 116, 18, 44, 87, 23, 95, 10, 235, 52, 181, 6, 70, 128, 91, 110, 104, 75, 177, 229, 4, 169, 62, 134, 45, 115, 65, 145, 190, 63, 122, 39, 4, 18, 111, 252, 206, 84, 92, 31, 111, 223, 164, 22, 52, 179, 180, 233, 52, 153, 121, 16, 224, 158, 59, 243, 61, 174, 72, 2, 149, 140, 153, 152, 136, 10, 150, 37, 169, 210, 136, 146, 86, 212, 149, 234, 240, 13, 68, 170, 128, 201, 67, 141, 89, 247, 130, 32, 201, 136, 41, 109, 7, 112, 84, 55, 69, 26, 248, 12, 26, 230, 5, 87, 223, 177, 178, 34, 115, 127, 82, 43, 245, 229, 222, 50, 93, 42, 127, 81, 149, 203, 83, 78, 237, 17, 117, 27, 244, 185, 244, 218, 60, 47, 162, 203, 212, 19, 109, 65, 209, 178, 223, 172, 93, 29, 10, 133, 18, 253, 238, 198, 133, 253, 179, 154, 10, 173, 61, 17, 106, 132, 22, 165, 70, 123, 59, 41, 69, 234, 99, 192, 73, 141, 31, 122, 214, 62, 17, 159, 154, 41, 79, 135, 95, 56, 122, 31, 110, 92, 212, 36, 240, 178, 185, 126, 163, 212, 236, 119, 218, 111, 161, 238, 47, 52, 63, 108, 195, 42, 93, 163, 42, 244, 46, 89, 138, 155, 26, 242, 106, 30, 5, 237, 213, 74, 243, 83, 9, 1, 98, 174, 33, 38, 176, 231, 91, 232, 37, 103, 170, 94, 95, 111, 96, 110, 111, 41, 217, 44, 189, 158, 6, 147, 59, 25, 195, 57, 183, 44, 196, 183, 242, 125, 146, 26, 122, 194, 215, 252, 58, 128, 233, 183, 146, 224, 157, 136, 87, 242, 186, 132, 90, 231, 201, 201, 162, 88, 9, 83, 251, 210, 8, 9, 248, 235, 8, 150, 136, 135, 9, 58, 129, 0, 121, 229, 105, 165, 192, 34, 82, 22, 207, 35, 93, 75, 4, 116, 156, 200, 55, 222, 223, 225, 107, 247, 171, 242, 11, 148, 33, 155, 215, 240, 213, 198, 63, 84, 166, 130, 149, 238, 97, 1, 153, 235, 29, 163, 188, 70, 206, 2, 66, 99, 233, 26, 166, 81, 153, 77, 149, 122, 103, 239, 18, 90, 146, 84, 202, 224, 217, 224, 45, 37, 130, 53, 187, 14, 94, 246, 31, 22, 176, 251, 234, 118, 6, 202, 45, 239, 4, 221, 213, 240, 226, 173, 241, 77, 238, 60, 221, 72, 192, 157, 160, 39, 152, 235, 49, 170, 142, 23, 145, 102, 206, 96, 42, 105, 45, 108, 123, 182, 139, 83, 228, 48, 186, 234, 108, 141, 184, 222, 1, 250, 199, 72, 170, 84, 18, 2, 32, 70, 213, 104, 89, 214, 202, 66, 64, 26, 88, 196, 159, 232, 216, 67, 171, 174, 123, 163, 17, 239, 163, 237, 194, 234, 10, 84, 89, 243, 232, 86, 193, 156, 163, 25, 107, 83, 200, 150, 30, 149, 45, 73, 32, 24, 129, 60, 203, 208, 77, 82, 45, 254, 215, 187, 165, 222, 13, 70, 14, 84, 152, 56, 159, 88, 29, 15, 4, 22, 6, 165, 43, 189, 131, 29, 58, 38, 199, 99, 216, 33, 90, 101, 43, 193, 67, 14, 95, 251, 213, 117, 25, 41, 72, 151, 97, 228, 159, 252, 128, 230, 39, 80, 193, 227, 247, 142, 72, 6, 175, 146, 49, 125, 113, 26, 145, 97, 249, 8, 145, 121, 250, 193, 158, 184, 159, 35, 109, 222, 105, 51, 62, 184, 43, 234, 13, 30, 238, 230, 104, 49, 142, 47, 96, 199, 20, 171, 67, 68, 210, 180, 7, 206, 24, 94, 151, 120, 164, 213, 207, 122, 209, 88, 121, 79, 8, 134, 222, 244, 97, 39, 68, 59, 88, 222, 33, 227, 153, 251, 128, 185, 199, 212, 97, 32, 52, 243, 124, 177, 125, 83, 42, 232, 62, 128, 134, 120, 152, 156, 94, 36, 142, 118, 167, 151, 179, 85, 56, 33, 120, 180, 143, 114, 109, 186, 55, 118, 172, 71, 143, 211, 8, 216, 13, 165, 213, 221, 68, 59, 168, 85, 198, 124, 184, 14, 119, 51, 104, 1, 127, 156, 147, 92, 27, 170, 181, 113, 165, 207, 187, 3, 160, 142, 3, 210, 60, 195, 224, 254, 105, 138, 22, 17, 234, 235, 21, 227, 179, 132, 184, 137, 5, 212, 253, 191, 243, 99, 13, 185, 233, 57, 229, 92, 220, 250, 232, 171, 167, 71, 227, 116, 215, 18, 70, 90, 181, 148, 128, 139, 85, 122, 215, 208, 134, 87, 170, 18, 66, 227, 25, 35, 162, 248, 73, 4, 111, 197, 121, 12, 49, 15, 173, 173, 84, 35, 111, 12, 200, 9, 156, 144, 28, 241, 46, 195, 47, 54, 126, 27, 68, 120, 127, 55, 74, 234, 94, 71, 144, 236, 209, 114, 156, 21, 221, 8, 180, 12, 8, 74, 237, 170, 213, 230, 239, 113, 207, 11, 109, 19, 71, 14, 9, 131, 125, 98, 180, 165, 150, 7, 29, 75, 209, 252, 216, 116, 237, 97, 3, 220, 13, 192, 90, 228, 3, 39, 204, 70, 68, 179, 66, 130, 122, 250, 21, 244, 145, 108, 147, 16, 30, 16, 255, 57, 217, 37, 84, 40, 68, 168, 40, 32, 182, 168, 140, 248, 113, 6, 42, 156, 226, 214, 217, 200, 238, 38, 143, 125, 253, 70, 145, 224, 49, 78, 91, 107, 11, 109, 247, 114, 171, 176, 45, 1, 33, 74, 5, 18, 166, 134, 76, 168, 192, 159, 231, 100, 76, 82, 248, 73, 195, 55, 223, 221, 103, 115, 205, 113, 149, 16, 53, 123, 47, 246, 159, 24, 112, 215, 81, 159, 129, 166, 24, 207, 200, 42, 253, 49, 158, 118, 192, 96, 107, 196, 4, 161, 243, 229, 34, 116, 50, 75, 230, 15, 127, 229, 87, 76, 254, 249, 100, 21, 40, 123, 230, 102, 115, 84, 248, 142, 14, 115, 117, 131, 254, 42, 59, 110, 223, 28, 100, 53, 119, 73, 150, 74, 241, 1, 131, 83, 178, 245, 206, 234, 168, 33, 42, 190, 107, 253, 146, 192, 246, 35, 222, 25, 144, 207, 228, 177, 74, 33, 126, 214, 113, 78, 112, 105, 114, 97, 245, 155, 169, 223, 39, 251, 98, 109, 216, 34, 158, 9, 110, 133, 37, 47, 40, 139, 37, 205, 70, 206, 217, 95, 114, 155, 210, 127, 64, 101, 23, 7, 116, 239, 63, 36, 195, 66, 241, 3, 27, 194, 66, 33, 252, 211, 176, 107, 225, 120, 202, 145, 81, 79, 214, 207, 180, 148, 22, 152, 185, 101, 94, 228, 63, 149, 214, 155, 232, 181, 202, 47, 70, 182, 208, 62, 48, 224, 156, 161, 196, 63, 126, 114, 32, 169, 242, 83, 77, 251, 232, 194, 180, 225, 209, 185, 231, 113, 207, 73, 157, 224, 141, 206, 205, 228, 53, 251, 81, 167, 70, 69, 23, 158, 213, 74, 138, 128, 17, 10, 43, 48, 160, 238, 23, 6, 112, 142, 98, 100, 205, 73, 163, 32, 220, 167, 161, 247, 57, 241, 2, 163, 217, 10, 234, 131, 68, 69, 135, 209, 77, 135, 90, 68, 191, 70, 226, 200, 7, 2, 97, 40, 152, 82, 80, 72, 150, 178, 132, 121, 157, 159, 26, 199, 212, 20, 130, 157, 137, 128, 222, 74, 12, 22, 236, 88, 21, 187, 18, 51, 178, 171, 243, 224, 237, 9, 150, 23, 77, 23, 160, 206, 122, 207, 35, 115, 73, 68, 12, 222, 232, 107, 84, 208, 22, 144, 221, 116, 166, 37, 18, 166, 161, 100, 237, 206, 6, 144, 17, 16, 59, 41, 51, 224, 9, 6, 240, 206, 149, 27, 227, 237, 206, 154, 141, 90, 112, 163, 163, 10, 69, 1, 254, 216, 192, 144, 207, 222, 198, 146, 186, 17, 27, 16, 26, 77, 107, 38, 69, 193, 11, 187, 222, 55, 205, 88, 189, 73, 40, 63, 196, 222, 165, 174, 29, 32, 196, 118, 129, 58, 74, 196, 160, 138, 8, 159, 195, 41, 221, 75, 97, 209, 134, 191, 120, 130, 34, 17, 152, 196, 76, 90, 120, 4, 186, 219, 231, 193, 18, 15, 205, 128, 6, 181, 36, 27, 205, 120, 74, 176, 97, 195, 5, 60, 194, 1, 1, 202, 129, 198, 11, 221, 237, 66, 96, 72, 56, 202, 66, 233, 14, 14, 98, 25, 133, 217, 37, 78, 56, 178, 135, 191, 8, 53, 185, 193, 11, 194, 209, 158, 92, 190, 219, 228, 98, 162, 37, 155, 117, 75, 184, 153, 122, 97, 229, 176, 181, 214, 236, 47, 94, 37, 77, 126, 235, 3, 255, 31, 20, 86, 223, 109, 198, 208, 178, 209, 221, 99, 26, 19, 26, 110, 49, 196, 19, 31, 205, 6, 187, 108, 216, 183, 56, 169, 78, 90, 66, 126, 150, 140, 169, 5, 71, 180, 154, 20, 232, 144, 254, 246, 33, 93, 192, 93, 219, 226, 193, 127, 186, 44, 108, 170, 113, 67, 179, 243, 241, 53, 20, 187, 40, 34, 116, 203, 247, 180, 239, 53, 241, 174, 52, 202, 133, 254, 7, 73, 29, 106, 161, 106, 106, 119, 215, 173, 238, 218, 209, 26, 188, 203, 181, 143, 102, 241, 41, 120, 251, 239, 128, 37, 136, 23, 133, 59, 207, 22, 167, 239, 191, 218, 129, 64, 171, 204, 151, 217, 36, 129, 164, 78, 27, 39, 155, 204, 14, 51, 67, 202, 14, 156, 92, 199, 103, 140, 193, 226, 126, 43, 163, 2, 224, 128, 143, 106, 85, 74, 106, 41, 141, 132, 151, 5, 229, 111, 234, 177, 57, 42, 190, 79, 97, 66, 45, 215, 211, 207, 66, 230, 244, 31, 243, 152, 246, 149, 173, 201, 214, 223, 221, 58, 32, 143, 215, 170, 91, 131, 187, 121, 30, 51, 108, 55, 249, 180, 21, 119, 72, 224, 226, 195, 29, 120, 1, 194, 151, 254, 33, 55, 195, 7, 240, 139, 186, 60, 168, 188, 73, 87, 90, 225, 130, 230, 247, 157, 196, 251, 155, 177, 58, 34, 55, 253, 249, 14, 162, 139, 234, 212, 97, 21, 169, 209, 74, 214, 57, 220, 25, 90, 115, 180, 93, 220, 33, 95, 0, 115, 243, 0, 228, 154, 34, 221, 25, 80, 176, 97, 116, 231, 49, 156, 61, 59, 125, 2, 186, 105, 126, 118, 188, 100, 177, 118, 26, 200, 180, 82, 172, 230, 73, 82, 73, 8, 13, 92, 211, 34, 176, 38, 76, 101, 73, 78, 225, 167, 250, 123, 212, 239, 93, 65, 218, 171, 236, 130, 232, 13, 122, 40, 114, 226, 196, 10, 90, 60, 81, 194, 201, 93, 15, 231, 156, 10, 222, 62, 3, 240, 215, 249, 214, 170, 194, 73, 37, 245, 140, 94, 93, 135, 210, 6, 20, 85, 78, 105, 89, 140, 68, 170, 238, 69, 159, 43, 235, 71, 172, 123, 245, 175, 187, 188, 75, 159, 89, 137, 3, 93, 3, 158, 0, 211, 231, 145, 131, 215, 39, 214, 162, 184, 159, 200, 1, 146, 240, 65, 227, 200, 86, 107, 128, 19, 196, 240, 146, 28, 156, 113, 64, 247, 205, 99, 216, 90, 99, 39, 197, 161, 69, 175, 142, 122, 150, 23, 109, 172, 22, 110, 231, 178, 33, 26, 250, 50, 188, 84, 227, 227, 102, 158, 81, 190, 122, 155, 214, 0, 204, 104, 252, 253, 36, 173, 22, 223, 174, 95, 108, 229, 20, 84, 219, 229, 105, 68, 140, 241, 46, 70, 107, 50, 255, 117, 97, 103, 101, 37, 61, 62, 97, 30, 79, 210, 77, 167, 214, 231, 47, 109, 85, 103, 130, 58, 111, 245, 154, 247, 91, 249, 41, 14, 205, 39, 20, 114, 213, 9, 31, 102, 249, 200, 66, 234, 183, 148, 89, 255, 248, 93, 20, 3, 204, 205, 122, 42, 44, 200, 79, 139, 17, 191, 202, 91, 133, 43, 27, 26, 95, 126, 224, 222, 96, 26, 15, 154, 156, 98, 59, 120, 70, 240, 139, 58, 81, 99, 198, 253, 121, 53, 92, 181, 73, 98, 143, 186, 171, 143, 115, 221, 101, 209, 29, 197, 183, 168, 122, 160, 169, 46, 110, 194, 182, 53, 103, 222, 144, 161, 222, 238, 1, 99, 160, 173, 70, 45, 234, 61, 12, 240, 209, 154, 39, 81, 184, 250, 181, 35, 212, 210, 102, 130, 210, 213, 173, 202, 62, 130, 219, 178, 155, 193, 240, 91, 251, 155, 230, 75, 186, 134, 191, 172, 144, 17, 2, 158, 96, 121, 118, 194, 45, 143, 232, 180, 33, 21, 170, 114, 141, 229, 117, 177, 68, 38, 47, 0, 248, 232, 156, 156, 41, 44, 14, 130, 18, 60, 12, 117, 107, 193, 48, 115, 129, 53, 81, 111, 84, 19, 44, 245, 195, 192, 141, 188, 48, 232, 228, 98, 137, 172, 60, 183, 165, 171, 34, 74, 164, 86, 137, 253, 155, 0, 180, 186, 29, 12, 211, 222, 169, 20, 59, 121, 18, 70, 58, 23, 77, 43, 123, 140, 172, 240, 105, 154, 226, 251, 165, 193, 11, 66, 189, 33, 106, 53, 204, 2, 162, 0, 138, 37, 179, 133, 131, 16, 138, 67, 88, 104, 136, 50, 221, 220, 229, 130, 171, 239, 77, 144, 116, 139, 148, 44, 58, 158, 193, 25, 113, 116, 241, 188, 229, 122, 100, 19, 194, 146, 89, 68, 210, 71, 147, 31, 189, 88, 14, 181, 150, 168, 197, 136, 152, 219, 99, 74, 11, 136, 99, 91, 50, 141, 197, 104, 246, 215, 11, 120, 237, 9, 222, 27, 156, 129, 94, 130, 129, 185, 117, 187, 182, 41, 45, 197, 188, 128, 147, 20, 224, 98, 6, 122, 67, 70, 237, 163, 220, 15, 8, 189, 177, 132, 230, 206, 180, 229, 82, 224, 192, 110, 33, 51, 206, 98, 16, 234, 195, 193, 17, 162, 252, 79, 134, 144, 75, 11, 207, 73, 73, 2, 43, 96, 190, 183, 106, 12, 91, 208, 134, 232, 66, 128, 155, 240, 73, 10, 161, 133, 121, 232, 11, 136, 168, 82, 173, 114, 102, 123, 65, 66, 41, 207, 209, 192, 196, 120, 31, 125, 21, 93, 16, 169, 35, 222, 215, 99, 254, 114, 49, 0, 218, 91, 111, 27, 185, 104, 192, 172, 180, 194, 202, 147, 164, 251, 76, 8, 46, 21, 98, 72, 14, 191, 14, 229, 206, 162, 190, 124, 238, 134, 142, 159, 25, 211, 39, 244, 249, 237, 55, 84, 101, 57, 252, 43, 228, 227, 90, 18, 73, 104, 57, 207, 61, 73, 25, 123, 164, 187, 18, 185, 30, 22, 217, 116, 106, 104, 156, 102, 108, 180, 23, 4, 91, 24, 209, 220, 124, 78, 85, 234, 243, 153, 174, 232, 203, 126, 161, 250, 90, 152, 190, 151, 132, 242, 239, 231, 72, 73, 144, 180, 209, 82, 199, 234, 77, 41, 232, 135, 183, 110, 38, 233, 204, 213, 52, 166, 74, 175, 245, 108, 126, 166, 23, 205, 154, 3, 203, 131, 52, 53, 84, 7, 28, 40, 148, 163, 200, 184, 241, 213, 239, 90, 49, 246, 154, 116, 133, 92, 202, 242, 223, 227, 24, 222, 16, 131, 113, 83, 67, 167, 225, 56, 74, 99, 126, 33, 190, 77, 122, 122, 192, 115, 114, 242, 6, 249, 165, 145, 26, 138, 252, 124, 41, 116, 222, 8, 57, 14, 204, 231, 227, 247, 40, 174, 205, 100, 252, 112, 109, 58, 208, 162, 54, 147, 220, 233, 33, 104, 195, 180, 100, 79, 117, 244, 191, 28, 111, 18, 254, 215, 96, 42, 236, 164, 105, 67, 183, 6, 186, 39, 240, 225, 109, 9, 163, 56, 67, 229, 211, 150, 58, 198, 223, 31, 112, 247, 252, 100, 141, 119, 209, 172, 91, 244, 48, 46, 177, 92, 62, 126, 232, 54, 93, 154, 175, 56, 51, 207, 68, 200, 21, 125, 170, 135, 76, 186, 146, 160, 29, 147, 187, 190, 171, 21, 254, 96, 246, 163, 93, 61, 41, 223, 121, 29, 237, 90, 69, 219, 162, 187, 191, 142, 64, 197, 1, 148, 161, 206, 221, 241, 2, 20, 77, 218, 212, 12, 130, 19, 14, 48, 30, 93, 39, 93, 236, 137, 93, 204, 215, 121, 180, 163, 224, 144, 103, 33, 176, 37, 179, 26, 48, 188, 23, 156, 176, 151, 226, 45, 87, 11, 227, 155, 183, 94, 163, 236, 243, 40, 61, 244, 185, 51, 204, 178, 66, 161, 163, 90, 127, 248, 29, 158, 191, 244, 165, 252, 150, 65, 159, 117, 123, 193, 163, 17, 63, 118, 116, 59, 7, 30, 34, 15, 231, 216, 126, 112, 232, 37, 143, 237, 185, 24, 148, 12, 104, 120, 207, 141, 170, 57, 211, 141, 186, 30, 115, 241, 128, 141, 141, 99, 199, 214, 153, 92, 193, 222, 39, 113, 63, 15, 13, 186, 218, 186, 152, 171, 246, 181, 248, 187, 160, 151, 205, 216, 161, 168, 50, 47, 156, 174, 25, 241, 160, 84, 33, 78, 148, 118, 56, 214, 124, 164, 172, 6, 157, 239, 126, 193, 39, 18, 191, 160, 135, 162, 67, 220, 66, 83, 116, 106, 77, 66, 148, 180, 34, 180, 109, 227, 68, 151, 103, 97, 148, 12, 5, 213, 194, 173, 149, 206, 211, 150, 126, 69, 248, 145, 31, 197, 4, 124, 16, 20, 206, 45, 196, 60, 78, 49, 250, 215, 133, 173, 230, 251, 39, 188, 240, 189, 13, 142, 170, 17, 114, 23, 174, 242, 202, 4, 201, 148, 120, 222, 34, 181, 241, 218, 252, 214, 103, 214, 55, 2, 105, 137, 88, 113, 5, 79, 187, 97, 177, 121, 25, 76, 20, 238, 201, 193, 3, 135, 217, 4, 116, 177, 74, 242, 229, 74, 179, 216, 231, 220, 124, 103, 94, 45, 158, 148, 106, 171, 75, 244, 141, 172, 92, 16, 254, 80, 241, 201, 39, 160, 43, 254, 162, 164, 164, 185, 215, 99, 6, 239, 180, 226, 144, 64, 127, 95, 77, 29, 83, 239, 151, 146, 229, 175, 76, 175, 68, 103, 254, 70, 34, 30, 31, 111, 86, 3, 59, 23, 229, 240, 229, 138, 4, 41, 180, 217, 125, 22, 75, 82, 86, 103, 242, 186, 124, 41, 28, 125, 251, 154, 155, 111, 203, 200, 239, 84, 173, 32, 154, 4, 189, 67, 69, 158, 56, 112, 237, 10, 135, 95, 9, 207, 174, 124, 102, 179, 125, 241, 196, 29, 14, 180, 176, 9, 120, 241, 35, 224, 178, 251, 156, 207, 194, 221, 30, 141, 96, 85, 184, 253, 51, 214, 178, 195, 145, 158, 143, 152, 68, 86, 156, 106, 96, 43, 161, 87, 223, 67, 167, 20, 224, 32, 224, 16, 208, 50, 1, 121, 81, 213, 108, 5, 209, 130, 244, 179, 113, 46, 149, 97, 156, 92, 195, 201, 95, 86, 168, 161, 108, 144, 56, 103, 81, 215, 211, 116, 97, 87, 123, 11, 205, 247, 26, 121, 106, 187, 20, 181, 84, 155, 52, 121, 48, 88, 73, 235, 55, 19, 63, 77, 41, 155, 174, 177, 164, 7, 240, 51, 83, 104, 253, 119, 200, 176, 58, 243, 68, 148, 149, 92, 91, 72, 56, 97, 139, 142, 46, 89, 131, 84, 121, 121, 107, 146, 43, 43, 240, 138, 143, 207, 140, 83, 143, 133, 153, 200, 45, 167, 6, 118, 14, 171, 63, 56, 114, 54, 110, 55, 220, 187, 154, 234, 8, 240, 219, 42, 49, 61, 39, 65, 134, 107, 94, 12, 64, 104, 182, 198, 88, 46, 55, 173, 146, 176, 196, 5, 204, 63, 43, 233, 29, 89, 139, 254, 3, 156, 147, 152, 91, 132, 187, 184, 239, 239, 229, 64, 79, 103, 166, 210, 153, 214, 129, 250, 163, 11, 23, 117, 24, 40, 84, 80, 111, 23, 104, 7, 110, 180, 214, 218, 212, 189, 162, 22, 110, 108, 96, 51, 182, 178, 222, 12, 224, 74, 250, 179, 197, 11, 118, 182, 245, 50, 69, 245, 39, 29, 157, 42, 66, 99, 52, 106, 123, 70, 173, 223, 194, 16, 55, 218, 52, 19, 141, 14, 224, 116, 126, 134, 133, 240, 188, 79, 138, 77, 229, 42, 233, 68, 239, 176, 196, 38, 249, 246, 86, 47, 122, 7, 166, 150, 96, 248, 204, 229, 144, 234, 15, 120, 120, 159, 33, 152, 38, 224, 169, 253, 110, 255, 236, 155, 20, 144, 12, 187, 100, 143, 8, 88, 140, 27, 168, 84, 183, 197, 103, 51, 138, 167, 201, 232, 85, 189, 23, 227, 247, 241, 174, 220, 36, 252, 193, 125, 255, 19, 233, 63, 84, 128, 234, 131, 152, 91, 59, 172, 58, 143, 99, 246, 84, 10, 156, 163, 127, 187, 103, 61, 203, 134, 123, 181, 164, 85, 113, 44, 126, 31, 145, 14, 18, 31, 195, 244, 136, 43, 15, 80, 27, 210, 217, 24, 25, 66, 229, 58, 221, 20, 173, 217, 234, 106, 219, 88, 191, 74, 118, 74, 52, 6, 46, 229, 65, 234, 57, 16, 161, 159, 135, 140, 82, 82, 166, 29, 253, 85, 61, 106, 172, 27, 251, 162, 54, 238, 16, 191, 208, 198, 70, 68, 227, 123, 207, 253, 60, 154, 198, 54, 194, 169, 105, 191, 146, 44, 153, 112, 102, 22, 143, 192, 247, 253, 11, 61, 70, 101, 82, 131, 22, 119, 44, 109, 96, 217, 42, 7, 194, 32, 65, 57, 243, 29, 176, 56, 109, 28, 179, 172, 225, 228, 90, 117, 255, 238, 75, 49, 171, 127, 213, 85, 209, 59, 155, 117, 239, 0, 75, 118, 88, 4, 12, 227, 73, 158, 12, 205, 2, 203, 211, 162, 21, 194, 39, 124, 143, 157, 51, 232, 136, 170, 32, 186, 182, 50, 90, 229, 97, 182, 127, 219, 175, 71, 133, 86, 142, 168, 164, 221, 177, 144, 38, 105, 78, 249, 68, 193, 146, 144, 157, 26, 116, 156, 148, 113, 199, 145, 188, 100, 210, 243, 176, 228, 253, 156, 118, 121, 70, 222, 147, 210, 26, 244, 58, 142, 244, 5, 108, 224, 39, 244, 232, 65, 232, 92, 132, 152, 182, 23, 113, 204, 225, 87, 211, 56, 133, 161, 62, 18, 67, 56, 221, 196, 12, 4, 224, 40, 128, 103, 128, 228, 3, 87, 57, 168, 156, 148, 125, 245, 171, 19, 135, 132, 2, 194, 63, 103, 88, 231, 163, 4, 96, 223, 188, 134, 35, 165, 216, 149, 158, 235, 40, 17, 28, 179, 147, 250, 189, 43, 38, 249, 161, 232, 233, 244, 172, 30, 113, 9, 233, 113, 132, 203, 228, 47, 175, 76, 104, 56, 176, 198, 176, 224, 242, 99, 116, 147, 57, 141, 68, 254, 176, 86, 132, 54, 227, 176, 55, 121, 25, 108, 23, 235, 51, 60, 166, 231, 23, 216, 144, 30, 128, 10, 37, 1, 156, 248, 47, 59, 101, 14, 121, 5, 187, 172, 212, 63, 38, 147, 177, 191, 96, 94, 49, 217, 155, 183, 66, 70, 245, 85, 115, 24, 171, 185, 0, 22, 247, 161, 81, 63, 132, 219, 87, 40, 118, 60, 189, 110, 77, 0, 50, 210, 219, 15, 176, 200, 70, 234, 115, 214, 255, 22, 186, 6, 93, 135, 69, 163, 98, 169, 20, 132, 213, 6, 134, 245, 241, 110, 126, 153, 12, 106, 217, 30, 233, 146, 130, 4, 230, 202, 47, 130, 74, 198, 252, 37, 90, 202, 86, 188, 194, 248, 37, 79, 180, 216, 125, 102, 164, 204, 98, 72, 248, 115, 72, 129, 29, 10, 74, 18, 68, 160, 35, 223, 172, 10, 96, 200, 79, 197, 186, 126, 166, 251, 0, 210, 235, 170, 170, 53, 182, 1, 162, 17, 78, 40, 56, 255, 193, 132, 82, 36, 35, 160, 231, 166, 57, 13, 4, 76, 21, 198, 114, 178, 133, 5, 54, 163, 226, 237, 153, 116, 215, 154, 87, 39, 24, 74, 173, 158, 174, 52, 163, 158, 79, 57, 153, 237, 106, 44, 185, 45, 42, 226, 183, 213, 242, 76, 137, 128, 237, 147, 173, 168, 48, 127, 207, 66, 187, 5, 89, 186, 103, 238, 106, 255, 234, 242, 122, 2, 6, 199, 20, 65, 36, 38, 203, 255, 59, 71, 190, 7, 181, 68, 46, 42, 146, 106, 200, 58, 86, 45, 246, 90, 194, 206, 184, 157, 223, 181, 201, 153, 49, 22, 56, 78, 243, 66, 160, 29, 252, 212, 61, 84, 95, 82, 121, 63, 255, 50, 108, 19, 29, 195, 152, 9, 112, 66, 169, 39, 165, 85, 43, 155, 250, 244, 144, 179, 131, 5, 4, 94, 33, 125, 225, 204, 20, 245, 122, 62, 97, 71, 96, 156, 144, 112, 103, 95, 84, 21, 18, 59, 111, 88, 241, 222, 43, 219, 94, 94, 176, 119, 123, 7, 24, 1, 209, 24, 103, 25, 227, 254, 170, 143, 207, 106, 114, 161, 213, 152, 182, 161, 41, 25, 116, 70, 222, 8, 88, 87, 234, 212, 104, 225, 2, 131, 35, 126, 198, 212, 95, 193, 39, 210, 130, 152, 20, 168, 74, 23, 224, 115, 121, 220, 238, 33, 64, 52, 33, 254, 241, 244, 48, 251, 123, 212, 192, 17, 77, 190, 207, 98, 13, 39, 215, 166, 51, 41, 122, 5, 136, 235, 240, 8, 183, 221, 141, 200, 167, 197, 7, 134, 99, 239, 12, 38, 220, 254, 243, 93, 227, 110, 115, 49, 23, 186, 215, 0, 208, 58, 129, 1, 138, 123, 153, 97, 110, 50, 185, 130, 144, 120, 39, 51, 134, 206, 39, 235, 205, 158, 119, 30, 57, 165, 20, 218, 238, 84, 159, 58, 80, 183, 49, 6, 76, 46, 208, 110, 158, 141, 139, 109, 204, 0, 172, 12, 25, 180, 93, 127, 20, 105, 207, 242, 17, 126, 78, 169, 84, 109, 245, 188, 223, 188, 49, 200, 248, 148, 251, 33, 131, 69, 129, 163, 203, 38, 45, 53, 83, 70, 189, 129, 80, 246, 215, 206, 37, 110, 155, 102, 65, 125, 107, 218, 184, 112, 204, 225, 77, 58, 251, 152, 175, 160, 8, 140, 132, 213, 113, 122, 150, 238, 34, 165, 80, 241, 44, 169, 44, 176, 94, 183, 108, 76, 133, 153, 127, 82, 76, 3, 130, 87, 61, 209, 78, 10, 88, 254, 152, 29, 128, 154, 171, 141, 224, 19, 156, 0, 199, 121, 12, 45, 86, 241, 100, 194, 106, 185, 128, 118, 249, 180, 85, 130, 238, 144, 37, 13, 83, 146, 135, 36, 205, 29, 51, 221, 55, 16, 103, 150, 96, 13, 11, 70, 184, 224, 175, 135, 237, 102, 37, 29, 119, 60, 220, 193, 152, 1, 191, 106, 222, 110, 202, 141, 68, 170, 169, 74, 251, 59, 168, 211, 252, 24, 123, 43, 15, 220, 57, 198, 7, 28, 125, 255, 68, 76, 0, 126, 183, 44, 172, 122, 77, 118, 153, 62, 204, 39, 214, 141, 81, 157, 98, 64, 76, 110, 158, 192, 176, 124, 32, 141, 222, 171, 242, 198, 252, 202, 149, 84, 61, 65, 230, 235, 85, 7, 142, 59, 43, 39, 96, 238, 87, 195, 239, 53, 148, 123, 119, 98, 162, 48, 21, 90, 39, 176, 35, 112, 36, 87, 195, 26, 151, 175, 10, 242, 157, 69, 87, 238, 2, 214, 28, 4, 76, 72, 175, 196, 92, 228, 209, 177, 183, 70, 130, 219, 228, 109, 64, 169, 114, 85, 160, 66, 92, 34, 168, 20, 248, 136, 108, 64, 103, 23, 175, 143, 252, 123, 112, 58, 108, 147, 218, 245, 5, 47, 10, 91, 114, 162, 95, 177, 230, 120, 207, 95, 159, 179, 169, 28, 45, 132, 22, 219, 153, 96, 60, 44, 51, 53, 213, 129, 131, 147, 151, 192, 249, 68, 49, 217, 71, 206, 2, 248, 117, 133, 141, 123, 228, 244, 164, 15, 142, 140, 222, 20, 86, 170, 61, 204, 103, 102, 26, 69, 136, 176, 218, 50, 225, 210, 185, 158, 7, 66, 76, 85, 168, 81, 171, 228, 132, 245, 9, 123, 147, 196, 72, 78, 153, 240, 200, 28, 11, 172, 199, 36, 70, 57, 102, 144, 54, 238, 137, 230, 48, 111, 92, 161, 62, 238, 202, 93, 210, 5, 0, 70, 91, 223, 172, 20, 198, 173, 98, 124, 174, 230, 85, 0, 78, 253, 169, 215, 193, 88, 27, 45, 41, 37, 227, 113, 202, 173, 146, 162, 51, 173, 86, 162, 44, 236, 21, 146, 220, 60, 193, 178, 133, 182, 27, 83, 29, 109, 192, 123, 88, 165, 238, 223, 89, 166, 52, 211, 24, 160, 168, 196, 53, 35, 228, 250, 234, 170, 66, 233, 183, 55, 9, 50, 235, 225, 158, 66, 122, 157, 83, 207, 20, 251, 207, 58, 192, 10, 233, 37, 124, 96, 211, 72, 215, 148, 159, 121, 3, 249, 31, 127, 60, 135, 153, 150, 40, 149, 229, 91, 194, 13, 138, 78, 190, 203, 161, 178, 158, 232, 175, 113, 5, 0, 0, 157, 54, 164, 225, 8, 98, 76, 174, 99, 252, 128, 206, 223, 7, 13, 134, 10, 243, 38, 87, 137, 137, 87, 219, 135, 186, 244, 206, 79, 93, 139, 204, 47, 83, 193, 115, 236, 204, 66, 165, 231, 252, 15, 15, 21, 153, 61, 231, 22, 48, 193, 81, 115, 91, 36, 249, 212, 73, 12, 220, 214, 23, 187, 180, 95, 210, 71, 130, 108, 80, 35, 5, 180, 43, 255, 226, 15, 66, 209, 107, 0, 249, 107, 164, 160, 127, 50, 10, 46, 173, 63, 52, 217, 65, 79, 70, 118, 107, 240, 220, 170, 141, 148, 113, 231, 124, 65, 13, 121, 2, 134, 89, 161, 97, 154, 185, 58, 249, 72, 183, 164, 239, 46, 233, 175, 73, 8, 103, 251, 22, 146, 195, 50, 29, 142, 74, 48, 178, 86, 119, 147, 11, 105, 214, 16, 78, 204, 230, 129, 145, 168, 63, 252, 75, 169, 83, 146, 157, 47, 56, 249, 33, 253, 4, 204, 189, 145, 84, 107, 164, 59, 230, 193, 211, 199, 133, 173, 38, 47, 182, 43, 88, 75, 128, 28, 41, 105, 192, 219, 224, 135, 35, 28, 1, 157, 62, 216, 163, 234, 51, 236, 5, 152, 197, 148, 7, 67, 70, 43, 82, 128, 90, 54, 118, 223, 94, 205, 114, 135, 123, 162, 48, 149, 73, 41, 242, 126, 236, 130, 247, 59, 13, 85, 180, 99, 178, 228, 86, 254, 229, 106, 140, 188, 83, 149, 251, 236, 187, 76, 140, 170, 226, 128, 157, 103, 210, 215, 107, 97, 39, 99, 136, 100, 77, 230, 63, 244, 234, 93, 89, 197, 211, 58, 52, 130, 145, 145, 200, 215, 195, 170, 4, 171, 94, 229, 223, 83, 139, 231, 5, 226, 19, 43, 130, 157, 231, 24, 78, 31, 142, 4, 196, 204, 148, 99, 186, 41, 32, 195, 202, 231, 90, 139, 169, 83, 196, 215, 71, 177, 184, 35, 129, 244, 143, 159, 97, 203, 96, 145, 169, 218, 35, 95, 143, 229, 252, 190, 177, 47, 213, 89, 89, 246, 78, 136, 195, 169, 229, 214, 232, 1, 76, 255, 124, 123, 240, 109, 79, 227, 105, 195, 233, 9, 10, 48, 238, 217, 60, 203, 55, 250, 138, 137, 234, 60, 73, 91, 251, 109, 48, 102, 98, 215, 85, 179, 202, 97, 114, 72, 187, 213, 35, 238, 242, 16, 56, 47, 198, 75, 123, 194, 6, 173, 30, 49, 51, 81, 123, 232, 223, 141, 186, 204, 208, 145, 252, 218, 104, 77, 145, 54, 54, 104, 221, 192, 26, 26, 16, 166, 146, 111, 194, 17, 4, 147, 186, 17, 105, 142, 155, 92, 248, 164, 73, 143, 7, 235, 102, 15, 189, 232, 127, 38, 140, 101, 148, 142, 38, 108, 21, 149, 219, 236, 3, 11, 0, 156, 203, 92, 111, 243, 38, 196, 244, 39, 208, 175, 195, 148, 122, 125, 26, 155, 211, 182, 126, 129, 158, 193, 63, 153, 254, 185, 238, 95, 103, 179, 246, 75, 188, 36, 166, 233, 150, 226, 206, 72, 62, 184, 58, 24, 221, 250, 80], responder_data = [80, 253, 120, 5, 60, 2, 188, 197, 144, 123, 230, 120, 5, 253, 131, 101, 154, 185, 162, 241, 13, 236, 51, 84, 53, 123, 72, 12, 86, 123, 163, 196, 206, 245, 96, 146, 80, 252, 6, 127, 158, 0, 72, 98, 196, 252, 232, 100, 168, 42, 163, 117, 209, 116, 62, 199, 205, 147, 151, 116, 199, 79, 28, 196, 92, 149, 160, 174, 199, 154, 225, 211, 147, 168, 213, 80, 237, 120, 138, 46, 136, 70, 7, 144, 81, 132, 124, 208, 9, 99, 247, 140, 96, 142, 46, 90, 125, 5, 125, 141, 106, 92, 184, 32, 145, 207, 252, 72, 253, 26, 203, 246, 193, 88, 241, 121, 162, 0, 62, 229, 58, 187, 141, 88, 255, 143, 11, 222, 58, 220, 141, 213, 243, 187, 249, 211, 95, 111, 129, 49, 121, 26, 195, 18, 169, 202, 44, 251, 99, 235, 99, 237, 215, 245, 50, 217, 196, 46, 109, 221, 206, 13, 34, 56, 53, 68, 104, 108, 230, 239, 123, 137, 165, 170, 88, 237, 156, 53, 114, 193, 108, 178, 71, 152, 149, 72, 133, 205, 65, 213, 109, 119, 58, 17, 94, 49, 221, 48, 246, 134, 14, 213, 100, 149, 212, 5, 95, 110, 218, 57, 215, 168, 128, 185, 160, 41, 186, 111, 228, 0, 71, 138, 18, 61, 66, 115, 239, 197, 42, 131, 95, 244, 168, 163, 226, 97, 72, 144, 117, 163, 193, 92, 123, 94, 24, 113, 146, 103, 233, 25, 60, 93, 67, 62, 179, 164, 64, 229, 151, 65, 210, 161, 56, 6, 211, 92, 44, 159, 98, 45, 145, 203, 46, 207, 58, 8, 171, 248, 79, 3, 211, 163, 86, 202, 116, 240, 71, 233, 130, 118, 138, 116, 83, 217, 170, 5, 190, 27, 67, 171, 59, 109, 159, 227, 22, 72, 160, 115, 172, 163, 190, 201, 128, 67, 53, 122, 9, 175, 121, 96, 18, 138, 243, 48, 33, 148, 220, 71, 199, 152, 189, 218, 125, 86, 239, 89, 156, 8, 58, 249, 211, 220, 222, 183, 26, 45, 34, 133, 217, 93, 141, 58, 56, 0, 61, 174, 108, 169, 197, 82, 116, 169, 109, 202, 59, 47, 239, 207, 128, 168, 48, 89, 158, 73, 6, 131, 213, 30, 42, 130, 108, 140, 45, 46, 152, 77, 43, 241, 144, 176, 51, 67, 98, 123, 221, 132, 91, 17, 71, 172, 75, 117, 15, 156, 109, 120, 178, 1, 6, 83, 31, 47, 234, 13, 156, 185, 95, 48, 85, 87, 247, 80, 206, 228, 214, 181, 145, 251, 84, 254, 114, 184, 87, 239, 230, 127, 43, 38, 12, 136, 75, 33, 137, 107, 199, 124, 36, 81, 193, 108, 100, 81, 162, 56, 38, 221, 132, 168, 210, 243, 21, 199, 188, 252, 152, 103, 243, 253, 79, 188, 93, 183, 134, 52, 142, 96, 40, 119, 48, 119, 250, 247, 19, 142, 149, 147, 34, 255, 0, 89, 249, 60, 87, 66, 213, 1, 39, 182, 159, 18, 175, 175, 60, 204, 90, 231, 113, 21, 129, 72, 35, 100, 251, 31, 33, 212, 35, 243, 162, 186, 92, 115, 94, 230, 12, 52, 72, 179, 113, 201, 238, 87, 199, 51, 128, 74, 20, 72, 16, 158, 71, 89, 221, 243, 31, 102, 46, 126, 52, 12, 172, 207, 179, 2, 108, 84, 18, 177, 142, 75, 87, 235, 60, 207, 11, 10, 10, 199, 12, 241, 204, 153, 90, 20, 162, 120, 119, 33, 238, 165, 186, 218, 84, 139, 148, 121, 198, 230, 46, 222, 241, 29, 187, 176, 219, 228, 46, 72, 193, 125, 240, 89, 27, 0, 111, 195, 100, 67, 198, 133, 63, 1, 244, 152, 46, 7, 205, 128, 25, 154, 3, 170, 3, 115, 136, 244, 247, 174, 145, 88, 132, 139, 1, 247, 102, 7, 176, 122, 83, 8, 156, 31, 44, 237, 91, 88, 63, 151, 137, 232, 218, 245, 197, 106, 71, 106, 191, 107, 64, 134, 144, 8, 97, 234, 191, 111, 247, 65, 218, 58, 31, 124, 212, 208, 148, 31, 198, 27, 87, 203, 120, 102, 13, 125, 88, 70, 90, 56, 229, 50, 224, 33, 10, 255, 237, 164, 92, 217, 36, 102, 25, 87, 171, 100, 97, 212, 160, 89, 234, 247, 1, 118, 120, 228, 53, 59, 236, 220, 15, 115, 234, 26, 156, 182, 17, 173, 109, 33, 46, 95, 141, 169, 93, 106, 108, 146, 66, 181, 65, 198, 36, 35, 127, 149, 41, 156, 146, 254, 82, 223, 248, 129, 177, 130, 67, 36, 200, 208, 119, 62, 59, 139, 192, 250, 15, 74, 129, 105, 134, 212, 188, 156, 113, 177, 209, 77, 229, 170, 30, 112, 195, 31, 24, 217, 86, 40, 46, 133, 43, 94, 133, 111, 64, 244, 122, 124, 177, 3, 66, 45, 104, 175, 100, 56, 117, 69, 58, 225, 199, 130, 4, 153, 119, 1, 211, 150, 184, 198, 26, 106, 219, 28, 71, 40, 170, 129, 168, 7, 146, 40, 244, 151, 200, 42, 200, 62, 165, 84, 140, 255, 172, 73, 197, 34, 249, 111, 175, 123, 221, 25, 113, 155, 254, 251, 183, 173, 114, 216, 50, 192, 116, 172, 95, 32, 193, 209, 7, 0, 241, 49, 59, 217, 155, 26, 238, 61, 29, 255, 30, 215, 138, 125, 245, 73, 219, 44, 65, 193, 64, 129, 235, 173, 233, 251, 57, 240, 146, 98, 74, 4, 171, 166, 78, 30, 124, 44, 199, 51, 86, 118, 46, 93, 189, 144, 197, 139, 50, 223, 251, 144, 222, 205, 54, 147, 70, 56, 152, 140, 180, 244, 8, 136, 17, 226, 37, 75, 205, 250, 133, 107, 59, 160, 249, 180, 152, 236, 208, 71, 222, 166, 105, 246, 182, 221, 71, 140, 245, 65, 0, 40, 212, 160, 107, 184, 81, 55, 126, 156, 170, 190, 47, 16, 85, 54, 137, 115, 11, 142, 254, 218, 64, 230, 46, 103, 255, 196, 157, 104, 129, 124, 86, 219, 50, 191, 234, 135, 242, 99, 68, 160, 159, 19, 203, 136, 139, 152, 31, 246, 149, 134, 217, 84, 135, 206, 201, 179, 61, 114, 200, 73, 193, 132, 125, 14, 245, 205, 52, 46, 51, 27, 65, 117, 156, 223, 101, 141, 241, 21, 239, 247, 109, 44, 213, 143, 21, 45, 178, 64, 203, 227, 115, 222, 90, 108, 75, 20, 68, 70, 138, 232, 41, 16, 91, 162, 170, 138, 251, 255, 111, 212, 209, 148, 192, 101, 29, 45, 81, 182, 29, 153, 107, 252, 151, 42, 54, 129, 108, 51, 5, 28, 209, 185, 124, 233, 184, 224, 71, 0, 198, 110, 58, 170, 213, 46, 229, 110, 115, 65, 88, 83, 16, 214, 59, 160, 168, 5, 115, 123, 209, 56, 198, 7, 14, 238, 236, 75, 241, 63, 192, 35, 251, 203, 30, 183, 95, 183, 242, 34, 145, 96, 123, 205, 208, 198, 228, 151, 214, 81, 37, 117, 119, 68, 172, 70, 73, 130, 61, 191, 136, 188, 106, 19, 192, 245, 90, 24, 247, 205, 174, 239, 151, 214, 222, 48, 48, 206, 121, 105, 166, 70, 57, 64, 153, 178, 245, 106, 143, 165, 161, 0, 202, 169, 75, 13, 1, 107, 7, 220, 33, 154, 146, 88, 254, 239, 44, 84, 240, 253, 56, 118, 177, 105, 19, 75, 222, 153, 130, 95, 80, 102, 129, 49, 137, 71, 147, 174, 194, 8, 25, 21, 57, 95, 96, 109, 6, 136, 9, 75, 24, 34, 75, 128, 183, 76, 135, 240, 136, 3, 136, 25, 76, 228, 31, 145, 133, 107, 57, 0, 159, 115, 122, 248, 189, 101, 208, 144, 184, 154, 208, 178, 50, 145, 137, 43, 5, 181, 111, 188, 96, 216, 191, 33, 28, 71, 169, 87, 151, 78, 14, 253, 93, 205, 8, 240, 103, 96, 232, 144, 75, 210, 26, 140, 55, 181, 122, 26, 208, 145, 107, 54, 249, 37, 127, 208, 114, 132, 66, 220, 130, 95, 217, 9, 228, 52, 0, 232, 1, 59, 199, 125, 51, 54, 176, 179, 43, 194, 247, 23, 57, 212, 34, 159, 165, 205, 111, 242, 115, 14, 170, 95, 226, 112, 80, 125, 75, 197, 228, 49, 69, 236, 11, 98, 248, 86, 182, 229, 183, 123, 67, 206, 123, 122, 11, 93, 183, 105, 229, 124, 191, 124, 157, 143, 126, 163, 56, 107, 84, 36, 238, 28, 192, 22, 99, 177, 207, 179, 71, 27, 88, 138, 228, 204, 57, 193, 162, 248, 179, 206, 163, 36, 72, 176, 53, 104, 80, 28, 129, 130, 96, 198, 219, 172, 103, 46, 123, 89, 230, 241, 41, 247, 95, 180, 21, 235, 225, 39, 4, 247, 98, 194, 23, 202, 142, 8, 97, 253, 158, 233, 220, 112, 202, 8, 34, 210, 103, 41, 49, 52, 128, 155, 224, 41, 144, 0, 145, 118, 169, 198, 249, 136, 62, 53, 78, 39, 164, 4, 245, 125, 166, 93, 40, 8, 119, 95, 187, 19, 193, 254, 185, 241, 52, 127, 34, 233, 231, 15, 38, 82, 63, 85, 196, 87, 30, 180, 107, 121, 20, 21, 208, 11, 206, 204, 237, 33, 160, 19, 243, 219, 73, 220, 120, 177, 23, 65, 121, 237, 9, 194, 161, 165, 179, 122, 106, 235, 196, 227, 179, 170, 191, 51, 91, 233, 165, 174, 49, 103, 242, 136, 70, 108, 249, 80, 73, 30, 239, 0, 251, 254, 227, 211, 170, 208, 60, 252, 175, 160, 186, 97, 60, 21, 220, 149, 202, 13, 164, 5, 51, 41, 162, 98, 192, 231, 202, 172, 53, 29, 100, 237, 244, 134, 2, 37, 127, 2, 23, 254, 155, 128, 210, 205, 167, 224, 107, 15, 162, 93, 83, 89, 192, 199, 92, 167, 29, 253, 207, 96, 240, 48, 179, 47, 186, 160, 163, 70, 181, 40, 239, 152, 34, 52, 175, 123, 181, 236, 194, 109, 78, 155, 56, 160, 113, 106, 173, 162, 178, 131, 237, 111, 224, 1, 108, 160, 25, 180, 180, 6, 207, 208, 102, 11, 122, 182, 233, 3, 3, 107, 74, 175, 16, 135, 11, 30, 141, 136, 63, 70, 18, 129, 59, 195, 13, 232, 172, 182, 108, 222, 156, 253, 4, 68, 136, 39, 143, 191, 159, 245, 224, 93, 11, 35, 1, 169, 154, 155, 1, 8, 251, 189, 144, 75, 249, 205, 29, 222, 105, 93, 237, 92, 54, 132, 59, 54, 115, 146, 67, 107, 207, 174, 7, 169, 109, 251, 156, 17, 25, 46, 196, 234, 72, 12, 196, 193, 16, 206, 52, 207, 189, 136, 133, 160, 66, 215, 76, 60, 240, 105, 88, 62, 56, 214, 208, 220, 71, 140, 15, 119, 220, 134, 193, 227, 129, 212, 190, 7, 26, 249, 176, 71, 84, 255, 97, 203, 84, 3, 102, 192, 120, 234, 84, 126, 82, 254, 147, 88, 79, 28, 110, 58, 247, 169, 155, 180, 55, 210, 216, 238, 56, 235, 166, 16, 196, 22, 86, 19, 113, 185, 190, 39, 213, 218, 26, 163, 167, 126, 252, 74, 41, 9, 253, 47, 213, 12, 175, 214, 224, 246, 201, 159, 84, 229, 95, 171, 45, 18, 102, 244, 152, 56, 208, 144, 127, 230, 185, 200, 193, 9, 114, 210, 77, 255, 241, 115, 121, 60, 22, 161, 80, 232, 63, 69, 236, 219, 81, 120, 49, 101, 221, 6, 184, 92, 220, 239, 231, 120, 134, 7, 252, 56, 13, 114, 133, 35, 57, 46, 22, 131, 205, 38, 201, 65, 22, 41, 30, 149, 150, 235, 73, 49, 212, 242, 12, 24, 229, 44, 244, 69, 167, 16, 166, 0, 21, 85, 13, 74, 112, 176, 112, 122, 191, 204, 49, 219, 71, 229, 106, 254, 104, 71, 114, 58, 114, 58, 59, 189, 220, 145, 79, 83, 17, 145, 42, 247, 188, 205, 5, 148, 134, 88, 181, 230, 30, 1, 220, 120, 151, 137, 115, 55, 251, 56, 69, 226, 203, 114, 102, 0, 158, 228, 139, 68, 63, 183, 128, 77, 128, 33, 128, 136, 98, 96, 152, 30, 51, 120, 78, 83, 118, 220, 23, 11, 196, 251, 232, 223, 14, 230, 236, 2, 35, 134, 152, 104, 2, 112, 127, 143, 135, 242, 109, 1, 144, 0, 222, 216, 219, 240, 93, 38, 152, 75, 63, 45, 73, 214, 124, 240, 107, 242, 163, 95, 72, 53, 211, 105, 92, 48, 141, 126, 84, 82, 92, 96, 235, 56, 226, 77, 209, 202, 131, 236, 106, 215, 13, 242, 161, 75, 98, 55, 63, 234, 84, 230, 171, 68, 146, 98, 174, 149, 203, 209, 87, 50, 95, 0, 68, 49, 100, 151, 53, 158, 72, 220, 16, 197, 107, 55, 16, 181, 24, 189, 11, 220, 78, 175, 125, 181, 29, 178, 68, 122, 225, 4, 32, 197, 73, 22, 61, 64, 92, 120, 248, 114, 100, 255, 55, 252, 121, 183, 98, 234, 91, 46, 255, 117, 64, 246, 70, 5, 246, 33, 242, 26, 140, 76, 94, 93, 7, 48, 183, 109, 175, 243, 66, 98, 158, 53, 255, 159, 242, 82, 73, 13, 19, 23, 84, 239, 243, 164, 87, 88, 145, 189, 117, 51, 80, 51, 111, 118, 33, 188, 206, 211, 84, 143, 147, 75, 71, 215, 3, 200, 95, 139, 111, 213, 107, 168, 248, 28, 228, 63, 30, 85, 190, 53, 44, 113, 208, 173, 194, 176, 23, 109, 182, 40, 191, 191, 224, 87, 250, 145, 199, 81, 198, 27, 199, 104, 209, 110, 228, 152, 126, 199, 83, 43, 165, 177, 248, 5, 0, 15, 71, 26, 235, 192, 155, 129, 121, 137, 227, 109, 59, 205, 223, 16, 144, 112, 94, 66, 176, 139, 255, 155, 111, 44, 235, 12, 135, 174, 78, 207, 169, 241, 227, 84, 3, 119, 89, 156, 51, 74, 180, 6, 194, 197, 145, 60, 98, 174, 255, 191, 25, 148, 94, 255, 119, 226, 143, 209, 71, 225, 223, 115, 148, 197, 251, 240, 138, 199, 226, 1, 18, 142, 198, 65, 84, 34, 17, 116, 245, 46, 250, 105, 44, 138, 190, 205, 14, 181, 174, 174, 112, 235, 203, 106, 106, 233, 79, 9, 102, 137, 25, 183, 127, 201, 158, 228, 129, 50, 28, 92, 91, 91, 178, 155, 148, 88, 0, 15, 113, 253, 67, 82, 94, 119, 229, 76, 71, 230, 147, 246, 55, 3, 30, 163, 141, 42, 241, 134, 10, 191, 82, 224, 123, 107, 205, 201, 61, 181, 220, 138, 215, 38, 246, 102, 59, 66, 108, 138, 2, 199, 181, 216, 239, 196, 94, 60, 189, 212, 36, 39, 69, 247, 154, 208, 85, 178, 103, 107, 51, 155, 58, 180, 16, 218, 164, 24, 148, 174, 84, 84, 114, 192, 43, 26, 61, 106, 21, 241, 0, 109, 217, 103, 153, 24, 186, 243, 60, 23, 75, 161, 199, 18, 35, 115, 38, 23, 249, 10, 190, 181, 105, 118, 30, 167, 96, 222, 88, 104, 114, 96, 205, 90, 208, 181, 7, 49, 106, 157, 21, 177, 202, 103, 252, 200, 217, 4, 122, 26, 149, 45, 116, 82, 161, 222, 79, 111, 4, 3, 159, 133, 85, 112, 102, 213, 56, 7, 141, 216, 85, 87, 188, 163, 200, 179, 178, 176, 100, 244, 89, 90, 6, 222, 210, 10, 51, 192, 6, 90, 17, 155, 48, 46, 79, 121, 181, 164, 118, 48, 129, 134, 213, 126, 168, 29, 95, 195, 63, 187, 166, 47, 37, 128, 212, 2, 83, 162, 109, 107, 240, 123, 43, 131, 142, 189, 120, 174, 163, 103, 117, 31, 251, 36, 159, 121, 73, 143, 197, 156, 197, 0, 39, 225, 1, 5, 35, 10, 88, 255, 220, 130, 79, 228, 77, 82, 142, 85, 206, 135, 91, 78, 210, 101, 243, 102, 45, 162, 217, 79, 24, 10, 32, 130, 181, 73, 64, 7, 124, 92, 154, 195, 204, 132, 192, 29, 247, 224, 223, 88, 229, 11, 159, 85, 93, 154, 11, 144, 103, 33, 225, 84, 79, 64, 11, 101, 101, 143, 233, 207, 205, 249, 255, 100, 23, 132, 192, 94, 92, 99, 226, 41, 1, 174, 39, 94, 15, 159, 173, 198, 221, 148, 98, 1, 190, 220, 254, 137, 169, 98, 63, 186, 33, 61, 84, 90, 12, 110, 9, 143, 189, 128, 230, 144, 25, 240, 11, 18, 232, 79, 205, 17, 203, 205, 33, 199, 116, 44, 79, 56, 205, 72, 142, 105, 53, 5, 231, 97, 29, 99, 47, 78, 161, 167, 131, 22, 229, 225, 32, 202, 10, 160, 126, 51, 82, 208, 159, 221, 62, 103, 42, 32, 176, 116, 63, 123, 202, 208, 44, 4, 100, 104, 75, 231, 119, 152, 100, 115, 143, 101, 155, 188, 7, 62, 140, 138, 81, 229, 43, 92, 10, 224, 83, 202, 96, 116, 241, 152, 114, 63, 80, 40, 8, 44, 19, 147, 13, 65, 187, 143, 171, 108, 124, 29, 113, 67, 69, 142, 213, 172, 158, 224, 78, 95, 228, 99, 255, 29, 62, 50, 147, 186, 44, 195, 46, 134, 101, 123, 72, 246, 114, 118, 203, 42, 188, 51, 166, 235, 9, 204, 89, 27, 133, 248, 73, 96, 211, 21, 103, 229, 204, 31, 129, 42, 215, 225, 114, 16, 25, 110, 191, 106, 88, 93, 50, 0, 221, 22, 17, 18, 71, 209, 182, 151, 232, 218, 242, 72, 168, 241, 13, 46, 119, 13, 198, 82, 247, 142, 168, 120, 224, 190, 13, 17, 146, 240, 65, 209, 35, 72, 110, 196, 93, 17, 100, 152, 81, 58, 3, 141, 119, 29, 251, 8, 167, 211, 11, 173, 22, 144, 91, 17, 0, 93, 36, 33, 23, 28, 143, 126, 142, 100, 243, 69, 19, 153, 89, 227, 81, 133, 213, 78, 48, 8, 216, 133, 69, 199, 162, 169, 66, 159, 89, 170, 214, 23, 110, 222, 74, 226, 253, 124, 180, 215, 239, 185, 104, 82, 233, 191, 119, 97, 98, 16, 67, 62, 188, 7, 70, 102, 65, 169, 151, 51, 176, 215, 127, 196, 37, 211, 98, 251, 168, 173, 140, 216, 14, 1, 13, 112, 16, 142, 167, 21, 143, 12, 186, 230, 233, 188, 101, 45, 53, 94, 208, 57, 146, 165, 67, 40, 34, 33, 6, 187, 73, 56, 158, 200, 44, 84, 6, 18, 180, 171, 139, 60, 138, 240, 50, 233, 93, 5, 116, 186, 91, 236, 92, 116, 235, 18, 9, 150, 56, 93, 69, 2, 71, 127, 51, 195, 195, 192, 234, 4, 215, 197, 33, 53, 54, 250, 118, 141, 253, 155, 132, 65, 235, 166, 54, 239, 178, 159, 199, 120, 75, 66, 22, 11, 205, 31, 173, 53, 205, 12, 124, 93, 19, 177, 144, 203, 132, 7, 251, 128, 36, 9, 44, 199, 123, 104, 142, 144, 182, 17, 149, 128, 90, 250, 132, 120, 38, 170, 202, 71, 95, 63, 183, 194, 76, 22, 200, 197, 224, 90, 50, 65, 100, 103, 97, 193, 193, 9, 25, 169, 22, 143, 23, 144, 39, 210, 249, 73, 200, 172, 39, 53, 96, 172, 203, 47, 68, 148, 243, 125, 73, 250, 61, 101, 146, 75, 140, 120, 246, 244, 9, 104, 121, 113, 225, 77, 80, 253, 60, 42, 223, 171, 89, 209, 75, 104, 57, 142, 129, 137, 96, 226, 235, 223, 163, 101, 145, 109, 250, 240, 72, 183, 198, 0, 234, 68, 179, 221, 128, 64, 108, 34, 109, 252, 195, 24, 110, 238, 225, 125, 231, 33, 62, 46, 222, 109, 128, 92, 187, 224, 52, 251, 98, 248, 195, 201, 68, 17, 194, 113, 178, 123, 129, 169, 191, 124, 114, 14, 194, 250, 187, 142, 140, 24, 104, 246, 63, 121, 213, 148, 115, 101, 140, 232, 208, 127, 69, 152, 66, 78, 142, 0, 141, 135, 212, 250, 139, 224, 132, 6, 84, 183, 219, 132, 105, 110, 114, 90, 197, 135, 221, 215, 25, 20, 219, 92, 216, 189, 99, 105, 127, 176, 118, 13, 155, 44, 209, 202, 222, 142, 226, 13, 26, 250, 151, 49, 227, 61, 78, 240, 213, 229, 185, 6, 121, 149, 84, 202, 121, 187, 71, 159, 30, 186, 205, 83, 47, 181, 248, 138, 245, 246, 143, 85, 27, 134, 185, 50, 172, 245, 22, 29, 70, 16, 42, 223, 206, 220, 89, 137, 63, 97, 112, 49, 73, 218, 19, 199, 3, 53, 99, 240, 9, 220, 120, 95, 10, 39, 20, 253, 233, 136, 234, 211, 45, 247, 205, 186, 113, 208, 102, 156, 253, 203, 151, 157, 97, 235, 203, 208, 194, 161, 51, 205, 103, 55, 56, 252, 196, 20, 86, 188, 101, 59, 67, 251, 83, 180, 249, 146, 179, 46, 95, 254, 172, 141, 249, 180, 129, 14, 135, 73, 39, 159, 151, 247, 87, 30, 74, 92, 115, 1, 100, 192, 75, 133, 201, 59, 155, 201, 76, 221, 150, 163, 0, 174, 110, 235, 228, 33, 194, 26, 239, 160, 241, 59, 141, 169, 207, 161, 236, 6, 207, 46, 120, 176, 234, 192, 93, 141, 248, 47, 227, 121, 154, 62, 158, 175, 13, 108, 152, 8, 202, 69, 187, 80, 110, 179, 26, 192, 123, 112, 45, 245, 142, 19, 218, 46, 4, 76, 2, 141, 121, 48, 123, 109, 134, 106, 45, 197, 66, 124, 31, 29, 66, 56, 39, 250, 58, 53, 86, 250, 59, 0, 181, 233, 217, 57, 58, 41, 112, 114, 57, 133, 175, 130, 200, 56, 162, 212, 28, 16, 199, 156, 42, 94, 22, 62, 218, 140, 196, 116, 129, 191, 38, 252, 75, 170, 158, 156, 162, 24, 31, 147, 122, 245, 176, 50, 232, 36, 236, 17, 161, 116, 93, 15, 172, 220, 196, 79, 246, 34, 13, 10, 70, 248, 215, 238, 109, 19, 165, 2, 64, 229, 243, 209, 211, 167, 6, 94, 24, 77, 140, 70, 242, 51, 229, 253, 187, 245, 134, 57, 197, 200, 88, 242, 105, 255, 16, 114, 6, 141, 103, 193, 159, 178, 163, 33, 220, 93, 42, 90, 190, 9, 26, 178, 38, 95, 1, 203, 43, 249, 183, 148, 114, 170, 197, 135, 52, 24, 179, 135, 234, 41, 1, 193, 99, 103, 69, 126, 231, 174, 86, 109, 71, 219, 103, 208, 185, 99, 13, 157, 85, 100, 171, 3, 54, 20, 34, 57, 105, 129, 123, 100, 150, 107, 33, 224, 36, 155, 58, 230, 183, 0, 28, 33, 130, 73, 224, 106, 250, 83, 195, 253, 163, 182, 253, 186, 172, 62, 226, 110, 217, 231, 72, 130, 187, 185, 42, 101, 206, 104, 253, 252, 252, 57, 161, 47, 246, 199, 13, 76, 86, 195, 93, 48, 213, 68, 111, 137, 33, 229, 186, 14, 82, 242, 67, 211, 15, 135, 165, 186, 187, 163, 103, 41, 117, 87, 54, 199, 213, 51, 95, 253, 245, 91, 255, 228, 62, 159, 128, 81, 75, 173, 47, 216, 79, 115, 235, 143, 53, 98, 205, 156, 183, 57, 77, 185, 201, 53, 183, 136, 138, 154, 48, 130, 246, 197, 210, 202, 228, 186, 61, 65, 70, 114, 81, 185, 159, 16, 207, 119, 192, 127, 251, 123, 52, 127, 131, 135, 37, 99, 46, 93, 22, 115, 158, 56, 110, 92, 100, 17, 239, 95, 23, 51, 96, 243, 209, 93, 43, 73, 165, 67, 237, 173, 189, 49, 45, 233, 238, 193, 240, 103, 66, 56, 29, 241, 15, 155, 101, 134, 244, 201, 185, 116, 35, 43, 29, 180, 222, 146, 11, 71, 129, 151, 26, 65, 157, 232, 152, 222, 187, 182, 78, 172, 50, 218, 250, 237, 31, 34, 20, 204, 127, 238, 177, 30, 180, 69, 185, 98, 102, 55, 96, 39, 33, 226, 229, 39, 226, 169, 166, 59, 159, 163, 135, 249, 101, 215, 23, 102, 3, 105, 17, 104, 215, 38, 70, 7, 20, 54, 118, 211, 203, 35, 155, 80, 100, 129, 132, 47, 5, 45, 211, 160, 198, 77, 64, 118, 50, 109, 130, 211, 206, 95, 71, 141, 129, 51, 54, 230, 254, 25, 65, 78, 163, 225, 93, 208, 173, 208, 252, 108, 34, 51, 72, 207, 7, 110, 223, 69, 237, 25, 223, 70, 112, 146, 97, 117, 178, 162, 242, 203, 119, 82, 123, 240, 181, 237, 179, 234, 66, 234, 221, 215, 101, 26, 38, 16, 36, 248, 154, 240, 25, 117, 211, 204, 231, 107, 163, 16, 141, 119, 39, 216, 200, 54, 30, 196, 49, 231, 2, 178, 123, 141, 112, 46, 42, 109, 21, 10, 214, 212, 128, 55, 108, 105, 90, 125, 223, 206, 60, 91, 149, 123, 0, 171, 172, 107, 255, 137, 22, 67, 239, 232, 110, 210, 129, 217, 150, 196, 173, 111, 254, 222, 247, 113, 83, 207, 219, 93, 196, 132, 201, 51, 77, 14, 101, 52, 11, 7, 177, 57, 158, 234, 98, 77, 141, 109, 126, 119, 93, 125, 119, 147, 127, 209, 96, 242, 155, 34, 58, 133, 76, 195, 221, 31, 21, 171, 72, 118, 63, 33, 51, 240, 215, 194, 214, 57, 208, 168, 23, 229, 167, 221, 154, 46, 17, 45, 2, 10, 75, 96, 222, 218, 177, 96, 147, 142, 168, 227, 224, 121, 92, 194, 165, 55, 173, 7, 120, 131, 31, 118, 112, 167, 96, 125, 215, 130, 244, 97, 173, 169, 225, 240, 90, 74, 215, 58, 76, 195, 217, 205, 233, 176, 227, 4, 51, 135, 51, 78, 171, 159, 16, 213, 136, 236, 142, 54, 229, 158, 49, 250, 96, 237, 185, 8, 57, 139, 45, 34, 70, 36, 203, 22, 233, 36, 250, 203, 158, 107, 103, 45, 60, 70, 89, 30, 175, 242, 244, 78, 48, 136, 46, 50, 190, 207, 244, 52, 148, 68, 117, 165, 45, 131, 114, 48, 5, 240, 115, 135, 13, 203, 96, 169, 234, 57, 244, 230, 208, 231, 234, 62, 146, 254, 72, 249, 34, 122, 224, 103, 253, 221, 52, 11, 103, 160, 228, 114, 36, 210, 234, 83, 80, 179, 154, 12, 182, 67, 165, 209, 144, 90, 29, 59, 218, 180, 107, 75, 12, 7, 206, 91, 215, 72, 90, 74, 172, 115, 234, 201, 196, 68, 151, 19, 40, 84, 234, 255, 56, 23, 61, 248, 160, 214, 225, 116, 215, 40, 242, 188, 194, 3, 30, 40, 62, 192, 129, 236, 78, 144, 60, 8, 129, 200, 211, 71, 1, 247, 202, 169, 18, 141, 2, 113, 11, 108, 202, 18, 243, 162, 121, 31, 62, 131, 127, 139, 117, 199, 22, 117, 182, 139, 229, 232, 33, 54, 200, 228, 47, 82, 182, 6, 216, 120, 158, 38, 235, 217, 110, 24, 187, 74, 7, 117, 217, 123, 115, 174, 44, 139, 232, 91, 153, 93, 160, 150, 207, 48, 114, 207, 188, 239, 167, 191, 192, 95, 19, 56, 138, 58, 124, 139, 33, 42, 107, 144, 163, 173, 160, 39, 223, 126, 196, 139, 210, 126, 80, 240, 69, 89, 202, 131, 238, 53, 23, 141, 224, 116, 164, 20, 231, 129, 205, 156, 244, 93, 183, 110, 254, 173, 215, 99, 84, 255, 46, 25, 20, 225, 45, 113, 215, 126, 233, 219, 185, 53, 147, 128, 40, 112, 223, 186, 120, 92, 155, 48, 154, 232, 142, 183, 174, 92, 85, 248, 77, 205, 178, 240, 65, 222, 241, 138, 111, 129, 229, 41, 190, 132, 104, 142, 202, 40, 157, 217, 24, 188, 188, 148, 39, 100, 19, 175, 154, 186, 131, 250, 157, 91, 247, 69, 200, 210, 253, 33, 42, 216, 74, 159, 201, 40, 217, 84, 136, 131, 116, 231, 78, 242, 126, 28, 170, 43, 144, 150, 78, 227, 54, 0, 13, 62, 87, 249, 60, 106, 85, 245, 172, 22, 107, 70, 105, 18, 29, 44, 28, 160, 207, 232, 98, 1, 207, 44, 208, 133, 28, 142, 134, 241, 145, 107, 229, 124, 198, 59, 48, 118, 80, 236, 229, 118, 5, 233, 193, 150, 137, 179, 235, 33, 226, 67, 51, 238, 77, 58, 33, 43, 17, 6, 50, 180, 139, 76, 108, 233, 157, 129, 114, 151, 241, 120, 232, 19, 82, 252, 179, 19, 59, 38, 62, 39, 164, 188, 77, 151, 13, 111, 102, 152, 184, 28, 206, 53, 139, 122, 74, 141, 32, 61, 216, 79, 33, 244, 54, 70, 52, 171, 53, 40, 44, 55, 109, 164, 62, 203, 124, 35, 74, 232, 101, 143, 33, 110, 92, 130, 169, 76, 130, 197, 182, 192, 35, 153, 109, 25, 16, 174, 244, 91, 230, 197, 158, 173, 191, 180, 134, 81, 228, 24, 130, 204, 144, 195, 43, 164, 244, 154, 208, 18, 143, 193, 53, 72, 219, 176, 67, 175, 97, 85, 227, 52, 253, 4, 187, 113, 37, 7, 170, 32, 156, 216, 38, 32, 19, 163, 103, 43, 135, 248, 103, 117, 71, 15, 12, 131, 122, 143, 120, 32, 71, 188, 63, 142, 7, 167, 144, 173, 150, 134, 156, 205, 230, 157, 162, 184, 130, 40, 232, 186, 113, 226, 240, 186, 28, 12, 199, 175, 14, 108, 128, 212, 123, 203, 204, 235, 90, 43, 143, 62, 114, 43, 144, 5, 74, 236, 104, 135, 95, 202, 233, 176, 67, 139, 243, 74, 195, 89, 12, 232, 253, 149, 153, 1, 132, 62, 229, 95, 162, 118, 139, 227, 47, 70, 160, 211, 46, 33, 123, 89, 196, 215, 222, 142, 117, 254, 85, 245, 139, 242, 30, 104, 193, 17, 84, 13, 60, 120, 37, 140, 174, 118, 52, 137, 132, 118, 132, 68, 254, 187, 21, 13, 180, 12, 178, 199, 219, 243, 130, 0, 55, 236, 213, 54, 54, 209, 202, 186, 248, 190, 72, 191, 78, 114, 50, 99, 64, 50, 122, 91, 139, 15, 52, 142, 9, 121, 158, 113, 7, 198, 232, 93, 206, 192, 56, 19, 103, 97, 52, 255, 128, 50, 128, 47, 37, 72, 89, 203, 87, 250, 128, 122, 248, 85, 26, 249, 50, 202, 218, 120, 91, 76, 155, 94, 152, 136, 253, 125, 245, 212, 242, 190, 40, 89, 80, 45, 74, 147, 198, 104, 194, 32, 98, 33, 101, 19, 78, 205, 221, 97, 234, 218, 17, 134, 134, 176, 82, 222, 153, 55, 151, 247, 126, 131, 100, 153, 211, 155, 183, 80, 60, 172, 135, 154, 124, 118, 121, 192, 37, 136, 11, 243, 160, 119, 74, 251, 0, 151, 189, 179, 19, 9, 196, 214, 117, 253, 148, 169, 77, 48, 233, 189, 195, 124, 138, 105, 172, 233, 249, 136, 152, 154, 57, 13, 156, 75, 5, 19, 113, 60, 171, 2, 86, 59, 44, 81, 147, 29, 24, 251, 39, 192, 108, 242, 90, 149, 167, 208, 126, 20, 239, 71, 243, 133, 237, 82, 154, 52, 239, 191, 120, 44, 9, 37, 119, 225, 113, 160, 108, 156, 80, 223, 146, 68, 161, 23, 86, 108, 86, 10, 134, 62, 249, 56, 221, 166, 95, 54, 240, 215, 3, 141, 8, 78, 183, 118, 81, 12, 126, 162, 158, 255, 215, 91, 142, 65, 198, 49, 60, 30, 1, 10, 171, 201, 33, 22, 60, 118, 233, 193, 55, 217, 57, 163, 238, 37, 132, 245, 184, 216, 197, 59, 77, 111, 252, 207, 136, 227, 239, 13, 211, 136, 82, 134, 69, 110, 217, 59, 181, 201, 120, 238, 157, 67, 218, 243, 136, 147, 65, 192, 186, 131, 244, 48, 26, 60, 143, 233, 86, 115, 185, 56, 165, 163, 239, 192, 6, 82, 181, 173, 198, 75, 136, 99, 14, 215, 159, 176, 183, 38, 162, 166, 146, 226, 208, 178, 1, 86, 225, 183, 70, 144, 113, 180, 109, 33, 93, 81, 16, 206, 41, 40, 0, 102, 226, 131, 71, 243, 49, 59, 145, 151, 132, 77, 60, 243, 107, 28, 25, 237, 59, 109, 152, 68, 146, 208, 124, 107, 61, 194, 207, 44, 138, 220, 71, 167, 13, 46, 178, 213, 146, 139, 241, 51, 43, 44, 57, 193, 91, 116, 201, 240, 60, 247, 251, 13, 225, 125, 204, 80, 169, 223, 1, 168, 177, 226, 240, 250, 43, 29, 54, 34, 172, 152, 175, 204, 47, 0, 133, 120, 52, 214, 211, 101, 236, 100, 158, 215, 187, 107, 57, 40, 39, 84, 181, 203, 203, 90, 24, 49, 3, 96, 17, 25, 76, 103, 62, 35, 14, 133, 147, 49, 113, 49, 87, 96, 246, 27, 182, 38, 212, 135, 68, 109, 99, 152, 13, 74, 55, 194, 185, 211, 16, 65, 107, 17, 245, 255, 46, 200, 187, 190, 252, 237, 164, 164, 13, 194, 11, 223, 196, 227, 63, 141, 184, 200, 252, 25, 91, 195, 190, 43, 242, 134, 147, 186, 144, 191, 31, 249, 102, 34, 2, 147, 119, 41, 7, 56, 0, 21, 72, 222, 90, 175, 95, 239, 207, 199, 141, 62, 72, 21, 37, 223, 48, 58, 29, 189, 102, 45, 231, 67, 237, 153, 47, 83, 222, 157, 115, 237, 83, 116, 84, 97, 194, 19, 107, 188, 158, 211, 123, 246, 214, 65, 151, 93, 39, 190, 93, 134, 106, 96, 154, 83, 141, 172, 66, 56, 55, 222, 53, 174, 7, 197, 10, 6, 198, 168, 16, 240, 2, 129, 60, 161, 95, 161, 118, 175, 14, 148, 179, 171, 67, 105, 71, 58, 4, 110, 175, 87, 16, 31, 116, 66, 34, 139, 130, 68, 135, 240, 14, 71, 208, 201, 87, 76, 29, 158, 232, 218, 16, 143, 177, 206, 0, 240, 8, 207, 17, 240, 217, 243, 242, 151, 144, 50, 68, 12, 197, 68, 136, 164, 227, 181, 169, 170, 211, 155, 76, 43, 157, 77, 144, 45, 138, 126, 10, 44, 206, 200, 99, 239, 113, 226, 95, 236, 77, 79, 111, 215, 194, 109, 26, 33, 17, 123, 159, 73, 152, 77, 164, 224, 126, 88, 180, 145, 114, 86, 45, 247, 61, 118, 65, 144, 55, 117, 108, 127, 143, 182, 173, 105, 165, 118, 146, 226, 9, 48, 193, 237, 251, 173, 179, 253, 79, 25, 162, 205, 5, 85, 71, 168, 115, 206, 195, 244, 242, 54, 253, 147, 68, 31, 45, 60, 92, 76, 40, 10, 129, 43, 155, 244, 178, 72, 145, 110, 169, 152, 202, 40, 255, 31, 189, 123, 170, 137, 118, 15, 3, 249, 135, 8, 9, 165, 158, 138, 242, 255, 215, 185, 189, 80, 243, 117, 108, 199, 94, 134, 106, 132, 232, 61, 234, 2, 77, 121, 35, 71, 152, 144, 122, 186, 120, 182, 89, 124, 202, 197, 34, 123, 43, 253, 67, 148, 68, 70, 141, 31, 64, 84, 81, 136, 166, 9, 234, 159, 161, 40, 32, 26, 79, 118, 118, 73, 133, 143, 68, 168, 202, 25, 192, 9, 204, 70, 125, 113, 215, 223, 200, 10, 197, 58, 86, 47, 52, 84, 75, 125, 192, 211, 117, 38, 211, 135, 96, 227, 121, 25, 32, 60, 180, 67, 155, 110, 83, 169, 254, 9, 3, 233, 218, 84, 14, 219, 87, 253, 188, 128, 90, 247, 131, 159, 216, 216, 4, 3, 163, 193, 177, 75, 20, 151, 54, 124, 210, 219, 24, 120, 88, 228, 141, 82, 27, 140, 166, 148, 156, 196, 81, 67, 179, 195, 56, 172, 250, 171, 158, 180, 145, 231, 247, 123, 38, 199, 97, 158, 252, 16, 171, 103, 2, 237, 29, 46, 108, 97, 149, 74, 28, 11, 174, 195, 91, 179, 201, 235, 136, 126, 36, 233, 121, 186, 32, 189, 4, 103, 181, 60, 6, 180, 15, 236, 42, 212, 132, 34, 192, 117, 11, 178, 155, 28, 41, 42, 241, 59, 46, 165, 33, 84, 116, 242, 67, 88, 208, 0, 224, 55, 126, 19, 94, 62, 17, 135, 43, 225, 146, 182, 115, 51, 225, 29, 52, 58, 40, 24, 134, 8, 56, 143, 178, 135, 45, 95, 111, 46, 149, 35, 144, 45, 194, 13, 187, 193, 172, 60, 253, 7, 127, 142, 194, 248, 78, 113, 144, 163, 179, 52, 13, 53, 121, 147, 248, 147, 42, 129, 237, 7, 204, 98, 83, 207, 38, 9, 200, 115, 1, 222, 19, 64, 17, 134, 204, 21, 57, 4, 147, 26, 254, 143, 181, 119, 181, 176, 100, 22, 195, 168, 20, 128, 210, 184, 233, 129, 162, 157, 250, 25, 51, 166, 235, 36, 28, 126, 245, 248, 241, 9, 79, 15, 46, 199, 54, 43, 3, 0, 42, 240, 219, 19, 205, 203, 149, 52, 9, 173, 78, 64, 249, 33, 86, 17, 12, 53, 130, 238, 207, 92, 131, 115, 202, 250, 65, 139, 179, 97, 232, 55, 40, 59, 143, 188, 6, 179, 211, 171, 193, 209, 53, 168, 103, 232, 170, 54, 35, 133, 126, 80, 98, 110, 85, 130, 115, 215, 143, 124, 194, 171, 146, 253, 252, 74, 196, 227, 186, 255, 44, 234, 251, 247, 216, 116, 14, 128, 105, 118, 177, 23, 191, 26, 65, 145, 116, 156, 29, 192, 71, 119, 31, 233, 180, 6, 206, 248, 250, 185, 253, 133, 183, 36, 25, 127, 237, 4, 55, 40, 206, 218, 5, 207, 220, 32, 186, 209, 189, 139, 223, 248, 46, 239, 147, 64, 192, 12, 61, 77, 124, 135, 240, 233, 196, 109, 133, 231, 223, 203, 102, 226, 69, 129, 19, 209, 128, 50, 87, 254, 248, 24, 125, 35, 220, 62, 246, 42, 191, 152, 77, 188, 73, 86, 242, 46, 95, 190, 32, 202, 179, 143, 171, 149, 64, 2, 114, 184, 18, 23, 245, 22, 14, 131, 195, 6, 26, 170, 104, 172, 123, 23, 98, 100, 44, 111, 22, 88, 58, 122, 137, 110, 58, 150, 111, 184, 213, 25, 193, 131, 160, 81, 247, 211, 143, 152, 187, 200, 18, 129, 102, 184, 147, 156, 246, 38, 224, 239, 145, 193, 9, 80, 137, 234, 204, 60, 227, 178, 254, 186, 178, 205, 120, 162, 77, 19, 64, 201, 164, 139, 157, 159, 250, 70, 172, 169, 58, 172, 148, 43, 195, 17, 112, 7, 89, 101, 82, 66, 48, 236, 60, 61, 60, 159, 47, 198, 155, 76, 142, 95, 126, 11, 118, 150, 243, 199, 10, 103, 157, 94, 160, 230, 122, 109, 100, 231, 235, 217, 251, 177, 238, 27, 113, 101, 165, 26, 154, 178, 54, 82, 133, 151, 244, 47, 207, 10, 242, 90, 231, 226, 3, 176, 26, 243, 37, 3, 73, 109, 17, 107, 183, 141, 190, 59, 187, 234, 153, 53, 0, 99, 135, 128, 125, 109, 207, 102, 139, 195, 19, 154, 254, 87, 139, 64, 173, 126, 1, 20, 231, 80, 29, 172, 117, 30, 120, 119, 157, 118, 17, 3, 152, 86, 11, 156, 116, 5, 77, 59, 84, 177, 6, 206, 48, 217, 188, 8, 35, 22, 153, 57, 34, 37, 112, 245, 29, 73, 250, 166, 221, 27, 81, 42, 160, 204, 54, 212, 2, 137, 64, 200, 216, 82, 178, 252, 130, 120, 78, 47, 18, 88, 112, 6, 107, 142, 147, 134, 94, 85, 130, 179, 68, 224, 80, 174, 66, 77, 132, 216, 224, 252, 97, 93, 148, 196, 210, 130, 72, 110, 9, 7, 114, 62, 100, 12, 223, 57, 94, 60, 165, 72, 60, 56, 211, 87, 143, 148, 243, 9, 44, 48, 15, 153, 3, 81, 247, 102, 91, 237, 33, 10, 193, 81, 12, 65, 255, 195, 88, 31, 54, 114, 238, 66, 245, 112, 252, 16, 155, 212, 74, 118, 68, 248, 30, 33, 26, 204, 12, 235, 71, 17, 6, 179, 4, 30, 96, 172, 208, 25, 12, 203, 170, 235, 165, 67, 196, 167, 29, 45, 125, 113, 208, 207, 153, 109, 70, 254, 133, 57, 94, 171, 229, 191, 212, 179, 217, 129, 246, 3, 1, 34, 208, 243, 54, 192, 107, 65, 4, 201, 150, 171, 201, 219, 3, 39, 247, 16, 212, 22, 158, 53, 146, 53, 182, 255, 172, 118, 191, 174, 10, 226, 81, 230, 152, 83, 188, 214, 67, 201, 40, 144, 6, 133, 86, 116, 103, 70, 112, 166, 202, 222, 74, 229, 223, 77, 244, 86, 185, 130, 28, 71, 21, 77, 2, 55, 190, 98, 213, 170, 156, 3, 176, 207, 77, 108, 58, 122, 159, 216, 222, 224, 167, 154, 15, 7, 156, 0, 202, 114, 78, 143, 111, 79, 225, 98, 150, 71, 39, 113, 52, 27, 165, 155, 5, 97, 138, 180, 73, 166, 78, 56, 230, 91, 240, 134, 45, 101, 15, 216, 158, 71, 183, 21, 201, 132, 206, 4, 194, 213, 175, 163, 46, 94, 104, 247, 222, 107, 161, 198, 59, 104, 221, 171, 202, 85, 93, 80, 85, 6, 232, 8, 21, 2, 156, 0, 111, 230, 47, 108, 139, 241, 11, 111, 185, 101, 135, 235, 179, 39, 153, 174, 102, 8, 106, 241, 123, 145, 129, 96, 63, 233, 22, 226, 1, 245, 163, 114, 20, 201, 251, 117, 93, 148, 204, 114, 106, 185, 177, 99, 210, 126, 209, 66, 41, 192, 139, 195, 206, 230, 59, 74, 63, 73, 31, 49, 233, 63, 190, 4, 148, 253, 127, 229, 182, 202, 94, 215, 112, 62, 116, 111, 197, 208, 233, 212, 44, 127, 46, 75, 250, 90, 132, 34, 227, 216, 156, 157, 176, 8, 132, 119, 2, 114, 101, 80, 7, 163, 114, 254, 239, 58, 188, 174, 8, 112, 90, 172, 19, 35, 101, 110, 59, 185, 205, 150, 197, 249, 72, 199, 160, 244, 18, 159, 137, 62, 251, 212, 140, 214, 202, 189, 231, 166, 240, 74, 133, 164, 184, 29, 116, 182, 207, 146, 29, 124, 204, 39, 233, 166, 194, 195, 39, 199, 18, 241, 195, 245, 163, 89, 37, 217, 41, 69, 123, 24, 153, 125, 170, 147, 241, 137, 176, 197, 34, 139, 165, 253, 78, 116, 74, 130, 30, 50, 161, 81, 238, 84, 42, 3, 40, 40, 134, 231, 242, 150, 97, 91, 94, 31, 207, 237, 56, 184, 188, 182, 107, 86, 188, 25, 170, 39, 195, 147, 116, 115, 199, 49, 144, 171, 152, 13, 222, 47, 175, 214, 11, 112, 59, 108, 108, 166, 50, 241, 208, 102, 219, 229, 191, 199, 4, 238, 91, 233, 10, 7, 179, 116, 182, 121, 184, 249, 18, 86, 162, 163, 34, 94, 164, 194, 206, 136, 101, 236, 229, 49, 131, 85, 42, 106, 80, 68, 179, 138, 144, 179, 18, 222, 120, 224, 245, 234, 143, 31, 169, 179, 52, 171, 36, 23, 208, 226, 61, 224, 139, 32, 238, 127, 99, 5, 238, 105, 91, 135, 56, 103, 184, 211, 51, 69, 222, 222, 123, 38, 2, 240, 211, 230, 177, 29, 38, 169, 34, 38, 229, 204, 30, 115, 35, 96, 76, 178, 179, 82, 204, 166, 230, 221, 129, 52, 41, 54, 254, 5, 102, 80, 85, 141, 79, 248, 204, 170, 127, 77, 12, 2, 229, 90, 197, 111, 109, 198, 155, 119, 178, 144, 46, 155, 126, 243, 70, 198, 70, 70, 102, 208, 9, 79, 119, 39, 146, 173, 217, 144, 182, 88, 72, 110, 36, 197, 85, 76, 183, 217, 190, 28, 66, 5, 68, 39, 17, 155, 157, 70, 73, 82, 163, 173, 185, 77, 214, 150, 183, 67, 193, 63, 233, 113, 101, 247, 57, 130, 89, 50, 25, 122, 120, 145, 189, 254, 118, 26, 146, 200, 115, 59, 175, 128, 240, 122, 35, 28, 183, 169, 243, 103, 209, 144, 38, 214, 77, 235, 182, 149, 163, 245, 187, 53, 31, 9, 221, 102, 117, 232, 79, 210, 29, 178, 175, 12, 35, 132, 220, 188, 147, 186, 239, 144, 128, 169, 46, 75, 183, 221, 41, 53, 91, 210, 121, 149, 144, 107, 109, 153, 90, 250, 165, 35, 189, 240, 214, 66, 21, 241, 124, 136, 141, 165, 156, 18, 109, 26, 150, 68, 103, 11, 113, 19, 44, 104, 89, 43, 68, 240, 14, 141, 21, 26, 124, 125, 151, 117, 179, 110, 53, 11, 228, 121, 193, 65, 180, 146, 62, 139, 24, 114, 135, 47, 43, 46, 162, 126, 238, 227, 174, 198, 225, 224, 37, 78, 73, 224, 40, 118, 254, 148, 43, 7, 230, 106, 1, 56, 174, 5, 106, 235, 181, 235, 155, 243, 120, 150, 65, 24, 211, 19, 232, 8, 20, 221, 73, 153, 230, 198, 92, 106, 151, 126, 63, 141, 92, 104, 137, 119, 144, 243, 161, 60, 69, 0, 33, 98, 207, 125, 115, 234, 211, 35, 193, 134, 151, 213, 96, 48, 10, 77, 156, 70, 173, 237, 167, 193, 122, 232, 63, 88, 9, 108, 57, 204, 80, 75, 112, 174, 59, 137, 64, 102, 152, 188, 89, 152, 171, 189, 144, 70, 237, 204, 65, 180, 201, 191, 229, 137, 32, 20, 84, 67, 44, 11, 199, 52, 29, 110, 79, 246, 42, 158, 129, 135, 94, 34, 182, 164, 153, 145, 148, 195, 88, 156, 170, 244, 142, 82, 37, 88, 24, 115, 87, 180, 46, 40, 41, 106, 116, 192, 92, 253, 208, 69, 98, 209, 199, 180, 49, 247, 102, 241, 47, 26, 128, 213, 49, 226, 171, 177, 167, 38, 89, 182, 92, 122, 229, 190, 52, 217, 236, 100, 143, 118, 45, 56, 1, 30, 173, 118, 4, 71, 92, 22, 220, 232, 224, 102, 37, 58, 239, 215, 121, 19, 192, 221, 69, 94, 18, 101, 139, 203, 79, 53, 21, 192, 227, 211, 88, 140, 194, 46, 251, 111, 234, 142, 43, 40, 171, 29, 76, 107, 42, 208, 2, 151, 48, 178, 14, 133, 243, 114, 108, 82, 94, 117, 22, 50, 80, 224, 223, 13, 212, 185, 248, 217, 180, 5, 119, 113, 160, 32, 123, 253, 94, 139, 85, 131, 157, 27, 204, 158, 78, 117, 188, 98, 30, 115, 50, 111, 195, 143, 234, 64, 174, 34, 244, 154, 138, 246, 101, 23, 138, 182, 126, 20, 189, 208, 215, 146, 57, 243, 222, 41, 201, 51, 47, 7, 202, 249, 45, 160, 44, 112, 89, 145, 224, 118, 10, 90, 142, 64, 7, 6, 52, 137, 217, 152, 246, 66, 101, 216, 222, 210, 21, 59, 88, 159, 37, 75, 201, 241, 169, 65, 64, 227, 239, 9, 15, 87, 91, 250, 17, 104, 107, 186, 101, 18, 198, 60, 143, 21, 2, 75, 196, 160, 166, 145, 112, 127, 157, 250, 19, 148, 158, 179, 225, 183, 136, 210, 26, 26, 202, 63, 73, 169, 58, 251, 45, 93, 118, 240, 105, 213, 248, 84, 158, 184, 22, 28, 211, 16, 166, 74, 9, 60, 46, 210, 99, 123, 93, 16, 209, 111, 240, 210, 186, 14, 255, 215, 204, 66, 164, 50, 231, 182, 106, 121, 137, 27, 190, 242, 12, 98, 195, 49, 21, 32, 60, 162, 106, 166, 169, 169, 7, 166, 52, 148, 222, 117, 251, 208, 132, 215, 136, 52, 223, 188, 140, 47, 122, 105, 49, 13, 14, 23, 241, 132, 41, 92, 125, 115, 47, 180, 68, 72, 112, 42, 150, 131, 159, 138, 130, 77, 229, 250, 85, 27, 29, 119, 240, 102, 90, 71, 68, 82, 197, 190, 78, 190, 215, 237, 204, 218, 54, 59, 26, 76, 239, 238, 107, 67, 54, 217, 112, 28, 95, 223, 208, 68, 32, 32, 215, 86, 160, 65, 160, 10, 72, 75, 217, 16, 194, 201, 252, 133, 0, 48, 237, 37, 25, 119, 73, 9, 37, 116, 171, 19, 91, 218, 231, 249, 167, 142, 4, 30, 214, 127, 93, 98, 193, 248, 105, 59, 248, 167, 208, 33, 171, 199, 109, 86, 223, 155, 63, 164, 97, 247, 91, 14, 200, 216, 188, 29, 186, 210, 36, 220, 115, 72, 136, 96, 84, 85, 141, 216, 19, 218, 98, 113, 42, 189, 115, 100, 230, 2, 199, 61, 41, 83, 71, 207, 134, 163, 72, 217, 19, 45, 212, 33, 76, 194, 102, 100, 250, 105, 0, 184, 32, 80, 252, 38, 112, 86, 253, 227, 118, 90, 234, 196, 127, 90, 173, 221, 23, 114, 126, 215, 19, 180, 26, 28, 9, 92, 208, 122, 165, 116, 64, 109, 192, 191, 57, 49, 239, 6, 149, 53, 158, 92, 163, 6, 255, 236, 230, 0, 213, 67, 197, 82, 246, 12, 69, 62, 61, 244, 73, 147, 10, 69, 235, 110, 96, 22, 81, 254, 155, 87, 235, 170, 0, 196, 239, 9, 150, 99, 95, 186, 15, 3, 168, 249, 130, 140, 80, 200, 27, 12, 31, 65, 239, 254, 205, 188, 34, 106, 104, 110, 2, 191, 150, 87, 141, 239, 170, 166, 115, 11, 172, 248, 129, 237, 188, 184, 25, 129, 61, 122, 50, 71, 136, 140, 66, 212, 198, 197, 187, 246, 44, 75, 31, 194, 113, 83, 141, 0, 21, 17, 179, 123, 216, 44, 16, 49, 37, 67, 254, 76, 54, 110, 65, 229, 146, 72, 220, 97, 63, 208, 113, 7, 36, 178, 9, 54, 90, 254, 109, 77, 199, 190, 107, 11, 183, 27, 13, 160, 96, 203, 133, 221, 233, 42, 221, 33, 152, 152, 162, 52, 109, 106, 101, 122, 202, 14, 30, 102, 229, 114, 37, 53, 203, 2, 245, 226, 125, 229, 207, 8, 164, 46, 245, 69, 53, 56, 131, 18, 17, 62, 121, 125, 85, 9, 122, 209, 248, 45, 241, 134, 45, 147, 103, 162, 210, 190, 227, 205, 201, 37, 56, 212, 214, 180, 42, 22, 0, 148, 173, 14, 180, 249, 137, 10, 103, 148, 92, 250, 2, 104, 250, 25, 234, 223, 64, 52, 146, 166, 121, 125, 41, 118, 115, 181, 188, 190, 68, 215, 36, 231, 140, 156, 87, 95, 111, 81, 109, 122, 160, 126, 178, 8, 5, 209, 212, 166, 169, 66, 248, 216, 70, 229, 27, 107, 62, 48, 25, 153, 52, 246, 54, 209, 77, 159, 53, 122, 50, 190, 178, 179, 94, 56, 58, 188, 64, 238, 155, 99, 18, 5, 26, 1, 56, 239, 187, 114, 16, 131, 116, 107, 128, 133, 89, 73, 36, 169, 15, 217, 32, 77, 106, 80, 89, 123, 116, 84, 9, 62, 213, 152, 26, 164, 167, 179, 118, 39, 166, 95, 166, 129, 76, 32, 96, 95, 90, 194, 198, 68, 23, 242, 88, 65, 195, 30, 127, 52, 224, 3, 208, 175, 191, 226, 110, 46, 68, 71, 88, 226, 225, 230, 217, 235, 240, 57, 254, 145, 0, 186, 177, 134, 158, 84, 48, 205, 132, 119, 115, 180, 56, 246, 211, 159, 32, 235, 41, 74, 37, 107, 2, 213, 47, 195, 246, 88, 136, 174, 225, 85, 213, 68, 41, 115, 66, 125, 147, 122, 165, 131, 199, 150, 236, 67, 227, 67, 58, 129, 57, 236, 53, 85, 118, 84, 221, 61, 135, 170, 95, 67, 65, 123, 131, 95, 221, 86, 125, 43, 45, 143, 19, 223, 191, 181, 118, 60, 50, 253, 121, 40, 185, 95, 73, 163, 76, 37, 224, 76, 2, 1, 69, 43, 153, 218, 137, 252, 253, 188, 182, 142, 68, 188, 144, 49, 161, 17, 31, 109, 193, 189, 99, 115, 188, 183, 23, 27, 237, 64, 236, 229, 202, 77, 128, 88, 199, 10, 38, 51, 167, 182, 48, 237, 69, 31, 193, 17, 5, 72, 201, 233, 4, 121, 91, 204, 177, 9, 254, 173, 177, 229, 83, 186, 191, 184, 219, 157, 192, 220, 58, 109, 226, 148, 177, 50, 40, 0, 89, 117, 21, 141, 29, 33, 83, 48, 224, 100, 72, 182, 85, 155, 48, 3, 128, 93, 198, 165, 73, 104, 88, 187, 38, 28, 132, 189, 78, 65, 81, 146, 187, 3, 75, 228, 200, 225, 214, 35, 34, 194, 176, 186, 110, 23, 239, 82, 67, 141, 193, 85, 204, 249, 62, 178, 8, 49, 28, 242, 114, 18, 240, 191, 158, 169, 250, 12, 143, 31, 237, 148, 58, 178, 1, 13, 84, 98, 158, 68, 130, 124, 233, 0, 151, 223, 85, 190, 249, 143, 76, 10, 30, 65, 149, 11, 201, 79, 214, 152, 89, 211, 120, 213, 198, 59, 227, 9, 36, 31, 85, 147, 79, 231, 199, 209, 210, 212, 76, 234, 177, 124, 239, 22, 50, 16, 94, 156, 144, 177, 166, 142, 226, 83, 220, 88, 76, 239, 186, 47, 252, 165, 123, 92, 69, 20, 167, 41, 226, 51, 158, 217, 133, 137, 24, 228, 185, 224, 253, 222, 99, 56, 121, 72, 69, 133, 79, 42, 116, 254, 7, 203, 100, 211, 125, 88, 134, 66, 26, 95, 217, 242, 42, 113, 130, 70, 11, 3, 106, 159, 220, 63, 176, 249, 219, 104, 94, 204, 186, 97, 49, 85, 66, 135, 162, 107, 245, 106, 231, 67, 225, 140, 95, 58, 21, 222, 105, 218, 88, 143, 188, 4, 195, 89, 49, 54, 20, 80, 213, 142, 95, 13, 181, 131, 16, 127, 139, 233, 161, 128, 164, 9, 132, 239, 106, 216, 242, 72, 71, 201, 120, 152, 149, 27, 133, 22, 245, 60, 212, 217, 152, 19, 126, 147, 101, 38, 134, 49, 17, 104, 81, 150, 56, 25, 5, 246, 24, 20, 221, 134, 170, 11, 186, 91, 245, 72, 191, 110, 137, 221, 81, 3, 176, 187, 71, 148, 18, 100, 5, 78, 84, 152, 198, 230, 58, 65, 38, 103, 38, 213, 226, 86, 164, 51, 165, 61, 231, 201, 13, 217, 28, 162, 204, 201, 143, 168, 198, 56, 51, 43, 97, 163, 208, 108, 186, 52, 121, 102, 51, 206, 211, 186, 205, 231, 99, 99, 171, 27, 157, 171, 200, 226, 210, 96, 1, 132, 79, 102, 185, 16, 90, 3, 255, 28, 37, 240, 70, 166, 40, 192, 142, 230, 93, 41, 159, 13, 141, 172, 167, 156, 197, 77, 20, 10, 39, 255, 95, 1, 228, 158, 232, 201, 170, 189, 20, 95, 223, 158, 62, 211, 129, 203, 235, 214, 220, 133, 184, 206, 80, 196, 146, 244, 5, 153, 232, 176, 236, 17, 182, 241, 182, 103, 29, 135, 236, 109, 102, 129, 234, 132, 138, 110, 28, 180, 181, 198, 225, 73, 67, 238, 233, 13, 191, 226, 233, 179, 181, 195, 69, 60, 140, 74, 12, 156, 172, 247, 166, 29, 160, 39, 136, 209, 250, 81, 20, 115, 19, 177, 5, 47, 133, 177, 68, 115, 11, 203, 195, 1, 91, 182, 253, 133, 110, 240, 82, 126, 106, 18, 176, 215, 211, 151, 9, 98, 230, 200, 14, 106, 202, 85, 149, 92, 78, 33, 117, 7, 176, 100, 119, 88, 125, 148, 170, 55, 78, 62, 102, 186, 211, 1, 186, 249, 153, 70, 4, 178, 131, 146, 136, 255, 95, 201, 109, 48, 73, 23, 234, 1, 183, 172, 206, 128, 126, 248, 64, 87, 105, 249, 33, 89, 114, 187, 177, 63, 55, 253, 123, 166, 244, 96, 218, 162, 11, 93, 104, 115, 180, 167, 137, 113, 131, 199, 128, 93, 253, 76, 19, 169, 15, 185, 138, 254, 190, 164, 254, 97, 24, 226, 8, 172, 9, 119, 252, 144, 99, 101, 238, 118, 182, 137, 108, 222, 125, 252, 24, 200, 63, 248, 189, 159, 141, 5, 135, 142, 15, 232, 114, 15, 41, 128, 34, 54, 222, 173, 119, 208, 246, 253, 179, 27, 174, 243, 85, 14, 190, 241, 171, 99, 182, 214, 242, 217, 89, 53, 78, 130, 222, 63, 5, 151, 238, 112, 129, 158, 198, 25, 179, 2, 217, 233, 52, 210, 183, 131, 207, 89, 61, 89, 133, 192, 171, 246, 255, 161, 230, 119, 119, 43, 11, 103, 114, 202, 128, 54, 205, 95, 113, 144, 117, 36, 150, 118, 39, 67, 8, 214, 159, 14, 51, 97, 5, 187, 15, 151, 142, 34, 161, 139, 77, 104, 202, 239, 151, 113, 62, 187, 13, 233, 174, 133, 112, 175, 240, 166, 230, 163, 251, 249, 31, 16, 86, 96, 93, 24, 156, 27, 57, 69, 38, 89, 208, 190, 167, 167, 119, 31, 149, 17, 155, 101, 241, 200, 173, 60, 204, 214, 203, 164, 10, 15, 58, 249, 222, 201, 42, 92, 140, 254, 144, 163, 4, 204, 226, 56, 14, 200, 212, 64, 18, 21, 0, 85, 124, 109, 206, 104, 149, 183, 98, 142, 197, 78, 204, 19, 141, 211, 152, 64, 196, 219, 105, 96, 60, 92, 22, 245, 15, 186, 163, 238, 216, 52, 161, 75, 253, 75, 97, 200, 187, 184, 179, 17, 56, 249, 169, 232, 131, 236, 88, 46, 128, 27, 180, 162, 72, 59, 249, 86, 32, 102, 242, 109, 164, 170, 253, 218, 140, 132, 249, 99, 32, 185, 238, 94, 81, 235, 194, 61, 32, 212, 154, 3, 120, 24, 98, 221, 89, 30, 235, 40, 57, 34, 94, 28, 148, 130, 14, 91, 5, 237, 42, 154, 205, 129, 110, 107, 143, 32, 166, 50, 5, 43, 16, 140, 233, 121, 183, 95, 145, 168, 26, 152, 15, 121, 189, 64, 102, 3, 115, 90, 34, 138, 73, 85, 214, 115, 105, 69, 141, 207, 31, 130, 35, 33, 61, 56, 9, 201, 225, 68, 1, 169, 232, 131, 218, 139, 144, 58, 5, 59, 31, 48, 23, 215, 122, 216, 235, 192, 84, 36, 249, 180, 142, 229, 155, 72, 78, 17, 56, 160, 170, 117, 134, 152, 138, 46, 213, 17, 111, 135, 3, 56, 133, 192, 253, 52, 155, 255, 24, 182, 220, 34, 18, 180, 157, 70, 118, 148, 73, 57, 133, 60, 2, 70, 3, 67, 197, 157, 149, 242, 210, 103, 33, 159, 178, 83, 13, 189, 137, 76, 225, 180, 50, 118, 14, 29, 219, 184, 94, 58, 151, 1, 42, 223, 48, 12, 223, 9, 121, 114, 87, 199, 172, 13, 217, 97, 48, 41, 114, 112, 107, 212, 66, 7, 110, 148, 129, 187, 7, 229, 214, 84, 179, 41, 57, 41, 190, 53, 113, 222, 224, 161, 115, 223, 111, 237, 194, 233, 66, 170, 101, 232, 248, 24, 13, 7, 7, 209, 115, 64, 55, 90, 234, 40, 82, 238, 254, 80, 119, 100, 158, 198, 141, 67, 138, 4, 162, 22, 192, 49, 184, 250, 94, 193, 15, 147, 142, 209, 158, 229, 196, 176, 74, 7, 253, 105, 66, 49, 73, 52, 85, 152, 241, 222, 164, 103, 77, 166, 117, 114, 253, 30, 148, 64, 59, 88, 129, 57, 211, 71, 192, 30, 94, 28, 207, 55, 236, 219, 44, 112, 164, 69, 210, 137, 92, 137, 58, 8, 74, 13, 152, 81, 9, 237, 164, 15, 162, 163, 147, 231, 115, 72, 215, 34, 206, 75, 16, 122, 189, 181, 110, 46, 37, 147, 179, 65, 252, 0, 83, 38, 206, 229, 38, 222, 220, 122, 106, 50, 63, 191, 123, 160, 103, 182, 45, 203, 22, 221, 234, 38, 236, 65, 127, 251, 189, 114, 80, 61, 122, 111, 202, 128, 191, 143, 117, 246, 3, 16, 222, 106, 15, 58, 23, 114, 97, 44, 160, 235, 218, 23, 222, 147, 139, 120, 161, 143, 216, 242, 75, 154, 251, 127, 57, 138, 11, 174, 136, 46, 215, 122, 0, 205, 159, 2, 12, 216, 241, 112, 161, 211, 121, 140, 245, 145, 177, 212, 3, 58, 123, 151, 182, 89, 34, 111, 245, 239, 132, 202, 11, 4, 143, 81, 188, 8, 224, 194, 174, 225, 214, 16, 24, 207, 73, 217, 45, 94, 235, 223, 49, 82, 82, 217, 236, 9, 57, 225, 78, 97, 254, 5, 235, 226, 170, 210, 40, 17, 47, 127, 82, 116, 37, 2, 245, 53, 205, 241, 129, 9, 249, 254, 51, 128, 183, 127, 175, 65, 81, 222, 113, 93, 210, 171, 33, 206, 119, 232, 6, 191, 49, 114, 29, 210, 19, 228, 126, 64, 149, 152, 252, 29, 174, 80, 172, 87, 53, 17, 138, 151, 40, 0, 195, 54, 88, 181, 143, 204, 112, 206, 66, 54, 86, 87, 215, 191, 195, 238, 218, 120, 127, 95, 233, 101, 119, 203, 58, 31, 230, 139, 46, 38, 113, 52, 221, 245, 98, 98, 155, 74, 145, 55, 51, 85, 25, 219, 0, 192, 10, 220, 218, 110, 4, 172, 200, 217, 1, 100, 86, 139, 217, 232, 4, 88, 123, 47, 14, 118, 102, 160, 225, 81, 31, 224, 116, 240, 140, 99, 30, 114, 159, 189, 181, 61, 141, 107, 154, 202, 73, 123, 75, 205, 164, 40, 59, 43, 47, 148, 236, 172, 218, 71, 44, 225, 240, 71, 137, 53, 68, 233, 46, 57, 68, 239, 43, 151, 15, 110, 239, 17, 162, 208, 245, 146, 115, 74, 92, 30, 250, 143, 100, 7, 14, 251, 232, 118, 212, 109, 209, 119, 96, 171, 30, 90, 34, 156, 123, 7, 172, 211, 48, 67, 83, 215, 181, 87, 8, 224, 181, 176, 144, 213, 179, 201, 235, 27, 115, 158, 171, 173, 202, 93, 63, 17, 96, 14, 202, 147, 153, 165, 160, 119, 232, 183, 213, 161, 71, 245, 160, 3, 241, 132, 37, 10, 187, 101, 30, 47, 201, 79, 124, 12, 92, 160, 91, 115, 239, 64, 117, 162, 56, 171, 129, 19, 234, 211, 63, 76, 36, 86, 4, 237, 190, 92, 124, 1, 125, 248, 111, 10, 130, 7, 240, 205, 146, 129, 210, 88, 124, 72, 96, 108, 148, 24, 164, 127, 223, 21, 228, 147, 188, 7, 200, 175, 162, 100, 5, 111, 197, 175, 113, 78, 156, 145, 213, 203, 17, 140, 69, 62, 16, 117, 172, 48, 66, 16, 115, 111, 33, 25, 5, 45, 206, 158, 115, 120, 228, 166, 63, 150, 147, 243, 64, 216, 11, 254, 107, 145, 167, 121, 25, 54, 3, 1, 150, 14, 226, 157, 144, 70, 139, 77, 58, 100, 87, 240, 9, 30, 3, 48, 199, 172, 122, 65, 156, 74, 231, 119, 211, 62, 94, 177, 129, 91, 248, 212, 177, 33, 60, 57, 224, 101, 197, 234, 48, 184, 136, 155, 164, 234, 44, 225, 169, 247, 196, 254, 131, 59, 216, 112, 78, 7, 205, 107, 55, 135, 127, 138, 129, 14, 254, 208, 211, 46, 90, 127, 121, 113, 200, 168, 167, 61, 236, 215, 236, 42, 38, 173, 49, 89, 112, 50, 220, 82, 196, 80, 164, 216, 226, 42, 207, 171, 114, 191, 215, 222, 23, 148, 96, 150, 255, 220, 127, 254, 156, 51, 226, 213, 184, 183, 170, 73, 51, 179, 98, 135, 230, 82, 207, 5, 252, 97, 35, 2, 80, 15, 93, 93, 82, 210, 11, 249, 34, 192, 54, 204, 33, 27, 68, 194, 8, 78, 202, 80, 78, 134, 117, 50, 123, 135, 115, 249, 5, 56, 1, 39, 44, 46, 139, 138, 9, 149, 169, 20, 148, 119, 141, 117, 240, 220, 20, 134, 70, 240, 110, 99, 103, 213, 7, 56, 106, 210, 174, 8, 218, 233, 195, 47, 36, 79, 171, 132, 47, 239, 14, 200, 203, 76, 246, 98, 216, 141, 235, 200, 3, 176, 95, 194, 96, 105, 60, 203, 80, 170, 212, 123, 167, 226, 128, 41, 255, 248, 33, 57, 26, 253, 202, 73, 150, 10, 144, 164, 126, 189, 117, 140, 88, 158, 110, 40, 140, 73, 255, 55, 136, 111, 66, 133, 145, 239, 210, 242, 91, 98, 10, 198, 167, 158, 166, 73, 124, 78, 12, 144, 84, 147, 8, 44, 236, 147, 165, 58, 148, 167, 103, 160, 47, 128, 138, 86, 194, 38, 44, 152, 67, 232, 160, 38, 130, 215, 113, 204, 207, 129, 105, 45, 151, 9, 95, 204, 34, 24, 80, 66, 44, 165, 104, 165, 122, 170, 200, 123, 38, 97, 22, 67, 72, 37, 247, 61, 223, 160, 13, 23, 113, 99, 159, 43, 221, 37, 7, 175, 102, 69, 121, 223, 163, 247, 18, 2, 241, 152, 165, 189, 25, 248, 188, 174, 43, 64, 16, 122, 11, 58, 250, 209, 174, 237, 111, 172, 204, 137, 121, 35, 178, 34, 126, 29, 148, 103, 78, 91, 213, 139, 95, 85, 126, 211, 46, 193, 44, 112, 207, 26, 114, 246, 233, 168, 40, 175, 6, 4, 208, 48, 123, 165, 112, 141, 134, 76, 43, 255, 8, 241, 111, 211, 10, 143, 7, 33, 235, 23, 46, 0, 26, 139, 235, 232, 86, 191, 128, 11, 144, 32, 246, 232, 47, 112, 14, 133, 223, 212, 198, 237, 168, 21, 228, 153, 92, 245, 186, 157, 183, 54, 75, 215, 63, 114, 163, 29, 203, 161, 64, 51, 121, 158, 146, 197, 6, 202, 4, 117, 186, 132, 86, 30, 242, 40, 254, 202, 123, 118, 100, 177, 248, 141, 184, 248, 176, 148, 126, 159, 28, 145, 115, 77, 201, 84, 224, 221, 229, 52, 127, 58, 48, 246, 100, 32, 182, 76, 95, 94, 133, 92, 79, 201, 161, 135, 134, 139, 36, 36, 133, 13, 212, 237, 105, 10, 7, 153, 143, 124, 203, 17, 115, 157, 53, 47, 107, 31, 252, 18, 190, 197, 8, 107, 55, 175, 57, 180, 84, 150, 154, 237, 173, 122, 229, 157, 108, 123, 210, 160, 243, 62, 167, 88, 180, 88, 204, 224, 23, 122, 18, 19, 253, 210, 39, 50, 149, 16, 111, 100, 243, 232, 187, 108, 69, 236, 234, 169, 100, 77, 192, 251, 166, 201, 90, 150, 85, 238, 188, 156, 246, 19, 99, 190, 103, 86, 202, 91, 39, 22, 154, 9, 203, 167, 228, 247, 102, 21, 110, 147, 221, 75, 15, 186, 77, 65, 89, 216, 208, 86, 22, 201, 55, 92, 221, 167, 189, 116, 25, 157, 230, 150, 135, 81, 238, 123, 102, 18, 222, 203, 248, 121, 145, 129, 67, 123, 161, 20, 44, 244, 67, 211, 232, 45, 119, 244, 133, 7, 142, 211, 79, 35, 218, 68, 64, 44, 224, 113, 135, 80, 120, 56, 54, 203, 29, 128, 34, 109, 10, 127, 142, 58, 160, 84, 211, 208, 196, 239, 235, 153, 232, 206, 39, 43, 149, 55, 184, 192, 126, 160, 94, 78, 213, 222, 26, 233, 135, 218, 56, 117, 152, 209, 1, 188, 175, 84, 149, 39, 181, 215, 87, 128, 120, 65, 38, 36, 179, 99, 170, 216, 169, 219, 217, 255, 168, 85, 125, 55, 5, 104, 179, 116, 206, 126, 148, 47, 135, 109, 25, 157, 235, 248, 206, 170, 25, 180, 120, 189, 93, 124, 172, 94, 45, 241, 20, 191, 219, 4, 198, 207, 172, 190, 90, 65, 91, 1, 189, 207, 139, 178, 73, 23, 31, 214, 104, 227, 254, 115, 94, 22, 152, 143, 11, 80, 178, 142, 146, 168, 222, 23, 231, 138, 195, 216, 63, 210, 175, 205, 98, 183, 209, 88, 171, 96, 181, 93, 33, 205, 226, 132, 226, 182, 3, 160, 226, 210, 152, 39, 26, 40, 97, 148, 65, 242, 217, 72, 17, 252, 87, 191, 166, 205, 153, 100, 147, 55, 234, 235, 198, 10, 25, 99, 250, 236, 191, 152, 193, 26, 96, 72, 113, 255, 188, 190, 36, 114, 41, 238, 6, 91, 41, 2, 100, 173, 140, 198, 241, 75, 141, 69, 129, 239, 194, 44, 82, 224, 81, 52, 100, 129, 81, 49, 218, 186, 130, 188, 238, 86, 109, 189, 209, 9, 115, 206, 21, 235, 140, 150, 167, 136, 208, 95, 124, 189, 24, 13, 161, 238, 165, 195, 10, 60, 77, 191, 211, 250, 0, 33, 98, 240, 235, 66, 125, 82, 180, 34, 106, 142, 15, 87, 212, 204, 187, 10, 247, 98, 154, 192, 166, 199, 169, 72, 99, 37, 236, 153, 117, 35, 215, 236, 81, 249, 104, 34, 181, 211, 237, 79, 248, 203, 103, 131, 170, 151, 151, 165, 120, 204, 152, 88, 13, 80, 161, 220, 114, 112, 135, 212, 203, 142, 123, 119, 103, 42, 142, 79, 185, 67, 28, 60, 34, 221, 207, 12, 41, 35, 21, 121, 233, 31, 205, 219, 165, 123, 200, 39, 87, 69, 67, 125, 128, 185, 4, 26, 218, 230, 114, 131, 5, 159, 54, 8, 185, 64, 172, 82, 116, 21, 201, 157, 3, 78, 182, 200, 7, 240, 207, 119, 152, 242, 241, 253, 134, 240, 135, 83, 152, 78, 12, 54, 212, 139, 199, 74, 232, 143, 45, 125, 139, 27, 106, 253, 185, 62, 174, 52, 252, 252, 139, 15, 103, 208, 79, 181, 151, 91, 44, 222, 189, 212, 221, 131, 166, 111, 71, 235, 116, 17, 80, 81, 197, 184, 71, 177, 53, 245, 40, 20, 241, 11, 50, 71, 56, 211, 51, 20, 11, 157, 61, 111, 79, 86, 79, 37, 55, 46, 117, 153, 222, 51, 80, 95, 185, 0, 119, 194, 164, 61, 249, 250, 97, 193, 192, 118, 33, 125, 30, 236, 221, 2, 138, 164, 123, 209, 11, 74, 172, 74, 249, 198, 127, 21, 142, 170, 40, 26, 158, 69, 241, 205, 33, 206, 27, 3, 71, 198, 163, 13, 242, 5, 165, 167, 231, 46, 66, 190, 36, 10, 71, 234, 50, 79, 137, 245, 81, 8, 226, 35, 100, 243, 170, 22, 114, 242, 78, 20, 93, 190, 204, 169, 198, 194, 241, 4, 224, 130, 217, 164, 206, 237, 118, 97, 80, 76, 182, 83, 6, 247, 8, 125, 73, 97, 107, 229, 50, 190, 131, 151, 125, 187, 21, 185, 63, 246, 132, 19, 90, 237, 226, 144, 68, 95, 234, 173, 131, 201, 101, 139, 47, 247, 110, 109, 33, 138, 106, 44, 230, 123, 230, 69, 157, 113, 233, 206, 97, 68, 242, 126, 128, 108, 116, 227, 157, 219, 28, 238, 215, 215, 17, 243, 192, 79, 177, 180, 61, 145, 57, 167, 151, 165, 170, 24, 58, 66, 136, 21, 118, 238, 102, 58, 51, 159, 224, 82, 121, 32, 208, 214, 254, 243, 62, 183, 99, 158, 51, 242, 24, 101, 74, 139, 38, 212, 1, 225, 230, 91, 155, 214, 108, 75, 145, 136, 17, 206, 35, 233, 191, 5, 20, 205, 100, 157, 113, 49, 7, 178, 54, 145, 123, 114, 111, 224, 148, 116, 148, 131, 93, 101, 252, 75, 1, 32, 86, 124, 66, 56, 95, 161, 38, 88, 145, 245, 235, 210, 45, 248, 2, 245, 41, 111, 11, 153, 101, 16, 200, 88, 117, 113, 124, 41, 15, 227, 24, 134, 75, 3, 110, 203, 212, 41, 195, 162, 91, 14, 240, 55, 168, 149, 49, 238, 142, 151, 128, 82, 76, 199, 212, 67, 54, 146, 118, 113, 83, 38, 178, 68, 204, 189, 122, 224, 114, 169, 153, 191, 235, 227, 137, 214, 143, 126, 198, 139, 254, 41, 36, 44, 0, 111, 174, 145, 9, 110, 86, 92, 42, 75, 106, 87, 85, 52, 40, 176, 171, 143, 231, 237, 121, 36, 90, 174, 50, 37, 190, 87, 72, 222, 187, 226, 120, 130, 247, 142, 218, 23, 28, 142, 45, 32, 161, 187, 185, 114, 62, 16, 215, 180, 251, 93, 202, 101, 20, 182, 88, 140, 119, 19, 41, 162, 118, 177, 137, 40, 179, 75, 183, 116, 163, 178, 6, 226, 42, 181, 199, 134, 141, 71, 112, 238, 71, 40, 55, 93, 58, 113, 29, 105, 127, 4, 180, 83, 131, 235, 219, 238, 182, 116, 55, 76, 23, 85, 120, 122, 212, 94, 97, 61, 238, 233, 55, 116, 198, 52, 222, 197, 197, 240, 145, 218, 116, 188, 93, 0, 128, 119, 102, 223, 247, 12, 36, 223, 207, 96, 4, 218, 25, 183, 20, 17, 82, 43, 174, 152, 237, 199, 225, 186, 38, 228, 15, 77, 139, 88, 99, 207, 30, 115, 123, 179, 80, 18, 84, 224, 70, 80, 146, 68, 18, 54, 243, 92, 249, 136, 65, 217, 6, 83, 228, 3, 59, 41, 231, 160, 116, 191, 113, 65, 124, 62, 16, 191, 164, 153, 115, 77, 31, 181, 142, 196, 214, 145, 227, 205, 38, 70, 7, 185, 37, 144, 101, 124, 3, 124, 119, 86, 76, 10, 87, 176, 207, 207, 12, 224, 39, 52, 99, 223, 124, 185, 43, 139, 163, 125, 71, 105, 227, 23, 105, 141, 231, 229, 233, 143, 49, 251, 157, 85, 165, 241, 42, 122, 122, 165, 65, 186, 43, 121, 218, 198, 39, 6, 181, 130, 111, 12, 210, 147, 221, 10, 143, 6, 173, 15, 170, 207, 73, 122, 84, 190, 228, 255, 71, 235, 21, 135, 251, 165, 186, 228, 55, 214, 191, 219, 88, 21, 235, 169, 63, 45, 253, 225, 50, 96, 63, 22, 43, 168, 88, 13, 63, 88, 206, 80, 116, 189, 149, 198, 56, 223, 90, 134, 158, 129, 182, 250, 93, 54, 149, 213, 174, 65, 242, 45, 81, 207, 157, 180, 234, 130, 83, 206, 16, 73, 171, 158, 201, 192, 120, 24, 53, 223, 106, 168, 7, 194, 148, 218, 118, 88, 18, 94, 171, 136, 200, 171, 50, 73, 28, 227, 107, 227, 181, 99, 236, 7, 28, 210, 248, 127, 197, 174, 76, 40, 193, 14, 94, 115, 10, 144, 153, 131, 217, 38, 57, 184, 148, 214, 58, 161, 41, 105, 252, 184, 39, 188, 106, 6, 158, 114, 87, 135, 151, 228, 244, 133, 185, 101, 135, 168, 78, 231, 206, 156, 51, 128, 165, 179, 54, 19, 83, 194, 140, 47, 187, 96, 243, 78, 29, 244, 181, 236, 33, 122, 36, 174, 99, 84, 56, 28, 216, 54, 74, 132, 96, 152, 120, 159, 129, 126, 128, 150, 13, 227, 142, 136, 202, 235, 66, 45, 113, 68, 214, 72, 116, 70, 90, 233, 67, 58, 230, 68, 169, 239, 156, 5, 40, 119, 199, 220, 209, 82, 68, 190, 236, 159, 27, 174, 49, 186, 114, 115, 44, 75, 64, 148, 249, 114, 151, 174, 247, 205, 165, 202, 122, 238, 172, 223, 213, 241, 157, 93, 93, 53, 71, 166, 42, 60, 208, 120, 91, 197, 99, 224, 246, 108, 142, 29, 95, 6, 114, 17, 13, 130, 26, 14, 123, 217, 164, 240, 172, 3, 54, 255, 246, 38, 167, 146, 183, 177, 201, 137, 7, 188, 7, 189, 27, 142, 251, 196, 113, 97, 60, 250, 193, 171, 47, 223, 134, 54, 205, 222, 173, 192, 23, 157, 159, 70, 225, 37, 60, 152, 39, 87, 63, 151, 93, 230, 12, 134, 54, 125, 44, 13, 140, 43, 238, 112, 148, 205, 251, 165, 135, 213, 198, 148, 210, 71, 201, 84, 133, 71, 208, 197, 109, 195, 1, 92, 190, 70, 62, 52, 20, 179, 252, 222, 19, 63, 60, 65, 131, 250, 146, 60, 11, 124, 141, 88, 236, 125, 254, 86, 147, 109, 35, 26, 39, 117, 60, 125, 96, 8, 111, 161, 145, 54, 44, 117, 233, 227, 18, 189, 118, 191, 209, 79, 25, 216, 241, 193, 157, 71, 3, 138, 105, 2, 44, 231, 198, 194, 52, 154, 17, 130, 233, 232, 78, 70, 152, 215, 179, 164, 145, 213, 239, 17, 153, 151, 239, 65, 78, 40, 74, 166, 219, 120, 151, 178, 165, 107, 27, 143, 127, 111, 79, 20, 238, 100, 250, 124, 229, 217, 47, 78, 212, 158, 45, 209, 79, 230, 21, 169, 151, 254, 164, 254, 241, 126, 247, 218, 58, 223, 181, 144, 129, 43, 86, 46, 48, 92, 61, 126, 156, 229, 18, 59, 161, 116, 89, 30, 254, 134, 4, 59, 140, 14, 190, 242, 88, 46, 11, 107, 193, 10, 10, 13, 198, 214, 12, 43, 52, 114, 43, 221, 40, 249, 184, 215, 249, 214, 148, 71, 39, 238, 49, 155, 105, 46, 204, 128, 54, 143, 19, 101, 174, 98, 93, 171, 91, 28, 112, 222, 88, 241, 143, 221, 249, 205, 165, 49, 50, 243, 107, 30, 44, 143, 151, 36, 255, 21, 179, 92, 97, 164, 7, 99, 180, 177, 111, 166, 56, 89, 211, 135, 132, 126, 65, 167, 238, 144, 173, 168, 165, 202, 64, 49, 169, 85, 200, 252, 234, 220, 97, 13, 103, 125, 110, 186, 144, 104, 32, 120, 169, 222, 240, 40, 155, 187, 49, 255, 187, 12, 104, 133, 145, 154, 119, 208, 180, 200, 67, 44, 97, 227, 152, 198, 174, 188, 243, 79, 252, 231, 146, 56, 220, 10, 11, 102, 76, 35, 203, 151, 9, 206, 162, 222, 123, 161, 179, 219, 138, 223, 7, 174, 254, 7, 186, 191, 167, 136, 184, 124, 27, 159, 190, 179, 229, 83, 54, 188, 75, 142, 89, 238, 248, 107, 136, 26, 13, 9, 220, 221, 19, 37, 80, 234, 1, 110, 69, 112, 201, 221, 117, 78, 242, 66, 8, 191, 239, 22, 37, 244, 159, 236, 14, 253, 226, 40, 155, 27, 116, 174, 64, 100, 133, 24, 211, 48, 192, 175, 198, 69, 139, 113, 240, 227, 7, 240, 15, 121, 198, 214, 77, 252, 126, 28, 166, 234, 121, 0, 204, 127, 43, 73, 7, 67, 132, 169, 51, 101, 47, 188, 95, 26, 172, 150, 142, 194, 204, 20, 208, 158, 138, 167, 115, 118, 246, 23, 238, 170, 190, 101, 161, 69, 104, 178, 238, 15, 70, 47, 204, 163, 250, 147, 93, 77, 204, 24, 133, 221, 67, 131, 12, 186, 14, 93, 127, 202, 201, 93, 236, 164, 210, 26, 238, 179, 134, 40, 82, 62, 133, 84, 203, 60, 39, 200, 237, 56, 139, 119, 188, 74, 21, 106, 18, 191, 76, 165, 9, 14, 211, 3, 15, 75, 86, 34, 76, 151, 85, 174, 184, 21, 131, 79, 42, 119, 236, 195, 162, 154, 168, 191, 65, 165, 72, 206, 51, 42, 77, 33, 233, 180, 193, 200, 111, 48, 179, 252, 131, 199, 156, 79, 65, 4, 244, 24, 23, 87, 56, 198, 86, 182, 191, 211, 62, 232, 247, 152, 112, 49, 1, 115, 34, 213, 27, 88, 34, 15, 175, 71, 237, 59, 217, 92, 202, 249, 43, 80, 98, 193, 85, 4, 201, 240, 234, 57, 58, 129, 119, 129, 115, 19, 191, 122, 130, 175, 55, 3, 129, 45, 152, 107, 33, 38, 19, 170, 14, 4, 240, 75, 146, 182, 46, 103, 112, 36, 4, 53, 211, 140, 221, 209, 109, 82, 130, 222, 132, 36, 72, 78, 113, 187, 125, 2, 66, 32, 109, 131, 197, 176, 11, 212, 188, 124, 213, 35, 30, 65, 247, 120, 65, 121, 51, 108, 39, 147, 129, 205, 105, 253, 116, 35, 225, 216, 61, 103, 232, 220, 51, 9, 98, 151, 220, 77, 99, 62, 84, 220, 105, 85, 122, 187, 130, 134, 69, 112, 107, 153, 53, 216, 232, 66, 201, 173, 36, 134, 134, 96, 218, 188, 91, 187, 23, 21, 91, 53, 82, 32, 46, 177, 29, 211, 104, 67, 130, 67, 182, 172, 213, 41, 212, 199, 102, 2, 226, 169, 65, 22, 103, 154, 160, 46, 146, 52, 172, 48, 46, 94, 15, 144, 146, 177, 165, 193, 15, 169, 82, 182, 218, 241, 45, 163, 243, 197, 110, 231, 40, 101, 204, 96, 205, 140, 145, 245, 125, 84, 234, 134, 9, 210, 32, 97, 241, 199, 229, 70, 2, 26, 80, 167, 194, 193, 179, 155, 33, 53, 234, 22, 235, 184, 216, 182, 233, 86, 248, 81, 68, 177, 146, 150, 239, 217, 114, 96, 108, 192, 226, 65, 66, 234, 252, 91, 29, 203, 235, 16, 68, 89, 139, 47, 219, 215, 40, 129, 125, 76, 204, 94, 52, 122, 72, 148, 191, 150, 33, 245, 150, 210, 112, 174, 23, 126, 94, 26, 163, 76, 40, 149, 244, 63, 13, 157, 253, 77, 233, 81, 5, 47, 188, 35, 0, 10, 70, 180, 29, 82, 3, 205, 250, 214, 49, 227, 120, 72, 254, 237, 54, 173, 98, 75, 36, 92, 0, 250, 201, 53, 75, 96, 210, 79, 97, 119, 44, 200, 106, 45, 234, 222, 162, 188, 33, 128, 76, 48, 160, 44, 200, 102, 72, 170, 209, 156, 49, 218, 72, 243, 234, 107, 143, 177, 126, 130, 248, 35, 4, 91, 214, 237, 62, 82, 203, 165, 20, 204, 168, 245, 64, 140, 151, 95, 194, 184, 116, 85, 203, 214, 217, 213, 236, 142, 113, 114, 125, 76, 78, 184, 229, 223, 87, 175, 82, 2, 52, 167, 192, 78, 194, 207, 161, 251, 191, 131, 71, 155, 176, 29, 26, 157, 235, 242, 50, 126, 85, 146, 3, 120, 92, 12, 187, 92, 182, 35, 224, 156, 143, 170, 76, 46, 210, 148, 69, 230, 147, 164, 165, 202, 52, 40, 48, 112, 110, 230, 167, 101, 65, 83, 74, 37, 167, 117, 10, 189, 67, 179, 248, 49, 1, 46, 8, 85, 162, 89, 155, 111, 184, 10, 24, 179, 158, 194, 9, 115, 143, 42, 220, 111, 85, 36, 201, 97, 102, 223, 108, 69, 34, 207, 229, 79, 253, 55, 113, 175, 48, 69, 208, 58, 247, 121, 68, 249, 130, 76, 58, 23, 226, 118, 167, 244, 87, 44, 0, 119, 112, 252, 10, 213, 92, 162, 82, 101, 94, 77, 198, 78, 45, 165, 46, 58, 104, 223, 231, 69, 36, 85, 232, 187, 9, 255, 224, 44, 239, 167, 123, 103, 22, 55, 96, 53, 14, 217, 189, 59, 247, 216, 170, 2, 117, 115, 15, 49, 226, 168, 163, 193, 133, 179, 209, 26, 189, 21, 101, 115, 47, 138, 176, 75, 51, 115, 140, 66, 233, 68, 37, 156, 219, 53, 127, 242, 196, 144, 33, 44, 250, 245, 189, 249, 72, 211, 191, 209, 155, 86, 98, 151, 78, 6, 214, 252, 63, 42, 95, 3, 193, 17, 251, 70, 65, 193, 130, 228, 49, 211, 138, 57, 73, 89, 75, 145, 178, 244, 86, 100, 112, 118, 178, 4, 229, 237, 4, 222, 147, 86, 170, 125, 245, 236, 123, 153, 56, 65, 24, 41, 101, 103, 112, 83, 61, 84, 233, 80, 249, 125, 244, 32, 93, 128, 45, 38, 73, 86, 148, 132, 179, 33, 109, 152, 103, 107, 229, 195, 44, 43, 81, 88, 28, 19, 125, 202, 91, 41, 11, 177, 42, 123, 31, 133, 246, 119, 216, 34, 111, 199, 69, 170, 56, 152, 9, 115, 227, 236, 133, 223, 243, 218, 71, 182, 17, 175, 42, 84, 196, 201, 223, 187, 43, 5, 17, 46, 42, 131, 51, 167, 95, 123, 132, 29, 209, 92, 23, 61, 24, 127, 233, 244, 2, 253, 237, 124, 72, 73, 249, 155, 158, 12, 209, 180, 152, 77, 4, 168, 237, 246, 50, 171, 28, 180, 5, 40, 185, 204, 52, 247, 163, 116, 114, 167, 98, 81, 183, 70, 169, 126, 37, 47, 34, 204, 1, 9, 207, 48, 29, 67, 136, 2, 5, 230, 220, 131, 233, 133, 76, 35, 203, 128, 51, 205, 32, 70, 82, 96, 151, 98, 198, 8, 5, 162, 56, 68, 73, 241, 230, 99, 41, 165, 193, 110, 85, 234, 163, 25, 209, 247, 116, 218, 232, 210, 110, 12, 114, 252, 125, 220, 20, 25, 226, 196, 230, 4, 216, 163, 251, 77, 41, 122, 242, 154, 86, 77, 129, 66, 90, 96, 134, 126, 34, 185, 7, 149, 4, 210, 60, 229, 98, 18, 115, 219, 170, 26, 42, 255, 222, 232, 254, 172, 99, 210, 119, 218, 208, 118, 32, 49, 8, 133, 59, 91, 126, 35, 33, 253, 53, 58, 125, 83, 216, 68, 92, 165, 78, 80, 58, 129, 131, 194, 185, 149, 67, 154, 17, 63, 43, 115, 47, 80, 49, 21, 238, 56, 19, 168, 84, 88, 29, 249, 148, 177, 87, 147, 30, 45, 107, 56, 20, 58, 84, 191, 31, 246, 63, 59, 135, 113, 164, 157, 84, 246, 0, 111, 38, 72, 4, 16, 24, 200, 56, 37, 152, 43, 117, 239, 33, 246, 172, 98, 93, 20, 112, 226, 8, 245, 115, 6, 216, 17, 195, 76, 4, 37, 151, 131, 248, 148, 34, 251, 88, 88, 208, 224, 38, 205, 233, 139, 36, 6, 253, 80, 58, 114, 144, 126, 49, 101, 109, 39, 232, 59, 170, 62, 136, 123, 203, 57, 48, 100, 219, 126, 136, 238, 99, 36, 164, 162, 96, 73, 179, 155, 245, 12, 175, 17, 168, 110, 123, 207, 50, 186, 42, 124, 226, 214, 145, 253, 113, 98, 122, 87, 232, 112, 130, 138, 171, 151, 194, 58, 180, 7, 91, 61, 62, 25, 190, 91, 217, 149, 64, 42, 84, 103, 1, 80, 243, 70, 145, 99, 146, 141, 142, 188, 23, 126, 240, 229, 104, 157, 248, 11, 62, 197, 78, 104, 217, 206, 88, 78, 5, 32, 40, 99, 203, 232, 227, 233, 125, 112, 195, 46, 22, 30, 163, 150, 183, 195, 12, 149, 0, 176, 187, 63, 108, 95, 128, 42, 126, 29, 235, 49, 122, 40, 106, 50, 222, 145, 250, 19, 0, 17, 203, 227, 179, 124, 208, 10, 211, 74, 154, 231, 193, 158, 91, 224, 83, 241, 185, 106, 158, 19, 83, 6, 250, 252, 57, 0, 139, 105, 175, 3, 25, 176, 198, 188, 151, 160, 147, 237, 232, 150, 92, 202, 182, 96, 207, 143, 143, 230, 141, 165, 67, 114, 13, 251, 226, 230, 202, 73, 207, 32, 114, 76, 148, 199, 188, 78, 173, 248, 70, 217, 157, 134, 160, 127, 255, 21, 9, 178, 147, 95, 12, 197, 148, 143, 192, 237, 19, 8, 142, 98, 123, 254, 14, 52, 186, 240, 183, 244, 64, 51, 24, 96, 202, 150, 1, 67, 4, 5, 24, 112, 98, 198, 153, 245, 148, 189, 124, 206, 73, 203, 34, 113, 117, 238, 226, 129, 11, 229, 17, 51, 123, 144, 19, 221, 35, 22, 68, 152, 28, 148, 230, 223, 202, 80, 112, 91, 164, 160, 132, 200, 84, 99, 208, 39, 225, 186, 177, 23, 195, 215, 32, 221, 89, 23, 156, 222, 6, 233, 206, 186, 216, 193, 75, 84, 67, 144, 83, 69, 99, 74, 33, 216, 49, 2, 201, 239, 19, 248, 255, 176, 192, 229, 238, 95, 147, 128, 29, 64, 11, 31, 69, 92, 187, 251, 18, 61, 246, 107, 32, 122, 139, 29, 132, 6, 255, 159, 177, 85, 0, 52, 118, 175, 158, 97, 126, 115, 123, 113, 186, 213, 121, 254, 222, 12, 240, 16, 136, 159, 178, 114, 86, 95, 236, 79, 207, 113, 97, 132, 189, 173, 164, 176, 117, 20, 118, 35, 1, 97, 229, 133, 98, 213, 34, 12, 9, 96, 113, 127, 114, 1, 82, 242], segment_lens = [1204, 223, 387, 1636, 1988, 846, 828, 277, 812, 1172, 1752, 1760, 1157, 1918, 357, 664, 170, 1211], resent_lens = [256, 881, 281, 430, 607, 491, 813, 303], directions = [true, true, false, false, false, true, true, true, false, true, false, true, false, false, true, true, true, false, true, true, false, true, true, false, false, false, true, true, false, false], fins = [true, true], pickup = Index(10566948533015258681), late = [(Index(5331645674906022062), 11), (Index(4137899285466225149), 1), (Index(2011447310184231613), 7), (Index(13863211380293786616), 13)], keep_alives = [], delays = [2, 3, 0, 2, 1, 1, 0, 3, 1, 2, 2, 2, 0, 3, 1, 2, 0, 2, 0, 1, 3, 1, 0, 1, 2], windows = [5019, 1964, 248, 7367], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: Some(3), fallback_window: 4194304, ack_reorder_tolerance: 14, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [true, false, false, true, false, true, false, false, true, true] +cc 921af938ed7fa147291089ee9d492b7b4f7054468b928578a39e78a1833caddc # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221, 215, 67, 40, 246, 100, 152, 216], segment_lens = [1, 1, 1], directions = [false], fins = [false, true], rst = Some((Initiator, Index(0), false)), injected = [], lost = [], one_direction = false, pickup = false, windows = [0], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 7510f340b799f68ad2dc3bf8dec25e3948dce91c15edda5fec02e1e9744f8189 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9, 75, 84, 247, 191, 90, 69, 194, 237, 154, 181, 152, 185, 39, 123, 60, 156, 83, 185, 192, 162, 27, 29, 220, 142, 30, 218, 133, 149, 225, 92, 4, 64, 135, 105, 87, 147, 130, 10, 135, 46, 191, 137, 196, 195, 166, 126, 157, 236, 153, 93, 65, 118, 205, 235, 90, 71, 122, 62, 71, 109, 214, 120, 81, 182, 226, 39, 156, 98, 104, 57, 47, 38, 230, 102, 119, 241, 127, 27, 46, 189, 236, 38, 124, 200, 56, 161, 139, 7, 49, 112, 44, 245, 13, 54, 140, 61, 77, 228, 150, 238, 105, 24, 0, 42, 148, 111, 135, 104, 15, 145, 252, 3, 115, 206, 94, 105, 208, 46, 7, 88, 118, 171, 42, 181, 210, 176, 149, 233, 17, 55, 172, 224, 199, 150, 119, 97, 145, 197, 139, 122, 167, 246, 73, 191, 236, 50, 76, 255, 122, 120, 205, 95, 1, 167, 48, 143, 64, 112, 190, 0, 174, 189, 119, 113, 176, 210, 118, 170, 198, 120, 234, 101, 160, 221], responder_data = [20, 26, 154, 102, 98, 143, 20, 91, 123, 114, 162, 93, 12, 24, 233, 50, 131, 249, 54, 105, 174, 191, 222, 48, 124, 116, 45, 111, 19, 154, 74, 13, 168, 45, 172, 186, 177, 139, 129, 32, 20, 11, 53, 32, 131, 57, 202, 127, 14, 90, 204, 253, 246, 247, 31, 202, 103, 41, 137, 117, 2, 210, 87, 147, 7, 53, 226, 109, 13, 143, 182, 49, 46, 95, 97, 19, 59, 129, 52, 81, 96, 197, 148, 111, 44, 88, 84, 230, 118, 232, 134, 32, 242, 50, 169, 248, 227, 36, 117, 243, 148, 234, 120, 39, 47, 243, 203, 31, 72, 50, 190, 27, 106, 138, 69, 113, 9, 12, 242, 156, 246, 109, 216, 106, 231, 109, 46, 95, 239, 183, 144, 69, 124, 36, 42, 245, 200, 106, 151, 70, 104, 32, 202, 69, 143, 56, 95, 76, 158, 70, 66, 242, 161, 53, 182, 234, 158, 255, 236, 11, 59, 137, 139, 231, 94, 221, 114, 185, 82, 153, 212, 215, 203, 89, 233, 239, 246, 247, 107, 86, 196, 15, 129, 37, 24, 98, 4, 115, 73, 115, 228, 223, 251, 249, 143, 168, 205, 114, 185, 177, 125, 131, 85, 89, 32, 184, 55, 44, 124, 105, 154, 1, 214, 229, 27, 195, 202, 213, 35, 109, 24, 155, 30, 212, 80, 154, 130, 234, 237, 124, 186, 124, 127, 198, 247, 154, 212, 197, 157, 94, 52, 253, 16, 101, 31, 9, 142, 125, 20, 66, 192, 125, 255, 59, 74, 65, 98, 172, 20, 38, 234, 194, 206, 154, 82, 246, 93, 85, 243, 116, 134, 28, 62, 74, 140, 93, 17, 239, 116, 221, 220, 159, 117, 116, 184, 179, 103, 193, 9, 169, 238, 219, 252, 178, 249, 156, 1, 157, 236, 142, 191, 21, 90, 239, 155, 92, 17, 53, 222, 85, 17, 198, 101, 160, 110, 126, 132, 165, 80, 1, 48, 41, 97, 82, 12, 100, 92, 156, 109, 210, 3, 27, 146, 38, 206, 46, 206, 224, 231, 100, 177, 100, 12, 35, 151, 180, 9, 30, 12, 223, 94, 164, 98, 9], segment_lens = [1, 73, 30], directions = [false, false, true, false, false, true, false, false, false, false, false, false, false, false, false], fins = [false, false], rst = None, injected = [(Responder, Index(1272189246462727698), true, 354, false)], lost = [Index(0)], one_direction = false, pickup = true, windows = [0], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] +cc 7066bccbbc207942b75df1123451fae613f7c8ce3173361ba699c3d0f6fabc66 # shrinks to initiator_isn = 0, responder_isn = 0, initiator_data = [], responder_data = [], segment_lens = [1], directions = [false], fins = [false, false], rst = Some((Responder, Index(0), false)), injected = [], lost = [], one_direction = false, pickup = false, windows = [0], fallback_window = 4194304, config = TcpReassemblyConfig { max_stream_buffer: 8388608, max_holes_per_stream: 256, hole_give_up_window_factor: None, fallback_window: 4194304, ack_reorder_tolerance: 0, resync_after_segments: None, max_connections: None, max_total_buffered: None, max_pooled_buffers: 64, max_pooled_buffer_capacity: 65536 }, consume_lens = [0], acked_reads = [false] diff --git a/etherparse/src/lib.rs b/etherparse/src/lib.rs index f71f7b53..742fee49 100644 --- a/etherparse/src/lib.rs +++ b/etherparse/src/lib.rs @@ -341,6 +341,11 @@ pub mod io; mod transport; pub use transport::*; +/// Module containing a pool to re-assemble the byte streams of TCP connections (contains allocations). +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] +pub mod tcp_reassembly; + /// Helpers for calculating checksums. pub mod checksum; diff --git a/etherparse/src/tcp_reassembly/connection_script.rs b/etherparse/src/tcp_reassembly/connection_script.rs new file mode 100644 index 00000000..086ae1d9 --- /dev/null +++ b/etherparse/src/tcp_reassembly/connection_script.rs @@ -0,0 +1,353 @@ +use crate::{tcp_reassembly::*, *}; +use arrayvec::ArrayVec; +use core::net::SocketAddr; +use std::vec::Vec; + +/// Segment written by a [`ConnectionScript`]. +#[derive(Clone, Debug)] +pub(crate) struct TestSegment { + /// Role of the endpoint sending the segment. + pub sender: TcpRole, + /// Stream offset of the first payload byte. + pub offset: u64, + /// Offset in the other stream up to which the segment ACKs (`None` + /// without the ACK flag). + pub ack: Option, + pub vlan_ids: ArrayVec, + pub source: SocketAddr, + pub destination: SocketAddr, + pub channel_id: CustomChannelId, + pub header: TcpHeader, + pub payload: Vec, +} + +impl TestSegment +where + CustomChannelId: core::hash::Hash + Eq + Clone, +{ + /// Serializes the segment and passes it to the pool. + pub fn feed<'p, Timestamp: Clone>( + &self, + pool: &'p mut TcpReassemblyPool, + timestamp: Timestamp, + ) -> TcpProcessed<'p, Timestamp, CustomChannelId> { + let mut bytes = Vec::with_capacity(self.header.header_len() + self.payload.len()); + bytes.extend_from_slice(&self.header.to_bytes()); + bytes.extend_from_slice(&self.payload); + pool.process_segment( + TcpSegment { + vlan_ids: self.vlan_ids.clone(), + source: self.source.ip(), + destination: self.destination.ip(), + channel_id: self.channel_id.clone(), + tcp: TcpSlice::from_slice(&bytes).unwrap(), + }, + timestamp, + ) + } +} + +impl ConnectionScript +where + CustomChannelId: core::hash::Hash + Eq + Clone, +{ + /// Feeds the segments in `range` to the pool with the default timestamp + /// and returns the result of the last one. + pub fn feed<'p, Timestamp: Clone + Default>( + &self, + pool: &'p mut TcpReassemblyPool, + range: impl core::slice::SliceIndex< + [TestSegment], + Output = [TestSegment], + >, + ) -> TcpProcessed<'p, Timestamp, CustomChannelId> { + let (last, rest) = self.segments[range].split_last().unwrap(); + for segment in rest { + segment.feed(pool, Timestamp::default()); + } + last.feed(pool, Timestamp::default()) + } + + /// Feeds all segments to the pool with the default timestamp and returns + /// the result of the last one. + pub fn feed_all<'p, Timestamp: Clone + Default>( + &self, + pool: &'p mut TcpReassemblyPool, + ) -> TcpProcessed<'p, Timestamp, CustomChannelId> { + self.feed(pool, ..) + } +} + +/// Writes a TCP connection as a script of segments for both directions. +/// +/// Every method appends segments to `segments`, sending the next bytes of +/// a stream and ACKing everything the other side sent so far (including +/// its SYN and FIN). +#[derive(Clone, Debug)] +pub(crate) struct ConnectionScript { + pub vlan_ids: ArrayVec, + pub channel_id: CustomChannelId, + /// Endpoints indexed by role. + endpoints: [SocketAddr; 2], + /// Initial sequence numbers indexed by role. + isns: [u32; 2], + /// Stream offset of the next byte to send (after a FIN, the offset after + /// the FIN), indexed by role. + next_offsets: [u64; 2], + /// Whether each role sent its SYN. + syns_sent: [bool; 2], + /// Window scale option put into the SYN of each role. + pub window_scales: [Option; 2], + /// "window" field of the next segments. + pub window_size: u16, + pub segments: Vec>, +} + +/// Index of a role in arrays indexed by role. +pub(crate) fn role_index(role: TcpRole) -> usize { + match role { + TcpRole::Initiator => 0, + TcpRole::Responder => 1, + } +} + +/// Parses a socket address for tests. +pub(crate) fn addr(s: &str) -> SocketAddr { + s.parse().unwrap() +} + +impl ConnectionScript<()> { + /// Connection from 10.0.0.1:50000 to 10.0.0.2:80 with the given ISNs. + pub fn with_isns(initiator_isn: u32, responder_isn: u32) -> ConnectionScript<()> { + ConnectionScript::new( + addr("10.0.0.1:50000"), + addr("10.0.0.2:80"), + initiator_isn, + responder_isn, + ) + } + + pub fn new( + initiator: SocketAddr, + responder: SocketAddr, + initiator_isn: u32, + responder_isn: u32, + ) -> ConnectionScript<()> { + ConnectionScript { + vlan_ids: ArrayVec::new(), + channel_id: (), + endpoints: [initiator, responder], + isns: [initiator_isn, responder_isn], + next_offsets: [0, 0], + syns_sent: [false, false], + window_scales: [None, None], + window_size: 0xffff, + segments: Vec::new(), + } + } +} + +impl ConnectionScript { + /// Replaces the channel id (call it before adding segments). + pub fn with_channel_id(self, channel_id: C) -> ConnectionScript { + assert!(self.segments.is_empty()); + ConnectionScript { + vlan_ids: self.vlan_ids, + channel_id, + endpoints: self.endpoints, + isns: self.isns, + next_offsets: self.next_offsets, + syns_sent: self.syns_sent, + window_scales: self.window_scales, + window_size: self.window_size, + segments: Vec::new(), + } + } + + /// Endpoint of a role. + pub fn endpoint(&self, role: TcpRole) -> SocketAddr { + self.endpoints[role_index(role)] + } + + /// Stream offset of the next byte the endpoint with the role sends. + pub fn next_offset(&self, role: TcpRole) -> u64 { + self.next_offsets[role_index(role)] + } + + /// Sequence number of the byte at `offset` in the stream of `role`. + pub fn seq(&self, role: TcpRole, offset: u64) -> u32 { + self.isns[role_index(role)] + .wrapping_add(1) + .wrapping_add(offset as u32) + } + + /// Segment sent by `sender` with `payload` starting at `offset`, ACKing + /// everything the other side sent so far (once its SYN was sent). + fn segment( + &self, + sender: TcpRole, + offset: u64, + payload: &[u8], + ) -> TestSegment { + let mut header = TcpHeader::new( + self.endpoint(sender).port(), + self.endpoint(sender.other()).port(), + self.seq(sender, offset), + self.window_size, + ); + let other = role_index(sender.other()); + let ack = self.syns_sent[other].then_some(self.next_offsets[other]); + if let Some(ack) = ack { + header.ack = true; + header.acknowledgment_number = self.seq(sender.other(), ack); + } + TestSegment { + sender, + offset, + ack, + vlan_ids: self.vlan_ids.clone(), + source: self.endpoint(sender), + destination: self.endpoint(sender.other()), + channel_id: self.channel_id.clone(), + header, + payload: payload.to_vec(), + } + } + + /// FIN segment of `sender` after the bytes `data` starting at `offset`. + fn fin_segment( + &self, + sender: TcpRole, + offset: u64, + data: &[u8], + ) -> TestSegment { + let mut segment = self.segment(sender, offset, data); + segment.header.fin = true; + segment + } + + fn push(&mut self, segment: TestSegment) -> &mut Self { + // a FIN occupies the sequence number after the last byte + let next_offset = &mut self.next_offsets[role_index(segment.sender)]; + *next_offset = (*next_offset) + .max(segment.offset + segment.payload.len() as u64 + u64::from(segment.header.fin)); + self.segments.push(segment); + self + } + + /// Segment that `step` appends to a copy of the script, e.g. to inject a + /// segment that changes neither what the endpoints send nor what they + /// ACK. + pub fn injected(&self, step: impl FnOnce(&mut Self)) -> TestSegment { + let mut copy = self.clone(); + step(&mut copy); + copy.segments.pop().unwrap() + } + + /// SYN of `sender` carrying `data` (TCP Fast Open if not empty). + fn syn_of(&mut self, sender: TcpRole, data: &[u8]) -> &mut Self { + let mut segment = self.segment(sender, 0, data); + segment.header.syn = true; + segment.header.sequence_number = self.isns[role_index(sender)]; + self.syns_sent[role_index(sender)] = true; + if let Some(scale) = self.window_scales[role_index(sender)] { + segment + .header + .set_options(&[TcpOptionElement::WindowScale(scale), TcpOptionElement::Noop]) + .unwrap(); + } + self.push(segment) + } + + /// SYN of the initiator. + pub fn syn(&mut self) -> &mut Self { + self.syn_with_data(&[]) + } + + /// SYN of the initiator carrying data (TCP Fast Open). + pub fn syn_with_data(&mut self, data: &[u8]) -> &mut Self { + self.syn_of(TcpRole::Initiator, data) + } + + /// SYN-ACK of the responder. + pub fn syn_ack(&mut self) -> &mut Self { + self.syn_of(TcpRole::Responder, &[]) + } + + /// ACK of `sender` without data. + pub fn ack(&mut self, sender: TcpRole) -> &mut Self { + self.send(sender, &[]) + } + + /// ACK of `sender` without data, ACKing the other stream up to `offset` + /// instead of everything the other side sent so far. + pub fn ack_to(&mut self, sender: TcpRole, offset: u64) -> &mut Self { + let mut segment = self.segment(sender, self.next_offsets[role_index(sender)], &[]); + segment.ack = Some(offset); + segment.header.ack = true; + segment.header.acknowledgment_number = self.seq(sender.other(), offset); + self.push(segment) + } + + /// SYN, SYN-ACK and the initiator's ACK. + pub fn handshake(&mut self) -> &mut Self { + self.syn().syn_ack().ack(TcpRole::Initiator) + } + + /// FIN of `sender`. + pub fn fin(&mut self, sender: TcpRole) -> &mut Self { + self.fin_with_data(sender, &[]) + } + + /// FIN of `sender` after its next bytes `data`. + pub fn fin_with_data(&mut self, sender: TcpRole, data: &[u8]) -> &mut Self { + self.fin_at(sender, self.next_offsets[role_index(sender)], data) + } + + /// FIN of `sender` after the bytes `data` starting at `offset`, e.g. to + /// retransmit a FIN or to send one at another offset. + pub fn fin_at(&mut self, sender: TcpRole, offset: u64, data: &[u8]) -> &mut Self { + let segment = self.fin_segment(sender, offset, data); + self.push(segment) + } + + /// FINs of both endpoints, each sent before the other one's FIN arrived. + pub fn simultaneous_fins(&mut self) -> &mut Self { + let responder = TcpRole::Responder; + let responder_fin = + self.fin_segment(responder, self.next_offsets[role_index(responder)], &[]); + self.fin(TcpRole::Initiator).push(responder_fin) + } + + /// RST of `sender` at its next byte. + pub fn rst(&mut self, sender: TcpRole) -> &mut Self { + self.rst_at(sender, self.next_offsets[role_index(sender)]) + } + + /// RST of `sender` with the sequence number of the byte at `offset` in + /// its stream. + pub fn rst_at(&mut self, sender: TcpRole, offset: u64) -> &mut Self { + let mut segment = self.segment(sender, offset, &[]); + segment.header.rst = true; + self.push(segment) + } + + /// Next bytes of the stream of `sender`. + pub fn send(&mut self, sender: TcpRole, data: &[u8]) -> &mut Self { + self.send_at(sender, self.next_offsets[role_index(sender)], data) + } + + /// Sends the next `len` bytes of the stream of `sender` without them + /// being captured (the other side ACKs them). + pub fn send_uncaptured(&mut self, sender: TcpRole, len: u64) -> &mut Self { + self.next_offsets[role_index(sender)] += len; + self + } + + /// Bytes of the stream of `sender` starting at `offset`, e.g. to + /// retransmit bytes. + pub fn send_at(&mut self, sender: TcpRole, offset: u64, data: &[u8]) -> &mut Self { + let segment = self.segment(sender, offset, data); + self.push(segment) + } +} diff --git a/etherparse/src/tcp_reassembly/mod.rs b/etherparse/src/tcp_reassembly/mod.rs new file mode 100644 index 00000000..cf3b61f7 --- /dev/null +++ b/etherparse/src/tcp_reassembly/mod.rs @@ -0,0 +1,52 @@ +mod tcp_connection; +pub use tcp_connection::*; + +mod tcp_connection_end; +pub use tcp_connection_end::*; + +mod tcp_connection_id; +pub use tcp_connection_id::*; + +mod tcp_connection_key; +pub use tcp_connection_key::*; + +mod tcp_ignore_reason; +pub use tcp_ignore_reason::*; + +mod tcp_processed; +pub use tcp_processed::*; + +mod tcp_read; +pub use tcp_read::*; + +mod tcp_reassembly_config; +pub use tcp_reassembly_config::*; + +mod tcp_reassembly_pool; +pub use tcp_reassembly_pool::*; + +mod tcp_role; +pub use tcp_role::*; + +mod tcp_segment; +pub use tcp_segment::*; + +mod tcp_stream; +pub use tcp_stream::*; + +mod tcp_stream_end; +pub use tcp_stream_end::*; + +mod tcp_stream_start; +pub use tcp_stream_start::*; + +mod tcp_stream_status; +pub use tcp_stream_status::*; + +#[cfg(test)] +mod connection_script; +#[cfg(test)] +pub(crate) use connection_script::*; + +#[cfg(test)] +mod reference_model; diff --git a/etherparse/src/tcp_reassembly/reference_model.rs b/etherparse/src/tcp_reassembly/reference_model.rs new file mode 100644 index 00000000..5920da07 --- /dev/null +++ b/etherparse/src/tcp_reassembly/reference_model.rs @@ -0,0 +1,2219 @@ +use crate::tcp_reassembly::*; +use core::ops::Range; +use std::vec::Vec; + +/// Simple model of the bytes a [`TcpReassemblyPool`] delivers. +/// +/// It works on the true stream offsets that a [`ConnectionScript`] records +/// in its segments, so it is independent of the sequence number handling +/// it checks. After a resync, the offsets of a stream leave out the jump +/// (they are the true offsets minus a shift). Offsets of the pool are +/// relative to the first byte the pool knows of a stream (its base). It +/// expects segments without window scale options, and endpoints whose ports +/// make guessed roles right. +#[derive(Clone, Debug, Default)] +pub(crate) struct ReferenceModel { + /// Configuration of the pool the model is compared with. + config: TcpReassemblyConfig, + /// Whether a segment started the connection. + created: bool, + /// Whether the roles are guessed, as a segment without a SYN started + /// the connection and no late SYN confirmed them. + roles_guessed: bool, + /// Streams indexed by role. + streams: [ModelStream; 2], + /// "window" field of the last segment of each role. + windows: [Option; 2], + /// Whether the stream of each role took its SYN (the one before its + /// first byte, which a resync can move). + syns: [bool; 2], + /// End of the connection. + end: Option, + /// Number of packets applied so far. + packets: u64, +} + +/// What a reader does to a stream besides reading and consuming bytes (see +/// [`ReferenceModel::apply_action`]). +#[derive(Copy, Clone, Debug)] +pub(crate) enum ReaderAction { + /// [`TcpStream::give_up_hole`] + GiveUpHole, + /// [`TcpStream::consume_gap`] + ConsumeGap, + /// [`TcpStream::discard_until`] with an offset this far after the read + /// offset + DiscardAhead(u64), + /// [`TcpStream::discard_all`] + DiscardAll, + /// [`TcpStream::force_resync`] + ForceResync, +} + +/// Model of one stream. +#[derive(Clone, Debug, Default)] +struct ModelStream { + /// Offset of the pool's offset 0 (`None` while the stream has no + /// start). + base: Option, + /// Whether the start is known from the stream's SYN or the ACK of the + /// SYN-ACK. + observed: bool, + /// Whether the stream was picked up at a FIN without bytes. + started_at_fin: bool, + /// Whether the read offset moved forward. + read_moved: bool, + /// Last ACK of the other side that couldn't be applied yet: before the + /// stream had a start, or at or before its first byte while bytes can + /// be prepended. + pending_ack: Option, + /// Received bytes by offset, up to the furthest received byte (bytes + /// that arrive after they were consumed or given up are ignored). + bytes: Vec>, + /// Bytes from offset 0 on up to the first missing byte that can still + /// arrive: received bytes, and placeholders for bytes that were given + /// up (in gaps) or discarded (before the read offset). + received: Vec, + /// Holes that were given up and not stepped over yet, in order (they + /// lie in `received`). + gaps: Vec>, + /// Every hole that was given up, in the order they were given up. + given_up: Vec>, + /// Number of gaps (holes that were given up). + gap_count: u64, + /// Number of bytes in the holes that were given up. + gap_bytes: u64, + /// Offset after the furthest byte known to be sent (received, ACKed or + /// before the FIN). + highest: u64, + /// Offset of the FIN. + fin_offset: Option, + /// Number of segments with bytes that differ from the bytes received + /// first (from the read and ACKed offsets on). + conflicting_retransmissions: u64, + /// Number of segments with bytes or a FIN after the window, or with + /// bytes after the FIN. + out_of_window_segments: u64, + /// Highest ACK of the other side that was not ignored. + ack: u64, + /// Number of each packet that moved `ack` forward, and `ack` after it. + ack_history: Vec<(u64, u64)>, + /// `ack` as it was `ack_reorder_tolerance` packets ago. + settled_ack: u64, + /// Highest offset minus k times the largest window of the receiver, + /// after any packet of the connection so far (0 without a hole give up + /// window factor k). + implied_ack: u64, + /// Largest window the receiver advertised while its window was known. + largest_window: Option, + /// Offset of the next byte to read. + read_offset: u64, + /// True offset minus offset of the bytes after the last resync (0 + /// without one). + shift: i64, + /// Offset of each resync and the shift of the bytes from there on. + resyncs: Vec<(u64, i64)>, + /// Offsets of the gaps of unknown length that resyncs left, which the + /// reader didn't step over yet. + resync_gaps: Vec, + /// Data segments after the window since the stream moved forward or + /// received other bytes. The last one is the candidate of a resync. + candidates: Vec, + /// True offset of the latest ACK more than one window after the bytes + /// known to be sent, while the stream didn't move forward. + resync_ack: Option, + /// Whether the next data segment is the stream's new start. + forced: bool, + /// What reading returns away from the FIN once nothing more is + /// readable, as the connection ended. + end: Option, +} + +/// Data segment after the window that a stream may have jumped to. +#[derive(Clone, Debug)] +struct ModelCandidate { + /// True offsets of the bytes. + bytes: Range, + /// Whether a FIN follows the bytes. + fin: bool, + /// Whether the bytes lie within one window of the candidate before. + agrees: bool, +} + +impl ModelStream { + /// Applies a segment of the stream's sender in the packet with the + /// number `packet`, whose receiver has the receive window `window`: + /// - a SYN gives the stream an observed start at it (see + /// [`ModelStream::observe_start`]), a SYN that a mid-stream pickup + /// can't take counts as out-of-window and is ignored; + /// - without a start, the first bytes or a FIN without bytes start a + /// mid-stream pickup, but a byte ending at the last ACK of the other + /// side (a keep-alive) doesn't; + /// - bytes up to k windows before the first byte of a mid-stream pickup + /// are put in front (see [`ModelStream::can_prepend`]), other bytes + /// before it count as out-of-window (once per segment); + /// - a segment with bytes or a FIN starting more than k windows after + /// the highest or the ACKed offset is counted and not stored (k is the + /// hole give up window factor, 2 without one). If its bytes lie within + /// one window of the last ACK more than one window after the bytes + /// sent, or if it is the n-th consecutive such segment that lies within + /// one window of the one before (with `resync_after_segments = n`), + /// the stream resyncs at them, and that ACK counts after them (and + /// ACKs the bytes before them). Otherwise they are the candidate of a + /// resync (unless the FIN is known or it is a SYN), and a FIN without + /// bytes right after them is the candidate's FIN; + /// - other bytes show that the stream didn't jump, so there is no + /// candidate anymore, and after `force_resync` the next bytes are the + /// stream's new start wherever they lie; + /// - a keep-alive (one byte ending at the ACK, without SYN or FIN) + /// inside an overdue hole is ignored; + /// - bytes received for the first time are stored, bytes received before + /// keep their first content, and the segment counts as a conflicting + /// retransmission if ones that are neither read, ACKed, in a gap nor + /// before a resync differ; + /// - the first FIN that doesn't lie before received bytes or a resync + /// ends the stream (cutting the gaps and moving the read offset back + /// to it), and bytes after it are counted and not stored; + /// - bytes before the highest offset that were not received are holes. + fn add_segment( + &mut self, + segment: &TestSegment, + window: u64, + packet: u64, + config: &TcpReassemblyConfig, + ) { + let payload = &segment.payload[..]; + let header = &segment.header; + // the receiver accepts k windows before and after the stream's bytes + let factor = config.hole_give_up_window_factor.unwrap_or(2); + let range = u64::from(factor) * window; + if header.syn { + if false == self.observe_start(segment.offset, range) { + self.out_of_window_segments += 1; + return; + } + } else if self.base.is_none() { + let keep_alive = 1 == payload.len() + && false == header.fin + && Some(segment.offset + 1) == self.pending_ack; + if (payload.is_empty() && false == header.fin) || keep_alive { + return; + } + self.start_at(segment.offset); + self.started_at_fin = payload.is_empty(); + } + // offsets leave out the jumps of the resyncs so far + let mut start = segment.offset as i64 - self.shift; + + let window_end = (self.ack.max(self.highest) + range) as i64; + let mut after_window = start > window_end; + let mut jump_ack = None; + if false == payload.is_empty() && false == header.syn && self.fin_offset.is_none() { + let bytes = segment.offset..segment.offset + payload.len() as u64; + let confirming_ack = self + .resync_ack + .filter(|ack| within_window(&bytes, *ack, window)); + let confirmed = if after_window { + let agrees = self + .candidates + .last() + .is_some_and(|previous| within_window(&previous.bytes, bytes.start, window)); + self.candidates.push(ModelCandidate { + bytes, + fin: header.fin, + agrees, + }); + let consecutive = 1 + self + .candidates + .iter() + .rev() + .take_while(|candidate| candidate.agrees) + .count(); + confirming_ack.is_some() + || config + .resync_after_segments + .is_some_and(|after| consecutive >= after as usize) + } else { + self.candidates.clear(); + false + }; + if self.forced || confirmed { + jump_ack = confirming_ack; + self.resync(segment.offset); + start = segment.offset as i64 - self.shift; + after_window = false; + } + } + if (false == payload.is_empty() || header.fin) && after_window { + if let Some(candidate) = self.candidates.last_mut() { + if payload.is_empty() && segment.offset == candidate.bytes.end { + candidate.fin = true; + } + } + self.out_of_window_segments += 1; + return; + } + + let mut out_of_window = false; + if let Some(base) = self.base { + if start < base as i64 && false == payload.is_empty() && false == self.observed { + if self.can_prepend() && base as i64 - start <= range as i64 { + self.start_at(start as u64); + } else { + out_of_window = true; + } + } + } + let end = start + payload.len() as i64; + + if 1 == payload.len() + && false == (header.syn || header.fin) + && end == self.ack as i64 + && self + .holes() + .iter() + .any(|hole| hole.contains(&(start as u64)) && self.is_overdue(hole)) + { + return; + } + let received_end = (self.bytes.len() as u64).max(self.resync_offset()); + if segment.header.fin && self.fin_offset.is_none() && end >= received_end as i64 { + let end = end as u64; + self.fin_offset = Some(end); + // missing bytes after the FIN (from an ACK of it) don't exist, + // even if they were given up + self.set_highest(end); + self.read_offset = self.read_offset.min(end); + self.gaps.retain_mut(|gap| { + gap.end = gap.end.min(end); + gap.start < gap.end + }); + self.received.truncate(end as usize); + } + let payload = match self.fin_offset { + Some(fin) if end > fin as i64 && false == payload.is_empty() => { + out_of_window = true; + &payload[..(fin as i64 - start).max(0) as usize] + } + _ => payload, + }; + if out_of_window { + self.out_of_window_segments += 1; + } + + // bytes that were consumed, given up, or sent before a jump are + // ignored + let new: Vec<(u64, u8)> = (start..) + .zip(payload) + .filter_map(|(offset, byte)| { + u64::try_from(offset) + .ok() + .filter(|offset| false == self.ignores(*offset)) + .map(|offset| (offset, *byte)) + }) + .collect(); + let acked = self.acked_offset(); + let conflicting = new.iter().any(|(offset, byte)| { + *offset >= acked + && self + .bytes + .get(*offset as usize) + .is_some_and(|received| received.is_some_and(|b| b != *byte)) + }); + if conflicting { + self.conflicting_retransmissions += 1; + } + if let Some((last, _)) = new.last() { + if self.bytes.len() <= *last as usize { + self.bytes.resize(*last as usize + 1, None); + } + } + for (offset, byte) in new { + self.bytes[offset as usize].get_or_insert(byte); + } + if false == payload.is_empty() { + let end = start + payload.len() as i64; + self.set_highest(self.highest.max(end.max(0) as u64)); + } + self.extend_received(); + if let Some(ack) = jump_ack { + self.add_jump_ack(ack, window, packet); + } + } + + /// Gives the stream an observed start at the true offset `start`. A + /// mid-stream pickup takes it if it is at or before its first byte, at + /// most `range` bytes before it, and bytes can be prepended. Returns true + /// if the stream has an observed start afterwards. + fn observe_start(&mut self, start: u64, range: u64) -> bool { + // a stream that can prepend didn't resync, its offsets are the true + // ones + match self.base { + Some(_) if self.observed => return true, + Some(_) if false == self.can_prepend() => return false, + Some(base) if start > base || base - start > range => return false, + _ => {} + } + self.start_at(start); + self.observed = true; + true + } + + /// Returns true if the stream has an observed start at the byte with + /// the true offset `offset`. + fn starts_at(&self, offset: u64) -> bool { + self.observed && Some(offset as i64 - self.shift) == self.base.map(|base| base as i64) + } + + /// Returns true if bytes can be prepended to the stream: it is a + /// mid-stream pickup whose read offset never moved, that wasn't picked + /// up at a FIN, didn't resync and has no resync forced. + fn can_prepend(&self) -> bool { + false == self.observed + && false == self.read_moved + && false == self.started_at_fin + && self.resyncs.is_empty() + && false == self.forced + } + + /// Makes the next data segment the stream's new start, unless the stream + /// has no start yet or its FIN is known. + fn force_resync(&mut self) { + if self.base.is_some() && self.fin_offset.is_none() { + self.forced = true; + } + } + + /// Moves the first byte the pool knows to `start` (at or before the + /// previous one). + fn start_at(&mut self, start: u64) { + self.base = Some(start); + self.read_offset = start; + self.set_highest(self.highest.max(start)); + self.received.truncate(start as usize); + self.extend_received(); + } + + /// Appends the received bytes and the placeholders of given up bytes + /// after the end of `received`. + fn extend_received(&mut self) { + loop { + let offset = self.received.len() as u64; + let byte = match self.bytes.get(offset as usize) { + Some(Some(byte)) => *byte, + _ if offset < self.read_offset || self.in_gap(offset) => 0, + _ => break, + }; + self.received.push(byte); + } + } + + /// Returns true if the byte at `offset` lies in a gap. + fn in_gap(&self, offset: u64) -> bool { + self.gaps.iter().any(|gap| gap.contains(&offset)) + } + + /// Returns true if a byte arriving at `offset` is ignored, as it was + /// consumed or given up, or lies before a resync. + fn ignores(&self, offset: u64) -> bool { + offset < self.read_offset || self.in_gap(offset) || offset < self.resync_offset() + } + + /// Offset of the last resync (0 without one). + fn resync_offset(&self) -> u64 { + self.resyncs.last().map_or(0, |(offset, _)| *offset) + } + + /// Moves the highest offset to `offset`. If that moves the stream + /// forward, it didn't jump: there is no candidate or ACK of a jump + /// anymore. + fn set_highest(&mut self, offset: u64) { + if offset > self.highest { + self.candidates.clear(); + self.resync_ack = None; + } + self.highest = offset; + } + + /// Continues the stream with the byte at the true offset `start` at the + /// highest offset, behind a gap of unknown length: all holes are given + /// up, and later offsets leave out the jump. + fn resync(&mut self, start: u64) { + for hole in self.holes() { + self.give_up(hole); + } + // resyncs without bytes between them leave one gap + if Some(&self.highest) != self.resync_gaps.last() { + self.resync_gaps.push(self.highest); + } + self.shift = start as i64 - self.highest as i64; + self.resyncs.push((self.highest, self.shift)); + self.candidates.clear(); + self.resync_ack = None; + self.forced = false; + } + + /// Applies the ACK of the other side at the true offset `ack` in the + /// packet with the number `packet`, whose receive window before it was + /// `window`: ACKs more than one window after the highest offset (plus + /// the FIN) resync the stream after the candidate if they lie within one + /// window of it, and are kept for a resync otherwise. Other ACKs mark + /// the bytes up to them as sent (but none after the FIN). ACKs of the + /// stream's first byte or before it, or before a resync, don't count. + /// The last ACK before the stream had a start, or at or before its first + /// byte while bytes can be prepended, is kept and applied after every + /// packet. + fn add_ack(&mut self, ack: u64, window: u64, packet: u64) { + let Some(base) = self.base else { + self.pending_ack = Some(ack); + return; + }; + let offset = ack as i64 - self.shift; + if offset <= base as i64 && self.can_prepend() { + self.pending_ack = Some(ack); + return; + } + let sent_end = self.highest + u64::from(self.fin_offset.is_some()); + if offset > (sent_end + window) as i64 { + match self.candidates.last().cloned() { + Some(candidate) + if self.fin_offset.is_none() + && within_window(&candidate.bytes, ack, window) => + { + self.resync(candidate.bytes.end); + if candidate.fin { + self.fin_offset = Some(self.highest); + } + self.add_jump_ack(ack, window, packet); + } + _ => self.resync_ack = Some(ack), + } + return; + } + if offset < self.resync_offset() as i64 { + return; + } + let offset = offset as u64; + if offset > self.ack.max(base) { + self.ack = offset; + self.ack_history.push((packet, offset)); + } + let end = self.fin_offset.map_or(self.ack, |fin| fin.min(self.ack)); + self.set_highest(self.highest.max(end)); + } + + /// Applies the ACK at the true offset `ack` that confirmed a jump, after + /// the resync: it ACKs the bytes before the jump too. + fn add_jump_ack(&mut self, ack: u64, window: u64, packet: u64) { + self.add_ack(ack, window, packet); + self.ack = self.ack.max(self.resync_offset()); + } + + /// Ranges of missing bytes before the highest offset. + fn holes(&self) -> Vec> { + let mut holes: Vec> = Vec::new(); + // all bytes before the first missing one were received + let first_missing = self.received.len(); + for (offset, byte) in self.bytes.iter().enumerate().skip(first_missing) { + let offset = offset as u64; + match holes.last_mut() { + _ if byte.is_some() => {} + Some(hole) if hole.end == offset => hole.end += 1, + _ => holes.push(offset..offset + 1), + } + } + // the bytes after the furthest received one are missing too + let received_end = first_missing.max(self.bytes.len()) as u64; + if received_end < self.highest { + holes.push(received_end..self.highest); + } + holes + } + + /// First range of missing bytes before the highest offset, if any. + fn first_hole(&self) -> Option> { + // all bytes before the first missing one were received + let start = self.received.len() as u64; + let end = (start..self.highest.min(self.bytes.len() as u64)) + .find(|offset| self.bytes[*offset as usize].is_some()) + .unwrap_or(self.highest); + (start < end).then_some(start..end) + } + + /// Returns true if `hole` ends at or before the implied ACK or the ACK + /// of `ack_reorder_tolerance` packets ago. + fn is_overdue(&self, hole: &Range) -> bool { + hole.end <= self.implied_ack.max(self.settled_ack) + } + + /// Applies the pending ACK, updates the implied ACK and the ACK of + /// `ack_reorder_tolerance` packets ago after the packet with the number + /// `packet`, where `window` is the receive window of the stream's + /// receiver (`None` while it is unknown), and gives up an overdue hole + /// at the read offset. + fn after_packet(&mut self, window: Option, packet: u64, config: &TcpReassemblyConfig) { + if let Some(ack) = self.pending_ack.take() { + let ack_window = window.unwrap_or(u64::from(config.fallback_window)); + self.add_ack(ack, ack_window, packet); + } + if let Some(window) = window { + self.largest_window = Some(self.largest_window.unwrap_or(0).max(window)); + } + if let Some(factor) = config.hole_give_up_window_factor { + let window = self + .largest_window + .unwrap_or(u64::from(config.fallback_window)); + let implied_ack = self.highest.saturating_sub(u64::from(factor) * window); + self.implied_ack = self.implied_ack.max(implied_ack); + } + let tolerance = u64::from(config.ack_reorder_tolerance); + self.settled_ack = self + .ack_history + .iter() + .rev() + .find(|(ack_packet, _)| ack_packet + tolerance <= packet) + .map_or(0, |(_, ack)| *ack); + self.give_up_overdue_hole(); + } + + /// Gives up the hole at the read offset if it is overdue. + fn give_up_overdue_hole(&mut self) { + if self.first_hole().is_some_and(|hole| self.is_overdue(&hole)) { + self.give_up_hole(); + } + } + + /// Gives up the hole at the read offset, returns false if there is + /// none. + fn give_up_hole(&mut self) -> bool { + match self.first_hole() { + Some(hole) if hole.start == self.read_offset => { + self.give_up(hole); + true + } + _ => false, + } + } + + /// Turns `hole` into a gap. + fn give_up(&mut self, hole: Range) { + self.given_up.push(hole.clone()); + self.gap_count += 1; + self.gap_bytes += hole.end - hole.start; + self.gaps.push(hole); + self.gaps.sort_by_key(|gap| gap.start); + self.extend_received(); + } + + /// Moves the read offset over the gap at the read offset, if any (the + /// gap of a resync comes first). + fn consume_gap(&mut self) { + if Some(&self.read_offset) == self.resync_gaps.first() { + self.resync_gaps.remove(0); + self.give_up_overdue_hole(); + } else if let Some(gap) = self.gap_at_read_offset() { + self.gaps.remove(0); + self.read_offset = gap.end; + self.read_moved = true; + self.give_up_overdue_hole(); + } + } + + /// Moves the read offset over `len` bytes. + fn consume(&mut self, len: u64) { + self.read_offset += len; + self.read_moved |= 0 < len; + self.give_up_overdue_hole(); + } + + /// Gap at the read offset, if any. + fn gap_at_read_offset(&self) -> Option> { + self.gaps + .first() + .filter(|gap| gap.start == self.read_offset) + .cloned() + } + + /// Moves the read offset to `offset` (at most the highest offset), + /// discarding the holes and gaps before it (without counting the holes + /// as gaps). The gap of a resync at `offset` stays. + fn discard_until(&mut self, offset: u64) { + let offset = offset.min(self.highest); + if offset <= self.read_offset { + return; + } + self.gaps.retain_mut(|gap| { + gap.start = gap.start.max(offset); + gap.start < gap.end + }); + self.resync_gaps.retain(|gap| *gap >= offset); + self.read_offset = offset; + self.read_moved = true; + self.extend_received(); + self.give_up_overdue_hole(); + } + + /// Offset up to which the other side ACKed the bytes, or must have + /// ACKed them. + fn acked_offset(&self) -> u64 { + self.ack.max(self.implied_ack).min(self.highest) + } + + /// Expected result of reading the contiguous received bytes from the + /// read offset on, but not after `limit` or a gap. + fn read(&self, limit: u64) -> TcpRead<'_> { + if Some(&self.read_offset) == self.resync_gaps.first() { + return TcpRead::Gap { len: None }; + } + if let Some(gap) = self.gap_at_read_offset() { + return TcpRead::Gap { + len: Some(gap.end - gap.start), + }; + } + let next_gap = self + .gaps + .first() + .map_or(u64::MAX, |gap| gap.start) + .min(self.resync_gaps.first().copied().unwrap_or(u64::MAX)); + let start = self.read_offset as usize; + let end = (self.received.len() as u64).min(limit).min(next_gap) as usize; + if start < end { + TcpRead::Data(&self.received[start..end]) + } else if Some(self.read_offset) == self.fin_offset { + TcpRead::End(TcpStreamEnd::Fin) + } else if let Some(end) = self.end { + TcpRead::End(end) + } else { + TcpRead::Pending + } + } + + /// Returns true if the FIN was seen and all bytes before it were + /// received or given up. + fn is_finished(&self) -> bool { + Some(self.received.len() as u64) == self.fin_offset + } + + /// Returns true if the FIN was ACKed and all holes are overdue. + fn can_finish(&self) -> bool { + self.fin_offset.is_some_and(|fin| fin < self.ack) + && self.holes().iter().all(|hole| self.is_overdue(hole)) + } + + /// Gives up all holes, as the connection ended, and makes reading + /// return `end` once nothing more is readable away from the FIN. + fn connection_ended(&mut self, end: TcpStreamEnd) { + for hole in self.holes() { + self.give_up(hole); + } + self.end = Some(end); + } + + /// Returns true if the receiver, whose receive window is `window`, can + /// accept an RST of the stream's sender at the true offset `offset`: it + /// lies from the receiver's ACK up to one window after the bytes known to + /// be sent and the FIN. The receiver's ACK is the lower one of the ACK + /// that counted (at least the stream's first byte) and an ACK kept before + /// the first byte, but at most the end of the received bytes, and after + /// a resync at least the resync point. Without a start, the RST lies up + /// to one window after the receiver's last ACK, or anywhere without such + /// an ACK. + fn accepts_reset(&self, offset: u64, window: u64) -> bool { + match self.base { + Some(base) => { + let offset = offset as i64 - self.shift; + let sent_end = self.highest + u64::from(self.fin_offset.is_some()); + let mut ack = self.ack.max(base) as i64; + if let Some(pending) = self.pending_ack { + ack = ack.min(pending as i64 - self.shift); + } + let received_end = (self.bytes.len() as u64).max(base); + let mut first = ack.min(received_end as i64); + if false == self.resyncs.is_empty() { + first = first.max(self.resync_offset() as i64); + } + first <= offset && offset <= (sent_end + window) as i64 + } + None => self + .pending_ack + .is_none_or(|ack| ack <= offset && offset <= ack + window), + } + } +} + +/// Returns true if the true offset `offset` lies at most `window` bytes +/// before or after the `bytes`. +fn within_window(bytes: &Range, offset: u64, window: u64) -> bool { + offset + window >= bytes.start && offset <= bytes.end + window +} + +impl ReferenceModel { + /// Model of a connection in a pool with the configuration `config`. + pub fn new(config: TcpReassemblyConfig) -> ReferenceModel { + ReferenceModel { + config, + ..Default::default() + } + } + + /// Applies the ACK of a segment to the other stream and the segment to + /// the stream of its sender: + /// - only a SYN or bytes without an RST start the connection, which has + /// guessed roles without a SYN; + /// - the ACK of a SYN-ACK gives the other stream an observed start; + /// - a SYN or SYN-ACK of the role it belongs to confirms guessed roles + /// if it gives a stream an observed start; + /// - an RST that the receiver can accept (see + /// [`ModelStream::accepts_reset`]) resets the connection, and its ACK + /// counts. Other RSTs count as out-of-window. Neither stores anything + /// else of the RST. + /// + /// The connection is finished once both FINs are ACKed and all holes + /// left are overdue, unless it was reset. Ending it gives up all holes; + /// later segments change nothing. + pub fn apply(&mut self, segment: &TestSegment) { + let header = &segment.header; + if self.end.is_some() { + return; + } + if false == self.created { + if header.rst || (false == header.syn && segment.payload.is_empty()) { + return; + } + self.created = true; + self.roles_guessed = false == header.syn; + } + self.packets += 1; + let sender = role_index(segment.sender); + let other = role_index(segment.sender.other()); + if header.rst { + let window = self.window(segment.sender); + if self.streams[sender].accepts_reset(segment.offset, window) { + if let Some(ack) = segment.ack { + let window = self.window(segment.sender.other()); + self.streams[other].add_ack(ack, window, self.packets); + } + self.end = Some(TcpConnectionEnd::Reset { by: segment.sender }); + } else { + self.streams[sender].out_of_window_segments += 1; + } + } else { + let observed = self.streams.each_ref().map(|stream| stream.observed); + if let (true, Some(ack)) = (header.syn, segment.ack) { + let factor = self.config.hole_give_up_window_factor.unwrap_or(2); + let range = u64::from(factor) * self.window(segment.sender.other()); + self.streams[other].observe_start(ack, range); + } + if let Some(ack) = segment.ack { + let window = self.window(segment.sender.other()); + self.streams[other].add_ack(ack, window, self.packets); + } + let window = self.window(segment.sender); + self.streams[sender].add_segment(segment, window, self.packets, &self.config); + self.windows[sender] = Some(header.window_size); + self.syns[sender] |= header.syn && self.streams[sender].starts_at(segment.offset); + let syn_role = if header.ack { + TcpRole::Responder + } else { + TcpRole::Initiator + }; + if header.syn + && syn_role == segment.sender + && observed != self.streams.each_ref().map(|stream| stream.observed) + { + self.roles_guessed = false; + } + } + for role in [TcpRole::Initiator, TcpRole::Responder] { + let window = self.known_window(role); + self.streams[role_index(role)].after_packet(window, self.packets, &self.config); + } + if self.end.is_none() && self.streams.iter().all(ModelStream::can_finish) { + self.end = Some(TcpConnectionEnd::Finished); + } + if let Some(end) = self.end { + let stream_end = match end { + TcpConnectionEnd::Finished => TcpStreamEnd::Fin, + TcpConnectionEnd::Reset { .. } => TcpStreamEnd::Reset, + }; + for stream in &mut self.streams { + stream.connection_ended(stream_end); + } + } + } + + /// Receive window of the stream of `role`: the last window its receiver + /// advertised (never scaled, as there are no window scale options), or + /// the fallback window until both SYNs were seen. + fn window(&self, role: TcpRole) -> u64 { + self.known_window(role) + .unwrap_or(u64::from(self.config.fallback_window)) + } + + /// Last window the receiver of the stream of `role` advertised, `None` + /// until both SYNs were seen. + fn known_window(&self, role: TcpRole) -> Option { + match self.windows[role_index(role.other())] { + Some(window) if self.syns == [true, true] => Some(u64::from(window)), + _ => None, + } + } + + /// End of the connection, `None` while it is open. + pub fn end(&self) -> Option { + self.end + } + + /// Returns true once a segment started the connection. + pub fn created(&self) -> bool { + self.created + } + + /// Returns true if the roles are guessed. + pub fn roles_guessed(&self) -> bool { + self.roles_guessed + } + + /// Contiguous received bytes of the stream of `role` from offset 0 on. + pub fn received(&self, role: TcpRole) -> &[u8] { + &self.streams[role_index(role)].received + } + + /// Returns true if the contiguous received bytes of the stream of + /// `role` match the bytes of `data` sent at the same true offsets, + /// apart from bytes that were given up and bytes before the stream's + /// first byte known to the pool. + pub fn received_matches(&self, role: TcpRole, data: &[u8]) -> bool { + let stream = &self.streams[role_index(role)]; + let base = stream.base.unwrap_or(0); + stream.received.iter().enumerate().all(|(offset, byte)| { + let offset = offset as u64; + let shift = stream + .resyncs + .iter() + .rev() + .find(|(resync, _)| *resync <= offset) + .map_or(0, |(_, shift)| *shift); + let sent = usize::try_from(offset as i64 + shift) + .ok() + .and_then(|offset| data.get(offset)); + offset < base + || stream.given_up.iter().any(|gap| gap.contains(&offset)) + || sent.is_none_or(|sent| sent == byte) + }) + } + + /// Number of resyncs of the stream of `role`. + pub fn resyncs(&self, role: TcpRole) -> u64 { + self.streams[role_index(role)].resyncs.len() as u64 + } + + /// FIN offset of the stream of `role`. + pub fn fin_offset(&self, role: TcpRole) -> Option { + self.streams[role_index(role)].fin_offset + } + + /// Applies `action` to `stream` and to the stream of `role`, and checks + /// that both find the same hole to give up. + pub fn apply_action( + &mut self, + role: TcpRole, + stream: &mut TcpStream, + action: ReaderAction, + ) -> Result<(), proptest::test_runner::TestCaseError> { + use proptest::prelude::*; + + let expected = &mut self.streams[role_index(role)]; + match action { + ReaderAction::GiveUpHole => { + prop_assert_eq!(expected.give_up_hole(), stream.give_up_hole()); + } + ReaderAction::ConsumeGap => { + expected.consume_gap(); + stream.consume_gap(); + } + ReaderAction::DiscardAhead(distance) => { + let offset = expected.read_offset + distance; + expected.discard_until(offset); + stream.discard_until(offset - expected.base.unwrap_or(0)); + } + ReaderAction::DiscardAll => { + expected.discard_until(expected.highest); + stream.discard_all(); + } + ReaderAction::ForceResync => { + expected.force_resync(); + stream.force_resync(); + } + } + Ok(()) + } + + /// Checks that `stream` matches the stream of `role`, then consumes + /// `consume_len` bytes of both after reading them with `read_acked` (if + /// `acked`) or `read_received`. + pub fn check_and_consume( + &mut self, + role: TcpRole, + stream: &mut TcpStream, + consume_len: usize, + acked: bool, + ) -> Result<(), proptest::test_runner::TestCaseError> { + use proptest::prelude::*; + + let expected = &mut self.streams[role_index(role)]; + // offsets of the pool are relative to the stream's first byte + let base = expected.base.unwrap_or(0); + prop_assert_eq!(expected.read_offset - base, stream.read_offset()); + prop_assert_eq!( + expected.acked_offset().saturating_sub(base), + stream.acked_offset() + ); + prop_assert_eq!(expected.highest - base, stream.highest_offset()); + prop_assert_eq!( + expected.fin_offset.map(|fin| fin - base), + stream.fin_offset() + ); + let holes: Vec<_> = expected + .holes() + .into_iter() + .map(|hole| hole.start - base..hole.end - base) + .collect(); + prop_assert_eq!(holes, stream.holes().collect::>()); + prop_assert_eq!(expected.is_finished(), stream.is_finished()); + let clean = 0 == expected.gap_count + && expected.resyncs.is_empty() + && 0 == expected.conflicting_retransmissions; + prop_assert_eq!(clean, stream.is_clean()); + let observed = expected.observed; + prop_assert_eq!( + clean && observed && expected.is_finished(), + stream.is_complete() + ); + prop_assert_eq!( + &TcpStreamStatus { + start: if observed { + TcpStreamStart::Observed + } else { + TcpStreamStart::MidStreamPickup + }, + gaps: expected.gap_count, + gap_bytes: expected.gap_bytes, + resyncs: expected.resyncs.len() as u64, + conflicting_retransmissions: expected.conflicting_retransmissions, + out_of_window_segments: expected.out_of_window_segments, + }, + stream.status() + ); + + // read both ways, the last read limits the bytes that are consumed + let mut read_len = 0; + for read_acked in [false == acked, acked] { + let read_offset = stream.read_offset(); + let acked_offset = stream.acked_offset(); + let (expected_read, read) = if read_acked { + (expected.read(expected.acked_offset()), stream.read_acked()) + } else { + (expected.read(u64::MAX), stream.read_received()) + }; + prop_assert_eq!(expected_read, read); + read_len = match read { + TcpRead::Data(data) => data.len(), + _ => 0, + }; + // read_acked never returns bytes that were not ACKed + if read_acked && read_len > 0 { + prop_assert!(read_offset + read_len as u64 <= acked_offset); + } + } + stream.consume(consume_len); + expected.consume(consume_len.min(read_len) as u64); + Ok(()) + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{tcp_reassembly::TcpRole::*, test_gens::*}; + use proptest::{collection::vec, prelude::*, sample::Index}; + + /// Order in which the endpoints send their FINs. + #[derive(Copy, Clone, Debug)] + enum FinOrder { + InitiatorFirst, + ResponderFirst, + /// Each FIN is sent before the other one arrived. + Simultaneous, + } + + /// Sends the bytes `data` of both streams (indexed by role) after the + /// bytes each role sent so far, in segments cut by `segment_lens` and + /// interleaved by `directions` (true for the initiator). Each segment + /// starts with up to `resent_lens` bytes of `data` that were already + /// sent. + fn send_interleaved( + script: &mut ConnectionScript, + data: [&[u8]; 2], + segment_lens: &[usize], + resent_lens: &[usize], + directions: &[bool], + ) { + let offsets = [Initiator, Responder].map(|role| script.next_offset(role)); + let mut sent = [0usize, 0usize]; + let mut step = 0; + while sent[0] < data[0].len() || sent[1] < data[1].len() { + let initiator_done = sent[0] == data[0].len(); + let responder_done = sent[1] == data[1].len(); + let role = if responder_done + || (false == initiator_done && directions[step % directions.len()]) + { + Initiator + } else { + Responder + }; + let i = role_index(role); + let start = sent[i] - resent_lens[step % resent_lens.len()].min(sent[i]); + let len = segment_lens[step % segment_lens.len()].min(data[i].len() - sent[i]); + script.send_at( + role, + offsets[i] + start as u64, + &data[i][start..sent[i] + len], + ); + sent[i] += len; + step += 1; + } + } + + /// Feeds `segments` to `pool` and checks both streams against the + /// reference model after each segment, reading partially from the pool + /// or from the ended connection it handed over. `acked_reads` decides + /// whether the bytes are consumed after reading them with `read_acked` + /// or `read_received`, and `actions` what the reader does before + /// reading. + /// + /// Returns the model and the ended connection, if any. + fn feed_and_check( + pool: &mut TcpReassemblyPool<(), ()>, + segments: &[TestSegment], + consume_lens: &[usize], + acked_reads: &[bool], + actions: &[Option], + ) -> Result<(ReferenceModel, Option), TestCaseError> { + let mut model = ReferenceModel::new(pool.config().clone()); + let mut ended = None; + for (step, segment) in segments.iter().enumerate() { + let after_end = model.end().is_some(); + model.apply(segment); + let processed = segment.feed(pool, ()); + if false == model.created() { + prop_assert!(processed.active.is_none()); + prop_assert!(processed.ended.is_none()); + prop_assert_eq!(Some(TcpIgnoreReason::NoConnection), processed.ignored); + continue; + } + let connection = if after_end { + prop_assert!(processed.active.is_none()); + prop_assert!(processed.ended.is_none()); + prop_assert_eq!(Some(TcpIgnoreReason::AfterEnd), processed.ignored); + ended.as_mut().unwrap() + } else if model.end().is_some() { + prop_assert!(processed.active.is_none()); + prop_assert_eq!(None, processed.ignored); + ended = processed.ended; + ended.as_mut().unwrap() + } else { + prop_assert!(processed.ended.is_none()); + prop_assert_eq!(None, processed.ignored); + processed.active.unwrap().0 + }; + prop_assert_eq!(model.end(), connection.end()); + prop_assert_eq!(model.roles_guessed(), connection.roles_guessed()); + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + if let Some(action) = actions[(step + i) % actions.len()] { + model.apply_action(role, connection.stream_mut(role), action)?; + } + model.check_and_consume( + role, + connection.stream_mut(role), + consume_lens[(step + i) % consume_lens.len()], + acked_reads[(step + i) % acked_reads.len()], + )?; + } + } + Ok((model, ended)) + } + + proptest! { + #[test] + fn in_order_streams( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + resent_lens in vec(0usize..1000, 1..32), + directions in vec(any::(), 1..64), + fin_data_lens in [proptest::option::of(0usize..64), proptest::option::of(0usize..64)], + fin_order in prop_oneof![ + Just(FinOrder::InitiatorFirst), + Just(FinOrder::ResponderFirst), + Just(FinOrder::Simultaneous), + ], + final_acks in [any::(), any::()], + late_segments in vec( + (tcp_role_any(), 0usize..8, vec(any::(), 0..8), any::()), + 0..8 + ), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // some of them starting with bytes that were already sent + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data, &responder_data]; + // bytes sent before the FIN segment (which carries the rest) + let data_lens = [0, 1].map(|i| { + data[i].len() - fin_data_lens[i].unwrap_or(0).min(data[i].len()) + }); + send_interleaved( + &mut script, + [&data[0][..data_lens[0]], &data[1][..data_lens[1]]], + &segment_lens, + &resent_lens, + &directions, + ); + + // FINs carrying the rest of the bytes + let roles = match fin_order { + FinOrder::ResponderFirst => [Responder, Initiator], + _ => [Initiator, Responder], + }; + let both_fins = fin_data_lens.iter().all(Option::is_some); + if matches!(fin_order, FinOrder::Simultaneous) && both_fins { + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + script.send(role, &data[i][data_lens[i]..]); + } + script.simultaneous_fins(); + } else { + for role in roles { + let i = role_index(role); + if fin_data_lens[i].is_some() { + script.fin_with_data(role, &data[i][data_lens[i]..]); + } else { + // without a FIN, the rest is sent as normal bytes + script.send(role, &data[i][data_lens[i]..]); + } + } + } + + // ACKs of the FINs that were not ACKed yet + for role in roles { + if final_acks[role_index(role)] { + script.ack(role); + } + } + + // late segments ending before, at, or after the end of the + // stream (possibly with another FIN) + for (role, back, payload, fin) in &late_segments { + let len = data[role_index(*role)].len(); + let start = (len - (*back).min(len)) as u64; + if *fin { + script.fin_at(*role, start, payload); + } else { + script.send_at(*role, start, payload); + } + } + + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let (model, ended) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // the model received everything that was sent, and the FINs end + // the streams + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + prop_assert_eq!(&data[i][..], &model.received(role)[..data[i].len()]); + if fin_data_lens[i].is_some() { + prop_assert_eq!(Some(data[i].len() as u64), model.fin_offset(role)); + } + } + + // with both FINs and their ACKs the connection is finished + if both_fins && final_acks.iter().all(|ack| *ack) { + prop_assert_eq!(Some(TcpConnectionEnd::Finished), model.end()); + } + + // an ended connection is finished and can be read to its end + // (late segments with differing bytes can make it unclean) + if let Some(mut connection) = ended { + for role in [Initiator, Responder] { + let stream = connection.stream_mut(role); + prop_assert!(stream.is_finished()); + stream.read_received(); + stream.consume(usize::MAX); + prop_assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + prop_assert_eq!(model.fin_offset(role), Some(stream.read_offset())); + } + pool.recycle(connection); + } + } + + #[test] + fn reordered_streams( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + resent_lens in vec(0usize..1000, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + retransmissions in vec( + ( + tcp_role_any(), + any::(), + 0usize..3000, + proptest::option::of((any::(), 1u8..=255)), + ), + 0..16 + ), + duplicates in vec(any::(), 0..8), + positions in vec(any::(), 1..16), + delays in vec(0usize..8, 1..64), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &resent_lens, &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // retransmissions cut differently than the original segments + // (carrying the FIN if they reach it, some with a corrupted byte), + // and duplicates + let originals = script.segments.len() - 3; + let mut corrupted = false; + for (role, start, len, corruption) in &retransmissions { + let i = role_index(*role); + let start = start.index(data[i].len() + 1); + let end = (start + len).min(data[i].len()); + let mut payload = data[i][start..end].to_vec(); + if let Some((position, xor)) = corruption { + if start < end { + payload[position.index(end - start)] ^= xor; + corrupted = true; + } + } + if fins[i] && end == data[i].len() { + script.fin_at(*role, start as u64, &payload); + } else { + script.send_at(*role, start as u64, &payload); + } + } + if originals > 0 { + for index in &duplicates { + let duplicate = script.segments[3 + index.index(originals)].clone(); + script.segments.push(duplicate); + } + } + + // move the segments after the handshake by a bounded distance, + // the retransmissions and duplicates start at random positions + let mut keyed: Vec<_> = script + .segments + .drain(3..) + .enumerate() + .map(|(i, segment)| { + let position = if i < originals { + i + } else { + positions[i % positions.len()].index(originals + 1) + }; + (position + delays[i % delays.len()], segment) + }) + .collect(); + keyed.sort_by_key(|(key, _)| *key); + script.segments.extend(keyed.into_iter().map(|(_, segment)| segment)); + + // the retransmissions and duplicates can ACK bytes that are sent + // much later, which would make holes overdue (the windows are too + // large for the implied ACK to do so) + let mut pool = TcpReassemblyPool::<(), ()>::new(TcpReassemblyConfig { + ack_reorder_tolerance: u32::MAX, + ..Default::default() + }); + let (model, ended) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // every byte arrived, so the streams were delivered byte-exact + // (unless a corrupted retransmission arrived first) + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + if false == corrupted { + prop_assert_eq!(data[i], model.received(role)); + } + prop_assert_eq!(data[i].len(), model.received(role).len()); + prop_assert_eq!(fins[i].then_some(data[i].len() as u64), model.fin_offset(role)); + } + + // with both FINs the connection is finished + prop_assert_eq!(fins[0] && fins[1], ended.is_some()); + } + + #[test] + fn random_acks( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + resent_lens in vec(0usize..1000, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + windows in vec(prop_oneof![0u16..64, any::()], 1..16), + acks in vec((tcp_role_any(), any::(), any::()), 0..32), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &resent_lens, &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // pure ACKs of random offsets (also after the bytes that were + // sent) at random positions after the handshake + for (role, position, offset) in &acks { + let sent = data[role_index(role.other())].len() + 1; + script.ack_to(*role, offset.index(2 * sent) as u64); + let ack = script.segments.pop().unwrap(); + let position = 3 + position.index(script.segments.len() - 2); + script.segments.insert(position, ack); + } + + // random receive windows, which make some of the ACKs implausible + for (segment, window) in script.segments.iter_mut().zip(windows.iter().cycle()) { + segment.header.window_size = *window; + } + + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let (model, _) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // the ACKs don't change the received bytes, but they can make + // holes overdue, whose bytes are ignored after they were given up + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + prop_assert!(model.received(role).len() >= data[i].len()); + prop_assert!(model.received_matches(role, data[i])); + } + } + + #[test] + fn out_of_window_segments( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + windows in vec(prop_oneof![0u16..64, 0u16..2048], 1..16), + injected in vec( + ( + tcp_role_any(), + any::(), + 0u64..8192, + vec(any::(), 0..8), + any::(), + ), + 0..16 + ), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &[0], &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // segments the endpoints didn't send, with bytes or a FIN after + // the end of the stream, at random positions after the handshake + // (without an ACK, so that nothing confirms a jump to them) + for (role, position, distance, payload, fin) in &injected { + let offset = data[role_index(*role)].len() as u64 + distance; + let mut segment = script.injected(|script| { + if *fin { + script.fin_at(*role, offset, payload); + } else { + script.send_at(*role, offset, payload); + } + }); + segment.header.ack = false; + segment.ack = None; + let position = 3 + position.index(script.segments.len() - 2); + script.segments.insert(position, segment); + } + + // random receive windows + for (segment, window) in script.segments.iter_mut().zip(windows.iter().cycle()) { + segment.header.window_size = *window; + } + + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let (model, _) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // the injected segments after the window are only counted: the + // streams don't resync, and keep the bytes that were sent + // (injected bytes within the window can make the hole before + // them overdue, whose bytes are ignored after it was given up) + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + prop_assert_eq!(0, model.resyncs(role)); + prop_assert!(model.received(role).len() >= data[i].len()); + prop_assert!(model.received_matches(role, data[i])); + } + } + + #[test] + fn conflicting_retransmissions( + isn in tcp_isn_any(), + data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + retransmissions in vec( + ( + any::(), + 1usize..3000, + proptest::option::of((any::(), 1u8..=255)), + ), + 0..16 + ), + ) { + // the stream in order, followed by retransmissions of randomly cut + // ranges, some of them with a corrupted byte + let mut script = ConnectionScript::with_isns(isn, 2000); + script.handshake(); + send_interleaved(&mut script, [&data, &[]], &segment_lens, &[0], &[true]); + let mut corrupted = 0; + if false == data.is_empty() { + for (start, len, corruption) in &retransmissions { + let start = start.index(data.len()); + let end = (start + len).min(data.len()); + let mut payload = data[start..end].to_vec(); + if let Some((position, xor)) = corruption { + payload[position.index(end - start)] ^= xor; + corrupted += 1; + } + script.send_at(Initiator, start as u64, &payload); + } + } + + // the bytes received first are delivered, and each corrupted + // segment counts once + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + prop_assert_eq!(corrupted, stream.status().conflicting_retransmissions); + prop_assert_eq!(0 == corrupted, stream.is_clean()); + if data.is_empty() { + prop_assert_eq!(TcpRead::Pending, stream.read_received()); + } else { + prop_assert_eq!(TcpRead::Data(&data[..]), stream.read_received()); + } + } + + #[test] + fn capture_loss( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + resent_lens in vec(0usize..1000, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + extra_acks in 0usize..32, + keep_alives in vec((tcp_role_any(), any::()), 0..4), + lost in vec((any::(), proptest::option::of(any::())), 0..16), + windows in vec( + prop_oneof![1 => 1u16..256, 2 => 256u16..8192, 1 => Just(u16::MAX)], + 1..16 + ), + config in tcp_overdue_config_any(), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs, their ACKs and more ACKs (so that the ACK + // reorder tolerance can pass) + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &resent_lens, &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + for i in 0..extra_acks { + script.ack(if 0 == i % 2 { Initiator } else { Responder }); + } + + // keep-alive probes repeating the last byte sent, at random + // positions after the handshake + for (role, position) in &keep_alives { + let data = data[role_index(*role)]; + if let Some(last) = data.last() { + let probe = script.injected(|script| { + script.send_at(*role, data.len() as u64 - 1, &[*last]); + }); + let position = 3 + position.index(script.segments.len() - 2); + script.segments.insert(position, probe); + } + } + + // segments lost in the capture, or captured later + for (index, later) in &lost { + if script.segments.len() > 3 { + let i = 3 + index.index(script.segments.len() - 3); + let segment = script.segments.remove(i); + if let Some(later) = later { + let position = i + later.index(script.segments.len() - i + 1); + script.segments.insert(position, segment); + } + } + } + + // random receive windows, small ones make holes overdue early + for (segment, window) in script.segments.iter_mut().zip(windows.iter().cycle()) { + segment.header.window_size = *window; + } + + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let (model, ended) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // the received bytes are the ones that were sent, apart from the + // ones that were given up + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + prop_assert!(model.received_matches(role, data[i])); + } + + // a finished connection can be read to its FINs, stepping over + // the gaps + if let Some(mut connection) = ended { + for role in [Initiator, Responder] { + let stream = connection.stream_mut(role); + prop_assert!(stream.is_finished()); + for _ in 0..10_000 { + match stream.read_received() { + TcpRead::Data(data) => { + let len = data.len(); + stream.consume(len); + } + TcpRead::Gap { .. } => stream.consume_gap(), + _ => break, + } + } + prop_assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + } + } + + #[test] + fn mid_stream_pickups( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + resent_lens in vec(0usize..1000, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + pickup in any::(), + late in vec((any::(), 0usize..16), 0..6), + keep_alives in vec((tcp_role_any(), any::()), 0..4), + delays in vec(0usize..4, 1..64), + windows in vec( + prop_oneof![1 => 1u16..256, 2 => 256u16..8192, 1 => Just(u16::MAX)], + 1..16 + ), + fallback_window in prop_oneof![Just(4 * 1024 * 1024), 64u32..8192], + config in tcp_overdue_config_any(), + consume_lens in vec(prop_oneof![Just(0usize), 0usize..3000], 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &resent_lens, &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // the capture starts at a random segment, a few of the segments + // before it are captured later (e.g. the SYN) + let lost: Vec<_> = script + .segments + .drain(..pickup.index(script.segments.len())) + .collect(); + if false == lost.is_empty() { + for (index, position) in &late { + let segment = lost[index.index(lost.len())].clone(); + let position = (*position).min(script.segments.len()); + script.segments.insert(position, segment); + } + } + + // keep-alive probes repeating the last byte sent, at random + // positions (some of them the first segment of their stream) + for (role, position) in &keep_alives { + let data = data[role_index(*role)]; + if let Some(last) = data.last() { + let probe = script.injected(|script| { + script.send_at(*role, data.len() as u64 - 1, &[*last]); + }); + let position = position.index(script.segments.len() + 1); + script.segments.insert(position, probe); + } + } + + // move the segments by a bounded distance + let mut keyed: Vec<_> = script + .segments + .drain(..) + .enumerate() + .map(|(i, segment)| (i + delays[i % delays.len()], segment)) + .collect(); + keyed.sort_by_key(|(key, _)| *key); + script.segments.extend(keyed.into_iter().map(|(_, segment)| segment)); + + // random receive windows (used once both SYNs were seen) + for (segment, window) in script.segments.iter_mut().zip(windows.iter().cycle()) { + segment.header.window_size = *window; + } + + let mut pool = TcpReassemblyPool::<(), ()>::new(TcpReassemblyConfig { + fallback_window, + ..config + }); + let (model, _) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // the received bytes are the ones that were sent, apart from the + // ones that were given up or lie before the first byte captured + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + prop_assert!(model.received_matches(role, data[i])); + } + } + + #[test] + fn resyncs( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + before in [stream_data_any(4 * 1024), stream_data_any(4 * 1024)], + after in [stream_data_any(4 * 1024), stream_data_any(4 * 1024)], + jumps in [ + proptest::option::of(prop_oneof![0u64..1000, 3000u64..20_000]), + proptest::option::of(prop_oneof![0u64..1000, 3000u64..20_000]), + ], + segment_lens in vec(1usize..200, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + pickup in any::(), + one_direction in any::(), + lost in vec(any::(), 0..4), + injected in vec( + (tcp_role_any(), any::(), 0u64..5000, vec(any::(), 1..8)), + 0..4 + ), + window in 200u16..1000, + resync_after_segments in proptest::option::of(0u32..4), + delays in proptest::option::of(vec(0usize..3, 1..64)), + actions in vec(proptest::option::weighted(0.05, Just(ReaderAction::ForceResync)), 1..32), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // both streams send their bytes, then the streams with a jump + // continue later (the bytes in between were not captured), + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.window_size = window; + script.handshake(); + send_interleaved(&mut script, [&before[0], &before[1]], &segment_lens, &[0], &directions); + for (role, jump) in [Initiator, Responder].into_iter().zip(jumps) { + if let Some(jump) = jump { + script.send_uncaptured(role, jump); + } + } + send_interleaved(&mut script, [&after[0], &after[1]], &segment_lens, &[0], &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // segments lost in the capture + for index in &lost { + if script.segments.len() > 3 { + script.segments.remove(3 + index.index(script.segments.len() - 3)); + } + } + + // segments the endpoints didn't send, without an ACK, near or + // after the end of the stream (data after the window that + // doesn't agree with the bytes after the jump) + let sent = [0, 1].map(|i| { + before[i].len() as u64 + jumps[i].unwrap_or(0) + after[i].len() as u64 + }); + for (role, position, distance, payload) in &injected { + let mut segment = script.injected(|script| { + script.send_at(*role, sent[role_index(*role)] + distance, payload); + }); + segment.header.ack = false; + segment.ack = None; + let position = 3 + position.index(script.segments.len() - 2); + script.segments.insert(position, segment); + } + + // a capture of the initiator's direction only (and the SYN-ACK), + // so no ACKs confirm its jump + if one_direction { + let mut i = 0; + script.segments.retain(|segment| { + i += 1; + i <= 3 || Initiator == segment.sender + }); + } + + // the capture starts after the handshake + let first = if pickup { + script.segments.drain(..3); + 0 + } else { + 3 + }; + + // move the segments after the handshake by a bounded distance + if let Some(delays) = &delays { + let mut keyed: Vec<_> = script + .segments + .drain(first..) + .enumerate() + .map(|(i, segment)| (i + delays[i % delays.len()], segment)) + .collect(); + keyed.sort_by_key(|(key, _)| *key); + script.segments.extend(keyed.into_iter().map(|(_, segment)| segment)); + } + + let mut pool = TcpReassemblyPool::<(), ()>::new(TcpReassemblyConfig { + fallback_window: u32::from(window), + resync_after_segments, + ..Default::default() + }); + let (model, _) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &actions, + )?; + + // the bytes after a resync are the ones sent after the jump (the + // injected bytes lie after them) + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + let mut sent = before[i].clone(); + sent.resize(before[i].len() + jumps[i].unwrap_or(0) as usize, 0); + sent.extend_from_slice(&after[i]); + prop_assert!(model.received_matches(role, &sent)); + } + + // in an undisturbed capture of both directions, the ACKs of the + // other side make a stream resync after a jump of more than k + // windows (if earlier bytes arrive after the bytes after the + // jump, they show that the stream didn't jump, until more bytes + // after the jump arrive) + let disturbed = one_direction + || delays.is_some() + || false == lost.is_empty() + || false == injected.is_empty(); + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + let jumped = jumps[i].is_some_and(|jump| jump >= 3000) + && false == after[i].is_empty() + && (false == pickup || false == before[i].is_empty()); + if jumped && false == disturbed { + prop_assert!(model.resyncs(role) > 0); + } + } + } + + #[test] + fn resets( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(4 * 1024), + responder_data in stream_data_any(4 * 1024), + segment_lens in vec(1usize..500, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + rst in proptest::option::of((tcp_role_any(), any::(), any::())), + injected in vec( + ( + tcp_role_any(), + any::(), + any::(), + prop_oneof![0u64..64, 0u64..8192, 0u64..(1 << 30)], + any::(), + ), + 0..4 + ), + lost in vec(any::(), 0..4), + one_direction in any::(), + pickup in any::(), + windows in vec( + prop_oneof![1 => 0u16..64, 1 => 64u16..2048, 1 => Just(u16::MAX)], + 1..16 + ), + fallback_window in prop_oneof![Just(4 * 1024 * 1024), 64u32..4096], + config in tcp_overdue_config_any(), + consume_lens in vec(0usize..1000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &[0], &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // an RST of an endpoint after the SYN (e.g. of a closed port), at + // the next byte it would send and ACKing what the other side sent + // so far (or without an ACK), followed by the segments sent after + // it, whose late arrival is ignored + if let Some((role, position, with_ack)) = &rst { + let position = 1 + position.index(script.segments.len()); + let next = |role| { + script.segments[..position] + .iter() + .filter(|segment| role == segment.sender) + .map(|segment| { + segment.offset + + segment.payload.len() as u64 + + u64::from(segment.header.fin) + }) + .max() + .unwrap_or(0) + }; + let mut segment = script.injected(|script| { + script.rst_at(*role, next(*role)); + }); + if *with_ack { + let ack = next(role.other()); + segment.ack = Some(ack); + segment.header.acknowledgment_number = script.seq(role.other(), ack); + } else { + segment.ack = None; + segment.header.ack = false; + } + script.segments.insert(position, segment); + } + + // RSTs the endpoints didn't send, before or after the end of the + // stream of their sender (with an ACK of everything the other + // side sent, or without one) + for (role, position, before, distance, with_ack) in &injected { + let len = data[role_index(*role)].len() as u64; + let offset = if *before { + len.saturating_sub(*distance) + } else { + len + distance + }; + let mut segment = script.injected(|script| { + script.rst_at(*role, offset); + }); + if false == *with_ack { + segment.ack = None; + segment.header.ack = false; + } + let position = 3 + position.index(script.segments.len() - 2); + script.segments.insert(position, segment); + } + + // segments lost in the capture (but no RSTs) + for index in &lost { + let i = 3 + index.index(script.segments.len() - 3); + if false == script.segments[i].header.rst { + script.segments.remove(i); + } + } + + // a capture of the initiator's direction only (and the SYN-ACK), + // plus the RSTs + if one_direction { + script.segments.retain(|segment| { + segment.header.syn || Initiator == segment.sender || segment.header.rst + }); + } + + // the capture starts after the handshake (but with the RSTs) + if pickup { + let mut removed = 0; + script.segments.retain(|segment| { + let remove = removed < 3 && false == segment.header.rst; + removed += usize::from(remove); + false == remove + }); + } + + // random receive windows, and RSTs with a window of 0 (which + // doesn't count) + for (segment, window) in script.segments.iter_mut().zip(windows.iter().cycle()) { + segment.header.window_size = if segment.header.rst { 0 } else { *window }; + } + + let mut pool = TcpReassemblyPool::<(), ()>::new(TcpReassemblyConfig { + fallback_window, + ..config + }); + let (model, ended) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &[None], + )?; + + // the received bytes are the ones that were sent, apart from the + // ones that were given up or lie before the first byte captured + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + prop_assert!(model.received_matches(role, data[i])); + } + + // in a complete capture without injected RSTs, the receiver + // accepts the endpoint's RST, unless the connection finished + // before it + let undisturbed = false == pickup + && false == one_direction + && lost.is_empty() + && injected.is_empty(); + if let (true, Some((role, _, _))) = (undisturbed, &rst) { + let end = model.end(); + let reset = TcpConnectionEnd::Reset { by: *role }; + prop_assert!(Some(TcpConnectionEnd::Finished) == end || Some(reset) == end); + } + + // an ended connection can be read to its end, stepping over the + // gaps: the FIN ends a stream whose FIN was seen, the reset the + // others + if let Some(mut connection) = ended { + prop_assert_eq!(model.end(), connection.end()); + for role in [Initiator, Responder] { + let stream = connection.stream_mut(role); + prop_assert_eq!(0, stream.holes().count()); + for _ in 0..10_000 { + match stream.read_received() { + TcpRead::Data(data) => { + let len = data.len(); + stream.consume(len); + } + TcpRead::Gap { .. } => stream.consume_gap(), + _ => break, + } + } + let end = if model.fin_offset(role).is_some() { + TcpStreamEnd::Fin + } else { + TcpStreamEnd::Reset + }; + prop_assert_eq!(TcpRead::End(end), stream.read_received()); + } + pool.recycle(connection); + } + } + + #[test] + fn reader_actions( + initiator_isn in tcp_isn_any(), + responder_isn in tcp_isn_any(), + initiator_data in stream_data_any(16 * 1024), + responder_data in stream_data_any(16 * 1024), + segment_lens in vec(1usize..2000, 1..32), + resent_lens in vec(0usize..1000, 1..32), + directions in vec(any::(), 1..64), + fins in [any::(), any::()], + lost in vec((any::(), proptest::option::of(any::())), 0..8), + acks in vec((tcp_role_any(), any::(), any::()), 0..8), + actions in vec( + proptest::option::weighted(0.3, prop_oneof![ + 3 => Just(ReaderAction::GiveUpHole), + 3 => Just(ReaderAction::ConsumeGap), + 2 => prop_oneof![0u64..64, 0u64..32 * 1024].prop_map(ReaderAction::DiscardAhead), + 1 => Just(ReaderAction::DiscardAll), + ]), + 1..32 + ), + consume_lens in vec(0usize..3000, 1..32), + acked_reads in vec(any::(), 1..32), + ) { + // write the connection with randomly cut and interleaved segments, + // followed by the FINs and their ACKs + let mut script = ConnectionScript::with_isns(initiator_isn, responder_isn); + script.handshake(); + let data = [&initiator_data[..], &responder_data[..]]; + send_interleaved(&mut script, data, &segment_lens, &resent_lens, &directions); + for role in [Initiator, Responder] { + if fins[role_index(role)] { + script.fin(role); + } + } + script.ack(Initiator).ack(Responder); + + // segments lost in the capture, or captured later + for (index, later) in &lost { + if script.segments.len() > 3 { + let i = 3 + index.index(script.segments.len() - 3); + let segment = script.segments.remove(i); + if let Some(later) = later { + let position = i + later.index(script.segments.len() - i + 1); + script.segments.insert(position, segment); + } + } + } + + // pure ACKs of random offsets (also after the bytes that were + // sent) at random positions after the handshake + for (role, position, offset) in &acks { + let sent = data[role_index(role.other())].len() + 1; + script.ack_to(*role, offset.index(2 * sent) as u64); + let ack = script.segments.pop().unwrap(); + let position = 3 + position.index(script.segments.len() - 2); + script.segments.insert(position, ack); + } + + // FINs that were not lost + let captured_fins = [Initiator, Responder].map(|role| { + script.segments.iter().any(|segment| segment.sender == role && segment.header.fin) + }); + + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let (_, mut ended) = feed_and_check( + &mut pool, + &script.segments, + &consume_lens, + &acked_reads, + &actions, + )?; + + // giving up every hole lets both streams be read to their end, a + // captured FIN ends them (an ACK of nothing gets an open + // connection from the pool, and ends it if both streams are + // finished by now) + let probe = script.injected(|script| { + script.ack_to(Responder, 0); + }); + let processed = probe.feed(&mut pool, ()); + let mut ended_by_probe = processed.ended; + let connection = match processed.active { + Some((connection, _)) => connection, + None => ended_by_probe.as_mut().or(ended.as_mut()).unwrap(), + }; + for (i, role) in [Initiator, Responder].into_iter().enumerate() { + let stream = connection.stream_mut(role); + // every step reads bytes, steps over a gap or gives up a hole + let mut drained = false; + for _ in 0..10_000 { + match stream.read_received() { + TcpRead::Data(data) => { + let len = data.len(); + stream.consume(len); + } + TcpRead::Gap { .. } => stream.consume_gap(), + TcpRead::Pending => { + if false == stream.give_up_hole() { + drained = true; + break; + } + } + TcpRead::End(_) => { + drained = true; + break; + } + } + } + prop_assert!(drained); + prop_assert_eq!(0, stream.holes().count()); + prop_assert_eq!(stream.highest_offset(), stream.read_offset()); + if captured_fins[i] { + prop_assert_eq!(Some(data[i].len() as u64), stream.fin_offset()); + prop_assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + } + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_connection.rs b/etherparse/src/tcp_reassembly/tcp_connection.rs new file mode 100644 index 00000000..d564d995 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_connection.rs @@ -0,0 +1,1184 @@ +use crate::{tcp_reassembly::*, *}; +use core::net::SocketAddr; +use std::vec::Vec; + +/// Both streams of a TCP connection, as reassembled by a +/// [`TcpReassemblyPool`]. +#[derive(Clone, Debug)] +pub struct TcpConnection { + id: TcpConnectionId, + key: TcpConnectionKey, + initiator: SocketAddr, + roles_guessed: bool, + initiator_stream: TcpStream, + responder_stream: TcpStream, + first_seen: Timestamp, + last_seen: Timestamp, + end: Option, + /// Number of packets applied to the connection. + packets: u64, +} + +impl TcpConnection { + /// Creates a connection whose initiator is the endpoint `initiator` + /// (guessed from the ports if `roles_guessed`) and whose first packet + /// was seen at `timestamp`. Its streams store their bytes in the empty + /// `buffers`. + pub(crate) fn new( + id: TcpConnectionId, + key: TcpConnectionKey, + initiator: SocketAddr, + roles_guessed: bool, + timestamp: Timestamp, + buffers: [Vec; 2], + ) -> TcpConnection + where + Timestamp: Clone, + { + let [initiator_buffer, responder_buffer] = buffers; + TcpConnection { + id, + key, + initiator, + roles_guessed, + initiator_stream: TcpStream::new(initiator_buffer), + responder_stream: TcpStream::new(responder_buffer), + first_seen: timestamp.clone(), + last_seen: timestamp, + end: None, + packets: 0, + } + } + + /// Id the pool assigned to the connection. + pub fn id(&self) -> TcpConnectionId { + self.id + } + + /// Key identifying the connection. + pub fn key(&self) -> &TcpConnectionKey { + &self.key + } + + /// Address and port of the endpoint with the given role. + pub fn endpoint(&self, role: TcpRole) -> SocketAddr { + match role { + TcpRole::Initiator => self.initiator, + TcpRole::Responder => { + let [a, b] = self.key.endpoints(); + if a == self.initiator { + b + } else { + a + } + } + } + } + + /// Returns true if the roles of the endpoints were guessed from their + /// ports, as the connection started without a SYN or SYN-ACK. + /// + /// The endpoint with the lower port is then the responder. With equal + /// ports, the sender of the connection's first packet is the initiator. + /// A late SYN or SYN-ACK that gives a stream an observed start confirms + /// the roles if it agrees with them; the roles never change. + pub fn roles_guessed(&self) -> bool { + self.roles_guessed + } + + /// Stream sent by the endpoint with the given role. + pub fn stream(&self, role: TcpRole) -> &TcpStream { + match role { + TcpRole::Initiator => &self.initiator_stream, + TcpRole::Responder => &self.responder_stream, + } + } + + /// Stream sent by the endpoint with the given role, for reading. + pub fn stream_mut(&mut self, role: TcpRole) -> &mut TcpStream { + match role { + TcpRole::Initiator => &mut self.initiator_stream, + TcpRole::Responder => &mut self.responder_stream, + } + } + + /// Timestamp of the connection's first packet. + pub fn first_seen(&self) -> &Timestamp { + &self.first_seen + } + + /// Timestamp of the connection's last packet. + pub fn last_seen(&self) -> &Timestamp { + &self.last_seen + } + + /// Reason why the connection ended, `None` while it is open. + pub fn end(&self) -> Option { + self.end + } + + /// Applies a segment sent by `source` and returns the role of the sender. + pub(crate) fn add_segment( + &mut self, + source: SocketAddr, + tcp: &TcpSlice<'_>, + timestamp: Timestamp, + config: &TcpReassemblyConfig, + ) -> TcpRole { + self.last_seen = timestamp; + self.packets = self.packets.saturating_add(1); + let sender = if source == self.initiator { + TcpRole::Initiator + } else { + TcpRole::Responder + }; + if tcp.rst() { + self.add_reset(sender, tcp, config); + } else { + self.add_data_segment(sender, tcp, config); + } + for role in [TcpRole::Initiator, TcpRole::Responder] { + let window = self + .stream(role.other()) + .advertised_window(self.stream(role)); + let packet = self.packets; + self.stream_mut(role).after_packet(window, packet, config); + } + + // finished once both FINs were ACKed and the holes left are overdue + if self.end.is_none() + && [&self.initiator_stream, &self.responder_stream] + .iter() + .all(|stream| stream.can_finish()) + { + self.end = Some(TcpConnectionEnd::Finished); + } + if let Some(end) = self.end { + let stream_end = match end { + TcpConnectionEnd::Finished => TcpStreamEnd::Fin, + TcpConnectionEnd::Reset { .. } => TcpStreamEnd::Reset, + }; + self.initiator_stream.connection_ended(stream_end); + self.responder_stream.connection_ended(stream_end); + } + sender + } + + /// Applies a segment without RST sent by `sender`. + fn add_data_segment( + &mut self, + sender: TcpRole, + tcp: &TcpSlice<'_>, + config: &TcpReassemblyConfig, + ) { + let starts = self.starts(); + // the SYN-ACK ACKs the other side's SYN, so the other stream starts + // there, even if its SYN was not seen + if tcp.syn() && tcp.ack() { + let window = self.window(sender.other(), config); + self.stream_mut(sender.other()).observe_start( + tcp.acknowledgment_number(), + window, + config, + ); + } + // the window the sender advertised before this segment limits what + // the other side could send, so the ACK is applied first + self.add_ack(sender, tcp, config); + let window = self.window(sender, config); + let packet = self.packets; + self.stream_mut(sender) + .add_segment(tcp, window, packet, config); + + // a late SYN or SYN-ACK that gave a stream an observed start + // confirms guessed roles if its sender has the role the guess gave it + if self.roles_guessed && tcp.syn() { + let syn_sender = if tcp.ack() { + TcpRole::Responder + } else { + TcpRole::Initiator + }; + if syn_sender == sender && starts != self.starts() { + self.roles_guessed = false; + } + } + } + + /// Applies an RST sent by `sender`: one that the receiver can accept + /// ends the connection, and its ACK counts. Others are ignored with + /// their ACK and window, as they don't belong to the connection (e.g. + /// injected ones). RSTs carry no bytes of the stream, and their SYN and + /// FIN flags are ignored. + fn add_reset(&mut self, sender: TcpRole, tcp: &TcpSlice<'_>, config: &TcpReassemblyConfig) { + let window = self.window(sender, config); + let seq = tcp.sequence_number(); + if self.stream_mut(sender).add_reset(seq, window) { + self.add_ack(sender, tcp, config); + self.end = Some(TcpConnectionEnd::Reset { by: sender }); + } + } + + /// Applies the ACK number of a segment sent by `sender` (if it has one) + /// to the other stream. + fn add_ack(&mut self, sender: TcpRole, tcp: &TcpSlice<'_>, config: &TcpReassemblyConfig) { + if tcp.ack() { + let window = self.window(sender.other(), config); + let packet = self.packets; + self.stream_mut(sender.other()) + .add_ack(tcp.acknowledgment_number(), window, packet); + } + } + + /// How the streams of the initiator and the responder started. + fn starts(&self) -> [TcpStreamStart; 2] { + [&self.initiator_stream, &self.responder_stream].map(|stream| stream.status().start) + } + + /// Receive window of the stream sent by `role`, as advertised by its + /// receiver, or the fallback window while that is unknown. + fn window(&self, role: TcpRole, config: &TcpReassemblyConfig) -> u64 { + self.stream(role.other()) + .advertised_window(self.stream(role)) + .unwrap_or(u64::from(config.fallback_window)) + } + + /// Returns the connection with its streams and leaves a tombstone + /// without buffers in its place, which keeps the key, id and timestamps. + pub(crate) fn hand_over(&mut self) -> TcpConnection + where + Timestamp: Clone, + CustomChannelId: Clone, + { + let tombstone = TcpConnection { + id: self.id, + key: self.key.clone(), + initiator: self.initiator, + roles_guessed: self.roles_guessed, + initiator_stream: TcpStream::new(Vec::new()), + responder_stream: TcpStream::new(Vec::new()), + first_seen: self.first_seen.clone(), + last_seen: self.last_seen.clone(), + end: self.end, + packets: self.packets, + }; + core::mem::replace(self, tombstone) + } + + /// Returns the buffers of both streams, emptied for re-use. + pub(crate) fn into_buffers(self) -> [Vec; 2] { + [ + self.initiator_stream.into_buffer(), + self.responder_stream.into_buffer(), + ] + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::tcp_reassembly::TcpRole::*; + use std::format; + + #[test] + fn derived_traits() { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + + // clone + { + let mut clone = connection.clone(); + assert_eq!(connection.id(), clone.id()); + assert_eq!(connection.key(), clone.key()); + assert_eq!(connection.endpoint(Initiator), clone.endpoint(Initiator)); + assert_eq!(connection.first_seen(), clone.first_seen()); + assert_eq!(connection.last_seen(), clone.last_seen()); + assert_eq!( + TcpRead::Data(b"abc"), + clone.stream_mut(Initiator).read_received() + ); + } + + // debug + assert!(format!("{:?}", connection).starts_with(&format!( + "TcpConnection {{ id: TcpConnectionId(0), key: {:?}, ", + connection.key() + ))); + } + + #[test] + fn id() { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + for (i, port) in [50000, 50001, 50002].into_iter().enumerate() { + let mut script = ConnectionScript::new( + addr(&format!("10.0.0.1:{}", port)), + addr("10.0.0.2:80"), + 1000, + 2000, + ); + script.handshake(); + for segment in &script.segments { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(TcpConnectionId(i as u64), connection.id()); + } + } + } + + #[test] + fn key() { + let mut pool = TcpReassemblyPool::<(), u8>::default(); + let mut script = ConnectionScript::new(addr("[::2]:443"), addr("[::1]:50000"), 1000, 2000) + .with_channel_id(7u8); + script.vlan_ids.push(VlanId::try_new(3).unwrap()); + script.handshake(); + let expected = TcpConnectionKey::new( + script.vlan_ids.clone(), + addr("[::1]:50000"), + addr("[::2]:443"), + 7u8, + ); + for segment in &script.segments { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(&expected, connection.key()); + } + } + + #[test] + fn endpoint() { + let cases = [ + // initiator is the lower endpoint + (addr("10.0.0.1:50000"), addr("10.0.0.2:80")), + // initiator is the higher endpoint + (addr("10.0.0.3:50000"), addr("10.0.0.2:80")), + // connection to itself + (addr("10.0.0.1:50000"), addr("10.0.0.1:50000")), + ]; + for (initiator, responder) in cases { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::new(initiator, responder, 1000, 2000); + script.handshake(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(initiator, connection.endpoint(Initiator)); + assert_eq!(responder, connection.endpoint(Responder)); + } + } + + #[test] + fn roles_guessed() { + // a SYN or SYN-ACK starts the connection: the roles are known + for first in [0, 1] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + let (connection, _) = script.feed(&mut pool, first..).active.unwrap(); + assert!(false == connection.roles_guessed()); + } + + // bytes start the connection: the endpoint with the lower port is + // the responder, with equal ports the sender is the initiator + for (initiator, responder, first_sender, guessed_initiator) in [ + // first bytes from the initiator, with the higher port + ("10.0.0.1:50000", "10.0.0.2:80", Initiator, "10.0.0.1:50000"), + // first bytes from the responder, with the lower port + ("10.0.0.1:50000", "10.0.0.2:80", Responder, "10.0.0.1:50000"), + // the initiator has the lower port, so the guess is wrong + ("10.0.0.1:80", "10.0.0.2:50000", Initiator, "10.0.0.2:50000"), + // equal ports + ("10.0.0.1:80", "10.0.0.2:80", Initiator, "10.0.0.1:80"), + ("10.0.0.1:80", "10.0.0.2:80", Responder, "10.0.0.2:80"), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::new(addr(initiator), addr(responder), 1000, 2000); + script + .handshake() + .send(first_sender, b"abc") + .send(first_sender.other(), b"def"); + let (connection, _) = script.feed(&mut pool, 3..).active.unwrap(); + assert!(connection.roles_guessed()); + assert_eq!(addr(guessed_initiator), connection.endpoint(Initiator)); + // the streams belong to the guessed roles + for (sender, data) in [(first_sender, b"abc"), (first_sender.other(), b"def")] { + let role = if script.endpoint(sender) == addr(guessed_initiator) { + Initiator + } else { + Responder + }; + assert_eq!( + TcpRead::Data(data), + connection.stream_mut(role).read_received() + ); + } + } + + // a late SYN or SYN-ACK that gives a stream an observed start + // confirms guessed roles if it agrees with them + for (late, initiator, responder, guessed) in [ + // SYN of the guessed initiator + (0, "10.0.0.1:50000", "10.0.0.2:80", false), + // SYN-ACK of the guessed responder + (1, "10.0.0.1:50000", "10.0.0.2:80", false), + // SYN of the guessed responder + (0, "10.0.0.1:80", "10.0.0.2:50000", true), + // SYN-ACK of the guessed initiator + (1, "10.0.0.1:80", "10.0.0.2:50000", true), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::new(addr(initiator), addr(responder), 1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + let late = script.segments[late].clone(); + script.segments.drain(..3); + script.segments.push(late); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(guessed, connection.roles_guessed()); + } + + // ... but not if it gives no stream an observed start, as the + // streams were read from + for late in [0, 1] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + let late = script.segments[late].clone(); + script.segments.drain(..3); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + for role in [Initiator, Responder] { + let stream = connection.stream_mut(role); + stream.read_received(); + stream.consume(1); + } + } + let (connection, _) = late.feed(&mut pool, ()).active.unwrap(); + assert!(connection.roles_guessed()); + } + } + + #[test] + fn stream() { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"defgh"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + connection.stream_mut(Initiator).read_received(); + connection.stream_mut(Initiator).consume(3); + connection.stream_mut(Responder).read_received(); + connection.stream_mut(Responder).consume(5); + assert_eq!(3, connection.stream(Initiator).read_offset()); + assert_eq!(5, connection.stream(Responder).read_offset()); + } + + #[test] + fn stream_mut() { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_received() + ); + assert_eq!( + TcpRead::Data(b"def"), + connection.stream_mut(Responder).read_received() + ); + } + + #[test] + fn first_seen() { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + for (i, segment) in script.segments.iter().enumerate() { + let (connection, _) = segment.feed(&mut pool, 10 + i as u32).active.unwrap(); + assert_eq!(&10, connection.first_seen()); + } + } + + #[test] + fn last_seen() { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + // a retransmission updates it too, and so does an RST outside of the + // receiver's window + let retransmission = script.segments[3].clone(); + script.segments.push(retransmission); + script.rst_at(Responder, 1 << 30); + for (i, segment) in script.segments.iter().enumerate() { + let (connection, _) = segment.feed(&mut pool, 10 + i as u32).active.unwrap(); + assert_eq!(&(10 + i as u32), connection.last_seen()); + } + } + + #[test] + fn end() { + // open connection + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.end()); + } + + // every order of the FINs finishes the connection with the last ACK + let closes: [fn(&mut ConnectionScript); 4] = [ + // initiator first + |script| { + script.fin(Initiator).fin(Responder).ack(Initiator); + }, + // initiator first, ACKed before the responder's FIN + |script| { + script + .fin(Initiator) + .ack(Responder) + .fin(Responder) + .ack(Initiator); + }, + // responder first + |script| { + script.fin(Responder).fin(Initiator).ack(Responder); + }, + // simultaneous + |script| { + script.simultaneous_fins().ack(Initiator).ack(Responder); + }, + ]; + for close in closes { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + close(&mut script); + let (last, rest) = script.segments.split_last().unwrap(); + for segment in rest { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(None, connection.end()); + } + let connection = last.feed(&mut pool, ()).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // without the last ACK the connection stays open, although both + // streams are finished + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.end()); + assert!(connection.stream(Initiator).is_finished()); + assert!(connection.stream(Responder).is_finished()); + } + + // an ACK of the bytes before the FIN doesn't ACK the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Responder, b"abc") + .fin(Initiator) + .fin(Responder) + .ack(Initiator); + let ack_number = script.seq(Responder, 3); + script + .segments + .last_mut() + .unwrap() + .header + .acknowledgment_number = ack_number; + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.end()); + } + + // an ACK more than one window after the FIN doesn't ACK it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder) + .ack(Initiator); + script.segments[5].header.acknowledgment_number = script.seq(Initiator, 105); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.end()); + } + script.ack_to(Responder, 104); + let connection = script.feed(&mut pool, 7..).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // both FINs are ACKed, but bytes before a FIN were not captured: the + // next segment after the hole was given up finishes the connection + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder) + .ack(Initiator) + .ack(Initiator); + script.segments.remove(3); + { + let (connection, _) = script.feed(&mut pool, ..6).active.unwrap(); + assert!(connection.stream_mut(Initiator).give_up_hole()); + assert_eq!(None, connection.end()); + } + let connection = script.feed(&mut pool, 6..).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // the ACK of a FIN arrives before the FIN, and its position was + // given up before the FIN arrived + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Responder, b"abc") + .fin(Initiator) + .fin(Responder) + .ack(Initiator); + let fin = script.segments.remove(5); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Responder); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + stream.consume_gap(); + } + let connection = fin.feed(&mut pool, ()).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // the ACK of a FIN arrives before the FIN (reordered capture) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Responder, b"abc") + .fin(Initiator) + .fin(Responder) + .ack(Initiator); + let ack = script.segments.pop().unwrap(); + script.segments.insert(5, ack); + let connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // an injected FIN after the receiver's window doesn't keep the real + // FIN from finishing the connection (regression test, the old + // tcp-reassembly branch accepted it) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let injected = script.injected(|s| { + s.fin_at(Initiator, 1 << 20, &[]); + }); + script.segments.push(injected); + script.fin(Initiator).fin(Responder).ack(Initiator); + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + let stream = connection.stream_mut(Initiator); + assert_eq!(Some(3), stream.fin_offset()); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // both FINs are ACKed, but bytes before a FIN are missing (with and + // without bytes in the FIN) + for fin_data in [&b""[..], b"gh"] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin_with_data(Initiator, fin_data) + .fin(Responder) + .ack(Initiator); + let missing = script.segments.remove(4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.end()); + } + let mut connection = missing.feed(&mut pool, ()).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + assert_eq!( + TcpRead::Data(&[&b"abcdef"[..], fin_data].concat()[..]), + connection.stream_mut(Initiator).read_received() + ); + } + + // both FINs are ACKed and the hole left before a FIN is overdue (the + // ACK of the FIN covered it for the ACK reorder tolerance): the + // connection finishes and hands the hole over as a counted gap + { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator) + .fin(Responder) + .ack(Initiator) + .ack(Initiator); + script.segments.remove(4); + { + let (connection, _) = script.feed(&mut pool, ..7).active.unwrap(); + assert_eq!(None, connection.end()); + } + let mut connection = script.feed(&mut pool, 7..).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + let stream = connection.stream_mut(Initiator); + assert!(stream.is_finished()); + assert_eq!(0, stream.holes().count()); + assert_eq!((1, 3), (stream.status().gaps, stream.status().gap_bytes)); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // a hole is overdue once the ACK of N packets ago reaches its end, + // in the streams of both roles + for (sender, receiver) in [(Initiator, Responder), (Responder, Initiator)] { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(sender, b"abc") + .send(sender, b"def") + .send(sender, b"ghi") + .send(sender, b"jkl") + .fin_with_data(sender, b"mno") + .ack_to(receiver, 12) + .fin(receiver) + .ack(sender); + script.segments.remove(6); + script.segments.remove(4); + { + let (connection, _) = script.feed(&mut pool, ..8).active.unwrap(); + assert_eq!(None, connection.end()); + } + let connection = script.feed(&mut pool, 8..).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + let status = connection.stream(sender).status(); + assert_eq!((2, 6), (status.gaps, status.gap_bytes)); + } + + // a connection picked up in the middle finishes too, also if one + // side sent nothing but its FIN + for initiator_data in [&b"abc"[..], b""] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"lost") + .send(Responder, b"def") + .send(Initiator, initiator_data) + .fin(Responder) + .fin(Initiator) + .ack(Responder); + script.segments.drain(..4); + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + let stream = connection.stream_mut(Initiator); + assert_eq!(Some(initiator_data.len() as u64), stream.fin_offset()); + assert!(stream.is_finished()); + } + + // ... and also if the ACK of the FIN of the side that sent nothing + // else arrives before that FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"lost") + .send(Responder, b"def") + .fin(Responder) + .fin(Initiator) + .ack(Responder); + script.segments.drain(..4); + script.segments.swap(2, 3); + let connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // a connection finishes after a jump right before a FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .fin_at(Initiator, 1000, b"xyz") + .fin(Responder) + .ack(Initiator); + let connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + assert_eq!(1, connection.stream(Initiator).status().resyncs); + } + + // all holes left have to be overdue, not only the first one + { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .send(Initiator, b"jkl") + .fin_with_data(Initiator, b"mno") + // the first hole is overdue two packets later + .ack_to(Responder, 6) + .ack(Initiator) + .ack(Initiator) + // the second hole is overdue two packets later + .fin(Responder) + .ack(Initiator) + .ack(Initiator); + script.segments.remove(6); + script.segments.remove(4); + { + let (connection, _) = script.feed(&mut pool, ..11).active.unwrap(); + assert_eq!(None, connection.end()); + } + let connection = script.feed(&mut pool, 11..).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // an RST at the sender's next byte resets the connection, sent by + // either side + for sender in [Initiator, Responder] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def") + .rst(sender); + { + let (connection, _) = script.feed(&mut pool, ..5).active.unwrap(); + assert_eq!(None, connection.end()); + } + let connection = script.feed(&mut pool, 5..).ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: sender }), + connection.end() + ); + } + + // an injected RST after the receiver's window is counted, but + // doesn't end the connection (regression test, the old + // tcp-reassembly branch accepted it) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + let injected = script.injected(|s| { + s.rst_at(Initiator, 1 << 20); + }); + script.segments.push(injected); + { + let (connection, sender) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Initiator, sender); + assert_eq!(None, connection.end()); + let status = connection.stream(Initiator).status(); + assert_eq!(1, status.out_of_window_segments); + } + script.fin(Initiator).fin(Responder).ack(Initiator); + let connection = script.feed(&mut pool, 5..).ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + } + + // the receiver accepts an RST from its ACK up to one window after + // the bytes sent (and the FIN), also with a window of 0 + for (window, fin, offset, reset) in [ + // before the ACK + (100, false, 3, false), + // at the ACK + (100, false, 4, true), + // up to one window after the bytes sent + (100, false, 110, true), + (100, false, 111, false), + // ... and after the FIN + (100, true, 111, true), + (100, true, 112, false), + // window of 0 + (0, false, 3, false), + (0, false, 4, true), + (0, false, 10, true), + (0, false, 11, false), + (0, true, 11, true), + (0, true, 12, false), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"0123456789"); + if fin { + script.fin(Initiator); + } + script.window_size = window; + script.ack_to(Responder, 4); + let rst = script.injected(|s| { + s.rst_at(Initiator, offset); + }); + script.segments.push(rst); + let processed = script.feed_all(&mut pool); + if reset { + let connection = processed.ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Initiator }), + connection.end() + ); + } else { + let (connection, _) = processed.active.unwrap(); + assert_eq!(None, connection.end()); + let status = connection.stream(Initiator).status(); + assert_eq!(1, status.out_of_window_segments); + } + } + + // an RST 2^31 away from the bytes sent, or before the stream's first + // byte, is not accepted + for seq in [1001u32.wrapping_add(1 << 31), 1000] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + let mut rst = script.injected(|s| { + s.rst(Initiator); + }); + rst.header.sequence_number = seq; + script.segments.push(rst); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.end()); + let status = connection.stream(Initiator).status(); + assert_eq!(1, status.out_of_window_segments); + } + + // an RST of a stream without a start is accepted from the other + // side's ACK of the stream up to one window after it (the + // initiator's stream was not captured, the responder ACKs 10 bytes + // of it) + for (offset, reset) in [(9, false), (10, true), (110, true), (111, false)] { + let config = TcpReassemblyConfig { + fallback_window: 100, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"0123456789") + .send(Responder, b"abc") + .ack(Initiator) + .rst_at(Initiator, offset); + script.segments.drain(..4); + let processed = script.feed_all(&mut pool); + if reset { + let connection = processed.ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Initiator }), + connection.end() + ); + } else { + let (connection, _) = processed.active.unwrap(); + assert_eq!(None, connection.end()); + let status = connection.stream(Initiator).status(); + assert_eq!(1, status.out_of_window_segments); + } + } + + // ... and at any sequence number without such an ACK + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"0123456789") + .send(Responder, b"abc") + .rst_at(Initiator, 1 << 30); + script.segments.drain(..4); + script.segments[0].header.ack = false; + let connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Initiator }), + connection.end() + ); + } + + // an RST with bytes, a SYN or a FIN resets the connection too, + // without storing its bytes or its FIN + for (payload, syn, fin) in [ + (&b"xyz"[..], false, false), + (b"", true, false), + (b"", false, true), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let mut rst = script.injected(|s| { + s.send(Initiator, payload); + }); + rst.header.rst = true; + rst.header.syn = syn; + rst.header.fin = fin; + script.segments.push(rst); + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Initiator }), + connection.end() + ); + let stream = connection.stream_mut(Initiator); + assert_eq!(None, stream.fin_offset()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::End(TcpStreamEnd::Reset), stream.read_received()); + } + + // an RST whose ACK ACKs the last FIN resets the connection, it + // doesn't finish it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder) + .rst(Initiator); + let connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Initiator }), + connection.end() + ); + } + + // an ACK doesn't keep an RST at or after the received bytes from + // resetting the connection, as a forged ACK could (also once a FIN + // cut the hole that ACK left, with a window of 0), but RSTs before + // the received bytes stay ignored + for (fin, window, offset, reset) in [ + (false, 100, 3, true), + (false, 100, 2, false), + (true, 0, 4, true), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + let mut forged = script.injected(|s| { + s.ack_to(Responder, 10); + }); + forged.header.window_size = window; + script.segments.push(forged); + if fin { + script.fin(Initiator); + } + let rst = script.injected(|s| { + s.rst_at(Initiator, offset); + }); + script.segments.push(rst); + let processed = script.feed_all(&mut pool); + assert_eq!(reset, processed.ended.is_some()); + } + + // a pickup accepts an RST at the receiver's ACK before its first + // byte, which is kept until bytes can't be prepended anymore (the + // capture starts at the initiator's byte 5, the responder ACKs 3) + for (offset, reset) in [(3, true), (2, false)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"01234") + .send(Initiator, b"56789") + .ack_to(Responder, 3) + .rst_at(Initiator, offset); + script.segments.drain(..4); + let processed = script.feed_all(&mut pool); + assert_eq!(reset, processed.ended.is_some()); + } + + // RSTs before the point a stream resynced at are ignored, also + // without an ACK of the jump + for (offset, reset) in [(998, false), (1000, true)] { + let config = TcpReassemblyConfig { + resync_after_segments: Some(1), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .rst_at(Initiator, offset); + let processed = script.feed_all(&mut pool); + assert_eq!(reset, processed.ended.is_some()); + } + + // an RST from a direction never seen resets the connection, e.g. + // the answer to a SYN on a closed port + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn().rst(Responder); + let connection = script.feed_all(&mut pool).ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Responder }), + connection.end() + ); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_connection_end.rs b/etherparse/src/tcp_reassembly/tcp_connection_end.rs new file mode 100644 index 00000000..24ea5e78 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_connection_end.rs @@ -0,0 +1,76 @@ +use crate::tcp_reassembly::*; + +/// Reason why a [`crate::tcp_reassembly::TcpConnection`] ended. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub enum TcpConnectionEnd { + /// Both endpoints sent a FIN, and both FINs were ACKed. + Finished, + + /// An endpoint reset the connection with an RST. + /// + /// Only RSTs that the receiver can accept count: their sequence number + /// lies from the receiver's ACK up to one receive window after the bytes + /// sent (RFC 9293). Other RSTs, e.g. blindly injected ones, are ignored + /// and counted in + /// [`crate::tcp_reassembly::TcpStreamStatus::out_of_window_segments`] + /// of the sender's stream. + Reset { + /// Role of the endpoint that sent the RST. + by: TcpRole, + }, +} + +#[cfg(test)] +mod test { + use super::*; + use core::hash::{Hash, Hasher}; + use std::format; + + #[test] + fn derived_traits() { + // copy & clone + { + let a = TcpConnectionEnd::Reset { + by: TcpRole::Responder, + }; + let b = a; + assert_eq!(a, b); + assert_eq!(a.clone(), a); + assert_ne!(TcpConnectionEnd::Finished, a); + assert_ne!( + TcpConnectionEnd::Reset { + by: TcpRole::Initiator + }, + a + ); + } + + // debug + { + assert_eq!("Finished", format!("{:?}", TcpConnectionEnd::Finished)); + assert_eq!( + "Reset { by: Initiator }", + format!( + "{:?}", + TcpConnectionEnd::Reset { + by: TcpRole::Initiator + } + ) + ); + } + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |end: TcpConnectionEnd| { + let mut hasher = DefaultHasher::new(); + end.hash(&mut hasher); + hasher.finish() + }; + assert_eq!( + hash(TcpConnectionEnd::Finished), + hash(TcpConnectionEnd::Finished) + ); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_connection_id.rs b/etherparse/src/tcp_reassembly/tcp_connection_id.rs new file mode 100644 index 00000000..4befd65c --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_connection_id.rs @@ -0,0 +1,55 @@ +/// Number that a [`crate::tcp_reassembly::TcpReassemblyPool`] assigns to +/// each connection. +/// +/// The pool numbers its connections from 0 in the order they were created, +/// so a reconnect gets a different id than the connection it replaces. +#[derive(Copy, Clone, Default, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +pub struct TcpConnectionId(pub u64); + +#[cfg(test)] +mod test { + use super::*; + use crate::test_gens::*; + use core::hash::{Hash, Hasher}; + use proptest::prelude::*; + use std::format; + + proptest! { + #[test] + fn derived_traits( + a in tcp_connection_id_any(), + b in tcp_connection_id_any(), + ) { + // copy & clone + { + let copy = a; + assert_eq!(a, copy); + assert_eq!(a.clone(), a); + } + + // default + { + let actual: TcpConnectionId = Default::default(); + assert_eq!(TcpConnectionId(0), actual); + } + + // debug + assert_eq!(format!("TcpConnectionId({})", a.0), format!("{:?}", a)); + + // ord & partial ord + assert_eq!(a.0.cmp(&b.0), a.cmp(&b)); + assert_eq!(a.0.partial_cmp(&b.0), a.partial_cmp(&b)); + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |id: TcpConnectionId| { + let mut hasher = DefaultHasher::new(); + id.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(a), hash(a.clone())); + } + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_connection_key.rs b/etherparse/src/tcp_reassembly/tcp_connection_key.rs new file mode 100644 index 00000000..bfc36370 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_connection_key.rs @@ -0,0 +1,177 @@ +use crate::*; +use arrayvec::ArrayVec; +use core::net::SocketAddr; + +/// Values identifying a TCP connection, the same for both directions. +/// +/// The key consists of the VLAN IDs, both endpoints and a user-defined +/// channel id, which can separate packets the protocol headers alone cannot +/// tell apart (e.g. the capture interface or a tunnel). The endpoints are +/// sorted, so both directions of a connection get the same key: +/// +/// ``` +/// use etherparse::tcp_reassembly::TcpConnectionKey; +/// use std::net::SocketAddr; +/// +/// let initiator: SocketAddr = "192.168.1.2:50000".parse().unwrap(); +/// let responder: SocketAddr = "10.0.0.1:443".parse().unwrap(); +/// +/// let key = TcpConnectionKey::new(Default::default(), initiator, responder, ()); +/// assert_eq!( +/// key, +/// TcpConnectionKey::new(Default::default(), responder, initiator, ()) +/// ); +/// assert_eq!(key.endpoints(), [responder, initiator]); +/// ``` +#[derive(Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)] +pub struct TcpConnectionKey { + vlan_ids: ArrayVec, + endpoints: [SocketAddr; 2], + channel_id: CustomChannelId, +} + +impl TcpConnectionKey { + /// Creates a key from the VLAN IDs, the two endpoints (in any order) and + /// the channel id. + pub fn new( + vlan_ids: ArrayVec, + a: SocketAddr, + b: SocketAddr, + channel_id: CustomChannelId, + ) -> TcpConnectionKey { + TcpConnectionKey { + vlan_ids, + endpoints: if a <= b { [a, b] } else { [b, a] }, + channel_id, + } + } + + /// VLAN IDs of the connection's packets. + pub fn vlan_ids(&self) -> &[VlanId] { + &self.vlan_ids + } + + /// Both endpoints of the connection, the lower one first. + pub fn endpoints(&self) -> [SocketAddr; 2] { + self.endpoints + } + + /// User-defined channel id of the connection. + pub fn channel_id(&self) -> &CustomChannelId { + &self.channel_id + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::test_gens::*; + use core::hash::{Hash, Hasher}; + use proptest::prelude::*; + use std::{collections::hash_map::DefaultHasher, format}; + + fn hash(value: &T) -> u64 { + let mut hasher = DefaultHasher::new(); + value.hash(&mut hasher); + hasher.finish() + } + + proptest! { + #[test] + fn derived_traits(key in tcp_connection_key_any()) { + // clone & eq + assert_eq!(key.clone(), key); + + // debug + assert_eq!( + format!( + "TcpConnectionKey {{ vlan_ids: {:?}, endpoints: {:?}, channel_id: {:?} }}", + key.vlan_ids(), + key.endpoints(), + key.channel_id() + ), + format!("{:?}", key) + ); + + // ord & partial ord (vlan ids are compared first) + { + use core::cmp::Ordering; + assert_eq!(Ordering::Equal, key.cmp(&key.clone())); + assert_eq!(Some(Ordering::Equal), key.partial_cmp(&key.clone())); + + if key.vlan_ids().len() < 3 { + let mut more_vlan_ids: ArrayVec = + key.vlan_ids().iter().copied().collect(); + more_vlan_ids.push(VlanId::ZERO); + let [a, b] = key.endpoints(); + let bigger = TcpConnectionKey::new(more_vlan_ids, a, b, *key.channel_id()); + assert_eq!(Ordering::Less, key.cmp(&bigger)); + } + } + + // hash + assert_eq!(hash(&key), hash(&key.clone())); + } + } + + proptest! { + #[test] + fn new( + vlan_ids in vlan_ids_any(), + a in socket_addr_any(), + b in socket_addr_any(), + channel_id in any::(), + ) { + let ab = TcpConnectionKey::new(vlan_ids.clone(), a, b, channel_id); + let ba = TcpConnectionKey::new(vlan_ids.clone(), b, a, channel_id); + + // both orders give the same key + assert_eq!(ab, ba); + assert_eq!(hash(&ab), hash(&ba)); + + // the endpoints are sorted, the lower one first + assert_eq!(ab.endpoints(), [a.min(b), a.max(b)]); + assert_eq!(ab.vlan_ids(), &vlan_ids[..]); + assert_eq!(ab.channel_id(), &channel_id); + } + } + + proptest! { + #[test] + fn vlan_ids( + vlan_ids in vlan_ids_any(), + a in socket_addr_any(), + b in socket_addr_any(), + ) { + let key = TcpConnectionKey::new(vlan_ids.clone(), a, b, ()); + assert_eq!(key.vlan_ids(), &vlan_ids[..]); + } + } + + proptest! { + #[test] + fn endpoints( + a in socket_addr_any(), + b in socket_addr_any(), + ) { + let key = TcpConnectionKey::new(Default::default(), a, b, ()); + if a <= b { + assert_eq!(key.endpoints(), [a, b]); + } else { + assert_eq!(key.endpoints(), [b, a]); + } + } + } + + proptest! { + #[test] + fn channel_id( + a in socket_addr_any(), + b in socket_addr_any(), + channel_id in any::(), + ) { + let key = TcpConnectionKey::new(Default::default(), a, b, channel_id); + assert_eq!(key.channel_id(), &channel_id); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_ignore_reason.rs b/etherparse/src/tcp_reassembly/tcp_ignore_reason.rs new file mode 100644 index 00000000..bbf32672 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_ignore_reason.rs @@ -0,0 +1,52 @@ +/// Reason why a [`crate::tcp_reassembly::TcpReassemblyPool`] applied a +/// packet to no connection. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub enum TcpIgnoreReason { + /// The packet belongs to no known connection and does not start one. + NoConnection, + + /// The packet belongs to a connection that already ended. + AfterEnd, +} + +#[cfg(test)] +mod test { + use super::*; + use core::hash::{Hash, Hasher}; + use std::format; + + #[test] + fn derived_traits() { + // copy & clone + { + let a = TcpIgnoreReason::NoConnection; + let b = a; + assert_eq!(a, b); + assert_eq!(a.clone(), a); + assert_ne!(TcpIgnoreReason::AfterEnd, a); + } + + // debug + { + assert_eq!( + "NoConnection", + format!("{:?}", TcpIgnoreReason::NoConnection) + ); + assert_eq!("AfterEnd", format!("{:?}", TcpIgnoreReason::AfterEnd)); + } + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |reason: TcpIgnoreReason| { + let mut hasher = DefaultHasher::new(); + reason.hash(&mut hasher); + hasher.finish() + }; + assert_eq!( + hash(TcpIgnoreReason::NoConnection), + hash(TcpIgnoreReason::NoConnection) + ); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_processed.rs b/etherparse/src/tcp_reassembly/tcp_processed.rs new file mode 100644 index 00000000..616fd456 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_processed.rs @@ -0,0 +1,37 @@ +use crate::tcp_reassembly::*; + +/// Result of passing a packet to a [`TcpReassemblyPool`]. +#[derive(Debug)] +pub struct TcpProcessed<'a, Timestamp = (), CustomChannelId = ()> { + /// Connection the segment was applied to, together with the role of the + /// segment's sender. + pub active: Option<(&'a mut TcpConnection, TcpRole)>, + + /// Connection ended by the packet, handed over with its remaining bytes. + /// + /// Pass it to [`TcpReassemblyPool::recycle`] once you are done with it, + /// so that its buffers are re-used. + pub ended: Option>, + + /// Reason why the packet was applied to no connection. + pub ignored: Option, +} + +#[cfg(test)] +mod test { + use super::*; + use std::format; + + #[test] + fn debug() { + let processed = TcpProcessed::<(), ()> { + active: None, + ended: None, + ignored: Some(TcpIgnoreReason::NoConnection), + }; + assert_eq!( + "TcpProcessed { active: None, ended: None, ignored: Some(NoConnection) }", + format!("{:?}", processed) + ); + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_read.rs b/etherparse/src/tcp_reassembly/tcp_read.rs new file mode 100644 index 00000000..a92dd776 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_read.rs @@ -0,0 +1,72 @@ +use crate::tcp_reassembly::*; + +/// Result of reading from a [`crate::tcp_reassembly::TcpStream`]. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub enum TcpRead<'a> { + /// Contiguous bytes starting at the read position. + Data(&'a [u8]), + + /// Bytes at the read position are missing and will never be delivered. + /// + /// Call [`crate::tcp_reassembly::TcpStream::consume_gap`] to continue + /// with the bytes after the gap. + Gap { + /// Number of missing bytes, `None` if it is unknown because the + /// sequence numbers jumped (see + /// [`crate::tcp_reassembly::TcpStreamStatus::resyncs`]). + len: Option, + }, + + /// Nothing is readable yet, but more bytes can still arrive. + Pending, + + /// Everything was read and no more bytes can arrive. + End(TcpStreamEnd), +} + +#[cfg(test)] +mod test { + use super::*; + use core::hash::{Hash, Hasher}; + use std::format; + + #[test] + fn derived_traits() { + // copy & clone + { + let a = TcpRead::Data(&[1, 2]); + let b = a; + assert_eq!(a, b); + assert_eq!(a.clone(), a); + assert_ne!(TcpRead::Gap { len: Some(2) }, a); + assert_ne!(TcpRead::Pending, a); + assert_ne!(TcpRead::End(TcpStreamEnd::Fin), a); + } + + // debug + { + assert_eq!("Data([1, 2])", format!("{:?}", TcpRead::Data(&[1, 2]))); + assert_eq!( + "Gap { len: Some(2) }", + format!("{:?}", TcpRead::Gap { len: Some(2) }) + ); + assert_eq!( + "Gap { len: None }", + format!("{:?}", TcpRead::Gap { len: None }) + ); + assert_eq!("Pending", format!("{:?}", TcpRead::Pending)); + assert_eq!("End(Fin)", format!("{:?}", TcpRead::End(TcpStreamEnd::Fin))); + } + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |read: TcpRead| { + let mut hasher = DefaultHasher::new(); + read.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(TcpRead::Data(&[1, 2])), hash(TcpRead::Data(&[1, 2]))); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_reassembly_config.rs b/etherparse/src/tcp_reassembly/tcp_reassembly_config.rs new file mode 100644 index 00000000..6c34dbeb --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_reassembly_config.rs @@ -0,0 +1,176 @@ +/// Configuration of a [`crate::tcp_reassembly::TcpReassemblyPool`]. +/// +/// Start from the defaults and change what you need: +/// +/// ``` +/// use etherparse::tcp_reassembly::TcpReassemblyConfig; +/// +/// let config = TcpReassemblyConfig { +/// max_stream_buffer: 1024 * 1024, +/// max_connections: Some(10_000), +/// ..Default::default() +/// }; +/// ``` +#[derive(Clone, Debug, Eq, PartialEq, Hash)] +pub struct TcpReassemblyConfig { + /// Maximum number of bytes a stream buffers, counted from its read + /// position to its furthest buffered byte (default 8 MiB). + /// + /// Bytes beyond it are rejected. + pub max_stream_buffer: usize, + + /// Maximum number of holes per stream (default 256). + /// + /// A segment that would create more holes is rejected. + pub max_holes_per_stream: usize, + + /// Number of receiver windows of later data after which a hole is + /// overdue, counting the largest window the receiver advertised + /// (default `Some(2)`). + /// + /// The receiver must have acknowledged the missing bytes by then. An + /// overdue hole is given up once the read position reaches it, and late + /// segments fill it until then. `None` switches this off. + /// + /// The same number of windows limits how far after the furthest received + /// or ACKed byte new bytes are accepted, and how far before the first + /// byte of a mid-stream pickup earlier bytes are put in front (2 windows + /// with `None`). + pub hole_give_up_window_factor: Option, + + /// Receiver window in bytes that is assumed whenever the real one is + /// unknown (default 4 MiB). + /// + /// This is the case if the handshake or the receiver's packets were not + /// captured. + pub fallback_window: u32, + + /// Number of further packets of a connection after which a hole that an + /// ACK covers is overdue (default 16). + /// + /// This tolerates captures in which the ACK arrives before the bytes it + /// ACKs, e.g. when both directions were captured separately and merged. + /// An overdue hole is given up once the read position reaches it, and + /// late segments fill it until then. While a stream has holes, or is a + /// mid-stream pickup that was not read from yet, it keeps the ACKs of + /// up to this many packets. + pub ack_reorder_tolerance: u32, + + /// Number of consecutive segments after the receiver's window, each + /// within one window of the one before it, after which a stream + /// continues at the last of them, even without an ACK confirming the + /// jump (default `None`, off). + /// + /// Useful for captures that contain only one direction. `Some(0)` works + /// like `Some(1)`. + pub resync_after_segments: Option, + + /// Maximum number of connections in the pool (default `None`, no limit). + /// + /// Ended connections whose late packets are still absorbed count + /// towards it. + pub max_connections: Option, + + /// Maximum number of bytes buffered by all streams of the pool together + /// (default `None`, no limit). + pub max_total_buffered: Option, + + /// Maximum number of unused buffers per kind that the pool keeps for + /// re-use (default 64). + pub max_pooled_buffers: usize, + + /// Capacity in bytes that buffers are shrunk to when the pool keeps them + /// for re-use (default 64 KiB). + pub max_pooled_buffer_capacity: usize, +} + +impl Default for TcpReassemblyConfig { + fn default() -> Self { + TcpReassemblyConfig { + max_stream_buffer: 8 * 1024 * 1024, + max_holes_per_stream: 256, + hole_give_up_window_factor: Some(2), + fallback_window: 4 * 1024 * 1024, + ack_reorder_tolerance: 16, + resync_after_segments: None, + max_connections: None, + max_total_buffered: None, + max_pooled_buffers: 64, + max_pooled_buffer_capacity: 64 * 1024, + } + } +} + +#[cfg(test)] +mod test { + use super::*; + use core::hash::{Hash, Hasher}; + use std::format; + + #[test] + fn derived_traits() { + let config = TcpReassemblyConfig { + max_stream_buffer: 1, + max_holes_per_stream: 2, + hole_give_up_window_factor: Some(3), + fallback_window: 4, + ack_reorder_tolerance: 5, + resync_after_segments: Some(6), + max_connections: Some(7), + max_total_buffered: Some(8), + max_pooled_buffers: 9, + max_pooled_buffer_capacity: 10, + }; + + // clone & eq + assert_eq!(config.clone(), config); + assert_ne!(config, TcpReassemblyConfig::default()); + + // debug + assert_eq!( + "TcpReassemblyConfig { \ + max_stream_buffer: 1, \ + max_holes_per_stream: 2, \ + hole_give_up_window_factor: Some(3), \ + fallback_window: 4, \ + ack_reorder_tolerance: 5, \ + resync_after_segments: Some(6), \ + max_connections: Some(7), \ + max_total_buffered: Some(8), \ + max_pooled_buffers: 9, \ + max_pooled_buffer_capacity: 10 \ + }", + format!("{:?}", config) + ); + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |config: &TcpReassemblyConfig| { + let mut hasher = DefaultHasher::new(); + config.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(&config), hash(&config.clone())); + } + } + + #[test] + fn default() { + assert_eq!( + TcpReassemblyConfig { + max_stream_buffer: 8 * 1024 * 1024, + max_holes_per_stream: 256, + hole_give_up_window_factor: Some(2), + fallback_window: 4 * 1024 * 1024, + ack_reorder_tolerance: 16, + resync_after_segments: None, + max_connections: None, + max_total_buffered: None, + max_pooled_buffers: 64, + max_pooled_buffer_capacity: 64 * 1024, + }, + TcpReassemblyConfig::default() + ); + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_reassembly_pool.rs b/etherparse/src/tcp_reassembly/tcp_reassembly_pool.rs new file mode 100644 index 00000000..0cec65ce --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_reassembly_pool.rs @@ -0,0 +1,569 @@ +use crate::tcp_reassembly::*; +use core::net::SocketAddr; +use std::{ + collections::{hash_map::Entry, HashMap}, + vec::Vec, +}; + +/// Reassembles the byte streams of TCP connections from captured segments. +/// +/// Pass every TCP segment to the pool. It groups the segments into +/// connections and puts the bytes of each stream back in order, so they can +/// be read as one contiguous slice: +/// +/// ``` +/// use etherparse::{tcp_reassembly::*, TcpHeader, TcpSlice}; +/// use std::net::IpAddr; +/// +/// /// Passes a segment sent by `source` to the pool. +/// fn feed<'p>( +/// pool: &'p mut TcpReassemblyPool, +/// source: [u8; 4], +/// destination: [u8; 4], +/// header: &TcpHeader, +/// payload: &[u8], +/// ) -> TcpProcessed<'p, (), ()> { +/// let bytes = [&header.to_bytes()[..], payload].concat(); +/// let segment = TcpSegment { +/// vlan_ids: Default::default(), +/// source: IpAddr::from(source), +/// destination: IpAddr::from(destination), +/// channel_id: (), +/// tcp: TcpSlice::from_slice(&bytes).unwrap(), +/// }; +/// pool.process_segment(segment, ()) +/// } +/// +/// let initiator = [10, 0, 0, 1]; +/// let responder = [10, 0, 0, 2]; +/// let mut pool = TcpReassemblyPool::default(); +/// +/// // handshake +/// let mut syn = TcpHeader::new(50000, 80, 1000, 1024); +/// syn.syn = true; +/// feed(&mut pool, initiator, responder, &syn, &[]); +/// +/// let mut syn_ack = TcpHeader::new(80, 50000, 5000, 1024); +/// syn_ack.syn = true; +/// syn_ack.ack = true; +/// syn_ack.acknowledgment_number = 1001; +/// feed(&mut pool, responder, initiator, &syn_ack, &[]); +/// +/// // request of the initiator +/// let mut request = TcpHeader::new(50000, 80, 1001, 1024); +/// request.ack = true; +/// request.acknowledgment_number = 5001; +/// let processed = feed(&mut pool, initiator, responder, &request, b"GET / HTTP/1.1\r\n"); +/// +/// // read the bytes of the initiator's stream +/// let (connection, sender) = processed.active.unwrap(); +/// assert_eq!(TcpRole::Initiator, sender); +/// let stream = connection.stream_mut(sender); +/// if let TcpRead::Data(data) = stream.read_received() { +/// assert_eq!(b"GET / HTTP/1.1\r\n", data); +/// // mark the bytes as processed +/// let len = data.len(); +/// stream.consume(len); +/// } +/// assert_eq!(TcpRead::Pending, stream.read_received()); +/// ``` +#[derive(Clone, Debug)] +pub struct TcpReassemblyPool { + config: TcpReassemblyConfig, + /// Open connections, plus the tombstones of ended connections (without + /// buffers) that absorb their late segments. + connections: + HashMap, TcpConnection>, + /// Emptied buffers of recycled connections, re-used by new connections. + free_buffers: Vec>, + /// Id of the next connection. + next_id: TcpConnectionId, +} + +impl TcpReassemblyPool +where + Timestamp: Clone, + CustomChannelId: core::hash::Hash + Eq + Clone, +{ + /// Creates a pool with the given configuration. + pub fn new(config: TcpReassemblyConfig) -> TcpReassemblyPool { + TcpReassemblyPool { + config, + connections: HashMap::new(), + free_buffers: Vec::new(), + next_id: TcpConnectionId(0), + } + } + + /// Configuration of the pool. + pub fn config(&self) -> &TcpReassemblyConfig { + &self.config + } + + /// Applies a TCP segment to its connection. + /// + /// A SYN, a SYN-ACK or a segment with bytes of an unknown connection + /// starts a new one. Without a SYN or SYN-ACK, the roles of the + /// endpoints are guessed (see [`TcpConnection::roles_guessed`]). Other + /// segments of unknown connections (pure ACKs, FINs without bytes and + /// RSTs) are ignored with [`TcpIgnoreReason::NoConnection`]. + /// + /// A connection that ends, e.g. by an RST (see + /// [`TcpConnectionEnd::Reset`]), is handed over in + /// [`TcpProcessed::ended`]. Its late segments are then ignored with + /// [`TcpIgnoreReason::AfterEnd`]. + pub fn process_segment( + &mut self, + segment: TcpSegment<'_, CustomChannelId>, + timestamp: Timestamp, + ) -> TcpProcessed<'_, Timestamp, CustomChannelId> { + let tcp = segment.tcp; + let source = SocketAddr::new(segment.source, tcp.source_port()); + let destination = SocketAddr::new(segment.destination, tcp.destination_port()); + let key = TcpConnectionKey::new(segment.vlan_ids, source, destination, segment.channel_id); + + let connection = match self.connections.entry(key) { + Entry::Occupied(entry) => entry.into_mut(), + Entry::Vacant(entry) => { + // a SYN or SYN-ACK starts a connection with known roles, and + // bytes one with roles guessed from the ports (pure ACKs, + // FINs without bytes and RSTs don't start one) + let roles = if tcp.rst() { + None + } else if tcp.syn() { + // the SYN-ACK is sent by the responder + Some((if tcp.ack() { destination } else { source }, false)) + } else if false == tcp.payload().is_empty() { + // the lower port is the responder's, with equal ports the + // sender is the initiator + let initiator = if source.port() < destination.port() { + destination + } else { + source + }; + Some((initiator, true)) + } else { + None + }; + let Some((initiator, roles_guessed)) = roles else { + return TcpProcessed { + active: None, + ended: None, + ignored: Some(TcpIgnoreReason::NoConnection), + }; + }; + let id = self.next_id; + self.next_id = TcpConnectionId(id.0.wrapping_add(1)); + let key = entry.key().clone(); + let buffers = [ + self.free_buffers.pop().unwrap_or_default(), + self.free_buffers.pop().unwrap_or_default(), + ]; + entry.insert(TcpConnection::new( + id, + key, + initiator, + roles_guessed, + timestamp.clone(), + buffers, + )) + } + }; + if connection.end().is_some() { + // the tombstone of an ended connection absorbs its late segments + return TcpProcessed { + active: None, + ended: None, + ignored: Some(TcpIgnoreReason::AfterEnd), + }; + } + let sender = connection.add_segment(source, &tcp, timestamp, &self.config); + if connection.end().is_some() { + return TcpProcessed { + active: None, + ended: Some(connection.hand_over()), + ignored: None, + }; + } + TcpProcessed { + active: Some((connection, sender)), + ended: None, + ignored: None, + } + } + + /// Takes back an ended connection, so that its buffers are re-used by + /// new connections. + pub fn recycle(&mut self, connection: TcpConnection) { + self.free_buffers.extend(connection.into_buffers()); + } +} + +impl Default for TcpReassemblyPool +where + Timestamp: Clone, + CustomChannelId: core::hash::Hash + Eq + Clone, +{ + fn default() -> Self { + Self::new(TcpReassemblyConfig::default()) + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{tcp_reassembly::TcpRole::*, test_gens::*, VlanId}; + use proptest::prelude::*; + use std::{format, vec::Vec}; + + #[test] + fn derived_traits() { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + script.feed(&mut pool, ..4); + + // clone (the clone continues independently) + { + let mut clone = pool.clone(); + let (connection, _) = script.feed(&mut clone, 4..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abcdef"), + connection.stream_mut(Initiator).read_received() + ); + let (connection, _) = script.feed(&mut pool, 2..3).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_received() + ); + } + + // debug + assert!(format!("{:?}", pool).starts_with("TcpReassemblyPool { config: ")); + } + + proptest! { + #[test] + fn new(config in tcp_reassembly_config_any()) { + let pool = TcpReassemblyPool::<(), ()>::new(config.clone()); + assert_eq!(&config, pool.config()); + } + } + + #[test] + fn default() { + let pool: TcpReassemblyPool = Default::default(); + assert_eq!(&TcpReassemblyConfig::default(), pool.config()); + } + + proptest! { + #[test] + fn config(config in tcp_reassembly_config_any()) { + assert_eq!( + &config, + TcpReassemblyPool::<(), ()>::new(config.clone()).config() + ); + } + } + + #[test] + fn process_segment() { + // pure ACKs, FINs without bytes and RSTs (also with bytes or a SYN) + // of an unknown connection start no connection (regression test: + // the old tcp-reassembly branch created entries for pure ACKs) + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().fin(Initiator).fin(Responder); + let mut rsts = Vec::new(); + for (syn, payload) in [(false, &b""[..]), (false, b"x"), (true, b"")] { + let mut rst = script.injected(|s| { + s.send(Initiator, payload); + }); + rst.header.rst = true; + rst.header.syn = syn; + rsts.push(rst); + } + for segment in script.segments[2..].iter().chain(&rsts) { + let processed = segment.feed(&mut pool, 0); + assert!(processed.active.is_none()); + assert!(processed.ended.is_none()); + assert_eq!(Some(TcpIgnoreReason::NoConnection), processed.ignored); + } + } + + // bytes start a connection, with roles guessed from the ports + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Responder, b"abc"); + let processed = script.segments[3].feed(&mut pool, 7); + assert_eq!(None, processed.ignored); + let (connection, sender) = processed.active.unwrap(); + assert_eq!(Responder, sender); + assert_eq!(TcpConnectionId(0), connection.id()); + assert!(connection.roles_guessed()); + assert_eq!(addr("10.0.0.1:50000"), connection.endpoint(Initiator)); + assert_eq!(&7, connection.first_seen()); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Responder).read_received() + ); + } + + // a SYN-ACK starts a connection, its sender is the responder + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = + ConnectionScript::new(addr("10.0.0.1:50000"), addr("10.0.0.2:80"), 1000, 2000); + script.syn().syn_ack(); + let processed = script.segments[1].feed(&mut pool, 7); + assert_eq!(None, processed.ignored); + let (connection, sender) = processed.active.unwrap(); + assert_eq!(Responder, sender); + assert_eq!(TcpConnectionId(0), connection.id()); + assert!(false == connection.roles_guessed()); + assert_eq!(addr("10.0.0.1:50000"), connection.endpoint(Initiator)); + assert_eq!(addr("10.0.0.2:80"), connection.endpoint(Responder)); + assert_eq!(&7, connection.first_seen()); + } + + // a SYN starts a connection + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = + ConnectionScript::new(addr("10.0.0.1:50000"), addr("10.0.0.2:80"), 1000, 2000); + script.syn(); + let processed = script.segments[0].feed(&mut pool, 7); + assert_eq!(None, processed.ignored); + let (connection, sender) = processed.active.unwrap(); + assert_eq!(Initiator, sender); + assert_eq!(TcpConnectionId(0), connection.id()); + assert!(false == connection.roles_guessed()); + assert_eq!( + &TcpConnectionKey::new( + Default::default(), + addr("10.0.0.1:50000"), + addr("10.0.0.2:80"), + () + ), + connection.key() + ); + assert_eq!(addr("10.0.0.1:50000"), connection.endpoint(Initiator)); + assert_eq!(addr("10.0.0.2:80"), connection.endpoint(Responder)); + assert_eq!(&7, connection.first_seen()); + assert_eq!(&7, connection.last_seen()); + } + + // handshake and data in both directions + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"GET /") + .send(Responder, b"HTTP/1.1"); + for segment in &script.segments { + let processed = segment.feed(&mut pool, ()); + assert_eq!(None, processed.ignored); + let (connection, sender) = processed.active.unwrap(); + assert_eq!(segment.sender, sender); + assert_eq!(TcpConnectionId(0), connection.id()); + } + let (connection, _) = script.segments[2].feed(&mut pool, ()).active.unwrap(); + assert_eq!( + TcpRead::Data(b"GET /"), + connection.stream_mut(Initiator).read_received() + ); + assert_eq!( + TcpRead::Data(b"HTTP/1.1"), + connection.stream_mut(Responder).read_received() + ); + } + + // a connection whose FINs were both ACKed is handed over + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"GET /") + .send(Responder, b"HTTP/1.1") + .fin(Initiator) + .fin(Responder) + .ack(Initiator); + let (last, rest) = script.segments.split_last().unwrap(); + for (i, segment) in rest.iter().enumerate() { + let processed = segment.feed(&mut pool, i as u32); + assert!(processed.active.is_some()); + assert!(processed.ended.is_none()); + } + let processed = last.feed(&mut pool, 100); + assert!(processed.active.is_none()); + assert_eq!(None, processed.ignored); + let mut connection = processed.ended.unwrap(); + assert_eq!(Some(TcpConnectionEnd::Finished), connection.end()); + assert_eq!(TcpConnectionId(0), connection.id()); + assert_eq!(&0, connection.first_seen()); + assert_eq!(&100, connection.last_seen()); + for (role, data) in [(Initiator, &b"GET /"[..]), (Responder, &b"HTTP/1.1"[..])] { + let stream = connection.stream_mut(role); + assert!(stream.is_complete()); + assert_eq!(TcpRead::Data(data), stream.read_received()); + stream.consume(data.len()); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + } + + // late segments of an ended connection are ignored and start no + // new connection + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder) + .ack(Initiator) + // new bytes after the end + .send(Responder, b"def"); + script.feed(&mut pool, ..7).ended.unwrap(); + // retransmissions of every segment after the SYN + for segment in &script.segments[1..] { + let processed = segment.feed(&mut pool, ()); + assert!(processed.active.is_none()); + assert!(processed.ended.is_none()); + assert_eq!(Some(TcpIgnoreReason::AfterEnd), processed.ignored); + } + } + + // a connection reset by an RST that the receiver can accept is + // handed over with its bytes, and its late segments are ignored + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .rst(Responder) + // new bytes after the end + .send(Initiator, b"def"); + let processed = script.feed(&mut pool, ..5); + assert!(processed.active.is_none()); + assert_eq!(None, processed.ignored); + let mut connection = processed.ended.unwrap(); + assert_eq!( + Some(TcpConnectionEnd::Reset { by: Responder }), + connection.end() + ); + assert_eq!(TcpConnectionId(0), connection.id()); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_received() + ); + for segment in &script.segments[1..] { + let processed = segment.feed(&mut pool, 0); + assert!(processed.active.is_none()); + assert!(processed.ended.is_none()); + assert_eq!(Some(TcpIgnoreReason::AfterEnd), processed.ignored); + } + } + + // an RST outside of the receiver's window is applied to the + // connection without ending it + { + let mut pool = TcpReassemblyPool::::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().rst_at(Responder, 1 << 30); + let processed = script.feed_all(&mut pool); + assert!(processed.ended.is_none()); + assert_eq!(None, processed.ignored); + let (connection, sender) = processed.active.unwrap(); + assert_eq!(Responder, sender); + assert_eq!(None, connection.end()); + } + + // segments with a different key belong to a different connection + { + let mut scripts = Vec::new(); + // base + scripts.push(ConnectionScript::with_isns(1000, 2000).with_channel_id(0u8)); + // other port + scripts.push( + ConnectionScript::new(addr("10.0.0.1:50001"), addr("10.0.0.2:80"), 1000, 2000) + .with_channel_id(0u8), + ); + // other ip address + scripts.push( + ConnectionScript::new(addr("10.0.0.1:50000"), addr("10.0.0.3:80"), 1000, 2000) + .with_channel_id(0u8), + ); + // ipv6 + scripts.push( + ConnectionScript::new(addr("[::1]:50000"), addr("[::2]:80"), 1000, 2000) + .with_channel_id(0u8), + ); + // other vlan ids + scripts.push({ + let mut script = ConnectionScript::with_isns(1000, 2000).with_channel_id(0u8); + script.vlan_ids.push(VlanId::try_new(1).unwrap()); + script + }); + // other channel id + scripts.push(ConnectionScript::with_isns(1000, 2000).with_channel_id(1u8)); + + for (i, script) in scripts.iter_mut().enumerate() { + script.handshake().send(Initiator, &[i as u8]); + } + + // feed the connections interleaved + let mut pool = TcpReassemblyPool::<(), u8>::default(); + for step in 0..4 { + for (i, script) in scripts.iter().enumerate() { + let (connection, _) = script.segments[step].feed(&mut pool, ()).active.unwrap(); + assert_eq!(TcpConnectionId(i as u64), connection.id()); + if 3 == step { + assert_eq!( + TcpRead::Data(&[i as u8]), + connection.stream_mut(Initiator).read_received() + ); + } + } + } + } + } + + #[test] + fn recycle() { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"defgh") + .fin(Initiator) + .fin(Responder) + .ack(Initiator); + let mut ended = script.feed_all(&mut pool).ended.unwrap(); + // partly read + ended.stream_mut(Initiator).read_received(); + ended.stream_mut(Initiator).consume(1); + pool.recycle(ended); + + // a new connection re-uses the buffers without their old bytes + let mut next = + ConnectionScript::new(addr("10.0.0.1:50001"), addr("10.0.0.2:80"), 3000, 4000); + next.handshake().send(Initiator, b"x").send(Responder, b"y"); + let (connection, _) = next.feed_all(&mut pool).active.unwrap(); + assert_eq!(TcpConnectionId(1), connection.id()); + for (role, data) in [(Initiator, b"x"), (Responder, b"y")] { + let stream = connection.stream_mut(role); + assert_eq!(0, stream.read_offset()); + assert_eq!(TcpRead::Data(data), stream.read_received()); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_role.rs b/etherparse/src/tcp_reassembly/tcp_role.rs new file mode 100644 index 00000000..0ee38b89 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_role.rs @@ -0,0 +1,79 @@ +/// Role of an endpoint in a TCP connection. +/// +/// If the handshake was not captured, the roles are guessed (see +/// [`crate::tcp_reassembly::TcpConnection::roles_guessed`]). +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)] +pub enum TcpRole { + /// Endpoint that sent the SYN. + Initiator, + /// Endpoint that answered the SYN. + Responder, +} + +impl TcpRole { + /// Returns the role of the other endpoint. + pub const fn other(self) -> TcpRole { + match self { + TcpRole::Initiator => TcpRole::Responder, + TcpRole::Responder => TcpRole::Initiator, + } + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::test_gens::*; + use core::hash::{Hash, Hasher}; + use proptest::prelude::*; + use std::format; + + #[test] + fn derived_traits() { + // copy & clone + { + let a = TcpRole::Initiator; + let b = a; + assert_eq!(a, b); + assert_eq!(a.clone(), a); + } + + // debug + { + assert_eq!("Initiator", format!("{:?}", TcpRole::Initiator)); + assert_eq!("Responder", format!("{:?}", TcpRole::Responder)); + } + + // ord & partial ord + { + use core::cmp::Ordering; + assert_eq!(Ordering::Less, TcpRole::Initiator.cmp(&TcpRole::Responder)); + assert_eq!( + Some(Ordering::Greater), + TcpRole::Responder.partial_cmp(&TcpRole::Initiator) + ); + } + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |role: TcpRole| { + let mut hasher = DefaultHasher::new(); + role.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(TcpRole::Initiator), hash(TcpRole::Initiator)); + assert_ne!(hash(TcpRole::Initiator), hash(TcpRole::Responder)); + } + } + + proptest! { + #[test] + fn other(role in tcp_role_any()) { + assert_eq!(TcpRole::Responder, TcpRole::Initiator.other()); + assert_eq!(TcpRole::Initiator, TcpRole::Responder.other()); + assert_ne!(role, role.other()); + assert_eq!(role, role.other().other()); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_segment.rs b/etherparse/src/tcp_reassembly/tcp_segment.rs new file mode 100644 index 00000000..769ec04d --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_segment.rs @@ -0,0 +1,58 @@ +use crate::*; +use arrayvec::ArrayVec; +use core::net::IpAddr; + +/// TCP segment together with the values that identify its connection. +/// +/// Use it to pass a segment to +/// [`crate::tcp_reassembly::TcpReassemblyPool::process_segment`], e.g. after +/// [`crate::defrag::IpDefragPool`] put an IP-fragmented segment back +/// together. +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct TcpSegment<'a, CustomChannelId = ()> { + /// VLAN IDs of the packet. + pub vlan_ids: ArrayVec, + + /// Source IP address. + pub source: IpAddr, + + /// Destination IP address. + pub destination: IpAddr, + + /// User-defined channel id (e.g. the capture interface or a tunnel), + /// part of the connection key. + pub channel_id: CustomChannelId, + + /// TCP header and payload. + pub tcp: TcpSlice<'a>, +} + +#[cfg(test)] +mod test { + use super::*; + use std::format; + + #[test] + fn derived_traits() { + let bytes = TcpHeader::new(1, 2, 3, 4).to_bytes(); + let segment = TcpSegment { + vlan_ids: ArrayVec::new(), + source: IpAddr::from([1, 2, 3, 4]), + destination: IpAddr::from([5, 6, 7, 8]), + channel_id: 9u8, + tcp: TcpSlice::from_slice(&bytes).unwrap(), + }; + + // clone & eq + assert_eq!(segment.clone(), segment); + + // debug + assert_eq!( + format!( + "TcpSegment {{ vlan_ids: [], source: 1.2.3.4, destination: 5.6.7.8, channel_id: 9, tcp: {:?} }}", + segment.tcp + ), + format!("{:?}", segment) + ); + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_stream.rs b/etherparse/src/tcp_reassembly/tcp_stream.rs new file mode 100644 index 00000000..9cff00cf --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_stream.rs @@ -0,0 +1,6172 @@ +use crate::{tcp_reassembly::*, *}; +use core::ops::Range; +use std::{collections::VecDeque, vec::Vec}; + +/// Bytes sent in one direction of a TCP connection. +/// +/// Positions in a stream are 64-bit offsets counted from the stream's first +/// byte, so they never wrap around. If the stream's start was not captured, +/// they count from the first byte that was (see +/// [`TcpStreamStart::MidStreamPickup`]). +/// +/// If the sequence numbers jump far after the receiver's window, e.g. after +/// a large capture loss, the stream continues at the new position once an +/// ACK of the other side confirms the jump, or enough segments agree on it +/// (see [`TcpReassemblyConfig::resync_after_segments`]). A gap of unknown +/// length lies in between (see [`TcpStreamStatus::resyncs`] and +/// [`TcpStream::force_resync`]). +#[derive(Clone, Debug)] +pub struct TcpStream { + /// Sequence number of the byte at offset 0 (`None` while the start of + /// the stream is unknown). + start_seq: Option, + + /// Last ACK number of the receiver that the stream couldn't apply yet, + /// as it had no start or the ACK lies at or before offset 0 while bytes + /// can still be prepended. It is applied after every packet until it + /// counts (a keep-alive ending there doesn't start the stream). + pending_ack: Option, + + /// Window scale option in the sender's SYN (`None` while the SYN was + /// not seen, `Some(None)` for a SYN without the option). + window_scale: Option>, + + /// "window" field of the sender's last segment and whether that segment + /// was a SYN (`None` before the sender's first segment). + window: Option<(u16, bool)>, + + /// Offset of the byte at `buf[head]`. + read_offset: u64, + + /// Offset after the furthest byte the sender is known to have sent. + highest_offset: u64, + + /// Received bytes up to the furthest one, where `buf[head]` is the byte + /// at `read_offset`. The bytes before `head` are already consumed, and + /// the bytes in holes are placeholders. + buf: Vec, + + /// Number of consumed bytes at the start of `buf`. + head: usize, + + /// Offset after the furthest received byte that was stored (the read + /// position can lie after it once the bytes after it were given up). + received_end: u64, + + /// Missing bytes between `read_offset` and `highest_offset`, sorted and + /// without overlaps. Missing bytes after the end of `buf` always lie in + /// a hole. + holes: Vec>, + + /// Holes that were given up, sorted and without overlaps. They lie + /// between `read_offset` and `highest_offset`, apart from `holes`. An + /// empty range is the gap of unknown length that a resync left in front + /// of the byte at its offset. + gaps: Vec>, + + /// Number of bytes the last read returned that are not consumed yet. + last_read_len: usize, + + /// Offset of the FIN (`None` until the first FIN was seen). + fin_offset: Option, + + /// Highest offset ACKed by the receiver, where an ACK of the FIN is + /// `fin_offset + 1` (ACKs that the sender can't have sent bytes for + /// are ignored). + seen_ack: u64, + + /// Offset up to which the receiver must have ACKed the bytes, as the + /// sender sends at most one receive window after the ACK (never moves + /// back). It is not cut off at offset 0, so it stays exact if offset 0 + /// moves (`None` while no packet implied it). + implied_ack: Option, + + /// Largest receive window the receiver advertised (`None` while its + /// window is unknown). + largest_window: Option, + + /// Number of the connection's packet that moved the seen ACK forward + /// and the seen ACK after it, for the packets of the last + /// `ack_reorder_tolerance` ones that did so while there were holes. + recent_acks: VecDeque<(u64, u64)>, + + /// Seen ACK as it was `ack_reorder_tolerance` packets ago (holes before + /// it were covered long enough to be overdue). + settled_ack: u64, + + /// Latest data segment that started after the receiver's window, where + /// the stream may have jumped to (`None` once other bytes arrived or the + /// stream moved forward). + resync_candidate: Option, + + /// Last ACK number of the receiver that lay more than one window after + /// the bytes the sender is known to have sent, which can confirm a jump + /// (`None` once the stream moved forward). + resync_ack: Option, + + /// Offset at which the stream continued after its last resync (0 + /// without one). Bytes, FINs and ACKs before it were sent before the + /// jump. + resync_offset: u64, + + /// Whether the next data segment is the stream's new start (see + /// [`TcpStream::force_resync`]). + resync_forced: bool, + + /// What reads return once nothing more is readable and the read + /// position is not at the FIN, as the connection ended (`None` while it + /// is open). + connection_end: Option, + + status: TcpStreamStatus, +} + +impl TcpStream { + /// Creates a stream whose start is not known yet, storing its bytes in + /// the empty buffer `buf`. + pub(crate) fn new(buf: Vec) -> TcpStream { + TcpStream { + start_seq: None, + pending_ack: None, + window_scale: None, + window: None, + read_offset: 0, + highest_offset: 0, + buf, + head: 0, + received_end: 0, + holes: Vec::new(), + gaps: Vec::new(), + last_read_len: 0, + fin_offset: None, + seen_ack: 0, + implied_ack: None, + largest_window: None, + recent_acks: VecDeque::new(), + settled_ack: 0, + resync_candidate: None, + resync_ack: None, + resync_offset: 0, + resync_forced: false, + connection_end: None, + status: TcpStreamStatus { + start: TcpStreamStart::MidStreamPickup, + gaps: 0, + gap_bytes: 0, + resyncs: 0, + conflicting_retransmissions: 0, + out_of_window_segments: 0, + }, + } + } + + /// Returns the received bytes from the read position up to the first + /// missing byte. + /// + /// Call [`TcpStream::consume`] with the number of bytes you used to move + /// the read position forward. Without readable bytes, the result is + /// [`TcpRead::Pending`] while more bytes can arrive (e.g. to fill a + /// hole), and [`TcpRead::End`] once all bytes up to the FIN were read, + /// or once the connection ended (see [`TcpConnection::end`]) and + /// everything readable was read. At a gap, the result is + /// [`TcpRead::Gap`] until you call + /// [`TcpStream::consume_gap`]. A hole becomes a gap when you give it up, + /// or when the read position reaches it while it is overdue (see + /// [`TcpStream::holes`]). A resync leaves a gap of unknown length (see + /// [`TcpStreamStatus::resyncs`]). + /// + /// Use [`TcpStream::read_acked`] to read only the bytes the receiver + /// ACKed. + pub fn read_received(&mut self) -> TcpRead<'_> { + self.read_until(u64::MAX) + } + + /// Returns the received bytes from the read position up to the first + /// missing byte, but only the ones the receiver ACKed (see + /// [`TcpStream::acked_offset`]). + /// + /// Otherwise it works like [`TcpStream::read_received`]. Bytes that were + /// consumed after reading them with [`TcpStream::read_received`] are + /// not returned again. Once the connection ended, e.g. by a reset, the + /// result is [`TcpRead::End`] after the ACKed bytes, while + /// [`TcpStream::read_received`] still returns the bytes after them. + pub fn read_acked(&mut self) -> TcpRead<'_> { + self.read_until(self.acked_offset()) + } + + /// Returns the received bytes from the read position up to the first + /// missing byte, but not after `limit`, or the gap at the read position. + fn read_until(&mut self, limit: u64) -> TcpRead<'_> { + if let Some(gap) = self.gap_at_read_offset() { + self.last_read_len = 0; + // the gap of a resync takes no offsets, its length is unknown + let len = (false == gap.is_empty()).then_some(gap.end - gap.start); + return TcpRead::Gap { len }; + } + // all bytes before the first hole or gap were received + let end = self + .missing() + .next() + .map_or(self.highest_offset, |range| range.start) + .min(limit) + .max(self.read_offset); + let data = &self.buf[self.head..self.index(end)]; + self.last_read_len = data.len(); + if false == data.is_empty() { + TcpRead::Data(data) + } else if Some(self.read_offset) == self.fin_offset { + TcpRead::End(TcpStreamEnd::Fin) + } else if let Some(end) = self.connection_end { + TcpRead::End(end) + } else { + TcpRead::Pending + } + } + + /// Consumes `len` bytes at the read position. + /// + /// At most the bytes returned by the last read are consumed, so bytes + /// that arrived after the read stay unread. If earlier bytes were put in + /// front of a mid-stream pickup since the read, nothing is consumed (see + /// [`TcpStreamStart::MidStreamPickup`]). + pub fn consume(&mut self, len: usize) { + let len = len.min(self.last_read_len); + self.head += len; + self.read_offset += len as u64; + self.last_read_len -= len; + self.give_up_overdue_hole(); + } + + /// Gives up the hole at the read position, if there is one. + /// + /// The missing bytes become a gap: reading returns [`TcpRead::Gap`] + /// until you step over it with [`TcpStream::consume_gap`], and bytes of + /// the gap that arrive later are ignored. Returns false if the read + /// position is not at a hole (an overdue hole at the read position is a + /// gap already). + pub fn give_up_hole(&mut self) -> bool { + match self.hole_at_read_offset() { + Some(hole) => { + self.give_up_holes_before(hole.end); + true + } + None => false, + } + } + + /// Moves the read position over the gap at the read position (see + /// [`TcpRead::Gap`]). + /// + /// Does nothing if the read position is not at a gap. + pub fn consume_gap(&mut self) { + if let Some(gap) = self.gap_at_read_offset() { + self.gaps.remove(0); + self.advance_to(gap.end); + self.give_up_overdue_hole(); + } + } + + /// Moves the read position forward to `offset`, discarding the bytes + /// and holes before it. + /// + /// Bytes before the offset that arrive later are ignored. Discarding + /// keeps the stream clean, also where bytes were missing (they are not + /// counted as gaps). Offsets after [`TcpStream::highest_offset`] count + /// as the highest offset, so bytes after it stay readable once they + /// arrive. A gap of unknown length at `offset` stays (see + /// [`TcpStreamStatus::resyncs`]). + pub fn discard_until(&mut self, offset: u64) { + let offset = offset.min(self.highest_offset); + if offset <= self.read_offset { + return; + } + remove_before(&mut self.holes, offset); + remove_before(&mut self.gaps, offset); + self.advance_to(offset); + self.give_up_overdue_hole(); + } + + /// Discards all buffered bytes and holes, so that the stream continues + /// with the next new bytes. + /// + /// Works like [`TcpStream::discard_until`] with the highest offset. + pub fn discard_all(&mut self) { + self.discard_until(self.highest_offset); + } + + /// Makes the next segment with bytes the stream's new start: the stream + /// continues with these bytes at the highest offset, behind a gap of + /// unknown length ([`TcpRead::Gap`] with `len: None`). + /// + /// Use it if you know that the stream jumped, e.g. to a new initial + /// sequence number that lies before the stream's bytes, which a resync + /// doesn't detect (see [`TcpStreamStatus::resyncs`]). Does nothing + /// before the stream started, as its first bytes start it anyway (see + /// [`TcpStreamStart`]), or after the stream's FIN. + pub fn force_resync(&mut self) { + if self.start_seq.is_some() && self.fin_offset.is_none() { + self.resync_forced = true; + } + } + + /// Turns the parts of the holes before `offset` into gaps. + fn give_up_holes_before(&mut self, offset: u64) { + for hole in self.holes.iter_mut().take_while(|hole| hole.start < offset) { + let given_up = hole.start..hole.end.min(offset); + self.status.gaps += 1; + self.status.gap_bytes += given_up.end - given_up.start; + hole.start = given_up.end; + self.gaps.push(given_up); + } + self.holes.retain(|hole| false == hole.is_empty()); + // the gap of a resync comes before a hole given up at its offset + self.gaps.sort_unstable_by_key(|gap| (gap.start, gap.end)); + } + + /// Gives up the hole at the read position if it is overdue: the + /// receiver must have received its bytes, so they will most likely not + /// be captured anymore (late segments still fill overdue holes the read + /// position hasn't reached). + fn give_up_overdue_hole(&mut self) { + if let Some(hole) = self.hole_at_read_offset() { + if self.is_overdue(&hole) { + self.give_up_holes_before(hole.end); + } + } + } + + /// Offset up to which the receiver must have ACKed the bytes (0 while no + /// bytes are implied). + fn implied_ack(&self) -> u64 { + self.implied_ack + .map_or(0, |ack| u64::try_from(ack).unwrap_or(0)) + } + + /// Returns true if all of `hole` lies before the implied ACK, or if the + /// seen ACK has covered all of it for `ack_reorder_tolerance` packets. + fn is_overdue(&self, hole: &Range) -> bool { + hole.end <= self.implied_ack().max(self.settled_ack) + } + + /// Returns true if the byte at `offset` lies in an overdue hole. + fn in_overdue_hole(&self, offset: u64) -> bool { + let index = self.holes.partition_point(|hole| hole.end <= offset); + self.holes + .get(index) + .is_some_and(|hole| hole.start <= offset && self.is_overdue(hole)) + } + + /// Hole starting at the read position, if any. + fn hole_at_read_offset(&self) -> Option> { + self.holes + .first() + .filter(|hole| hole.start == self.read_offset) + .cloned() + } + + /// Gap starting at the read position, if any. + fn gap_at_read_offset(&self) -> Option> { + self.gaps + .first() + .filter(|gap| gap.start == self.read_offset) + .cloned() + } + + /// Moves the read position forward to `offset` (at most the highest + /// offset), discarding the bytes before it. + fn advance_to(&mut self, offset: u64) { + // the buffer ends at the furthest received byte + self.head = self.index(offset.min(self.buf_end())); + self.read_offset = offset; + self.last_read_len = 0; + } + + /// Offset of the next byte to read. + /// + /// It moves back to the FIN offset when a FIN arrives before it, inside + /// bytes up to an ACK that were given up (see + /// [`TcpStream::highest_offset`]). + pub fn read_offset(&self) -> u64 { + self.read_offset + } + + /// Offset up to which the receiver ACKed the stream's bytes. + /// + /// ACKs of bytes more than one receive window after the highest offset + /// are ignored, as the sender can't have sent these bytes. Without a + /// higher ACK, it is the implied ACK: the sender sends at most one + /// window after the ACK, so the receiver must have ACKed the bytes up + /// to [`TcpReassemblyConfig::hole_give_up_window_factor`] times its + /// largest window before the highest offset. + pub fn acked_offset(&self) -> u64 { + // the ACK of the FIN lies after the highest offset + self.seen_ack + .max(self.implied_ack()) + .min(self.highest_offset) + } + + /// Offset after the furthest byte the sender is known to have sent, as + /// it was received or ACKed. + /// + /// It moves back to the FIN offset, and [`TcpStream::acked_offset`] with + /// it, when a FIN arrives inside bytes that an earlier ACK covered. + pub fn highest_offset(&self) -> u64 { + self.highest_offset + } + + /// Offset of the stream's FIN, which is the number of bytes in the + /// stream, if a FIN was seen. + pub fn fin_offset(&self) -> Option { + self.fin_offset + } + + /// Ranges of missing bytes between the read position and the highest + /// offset that can still arrive, in order. + /// + /// Reading stops at the first hole until a retransmission fills it or + /// it is given up (see [`TcpStream::give_up_hole`]). A hole is also + /// given up once it is overdue and the read position reaches it. A hole + /// is overdue if it lies before the implied ACK (see + /// [`TcpStream::acked_offset`]), or if a seen ACK has covered it for + /// [`TcpReassemblyConfig::ack_reorder_tolerance`] packets, as the + /// receiver must have received its bytes. Late segments still fill + /// overdue holes the read position hasn't reached. + pub fn holes(&self) -> impl Iterator> + '_ { + self.holes.iter().cloned() + } + + /// Counters that describe the quality of the stream. + pub fn status(&self) -> &TcpStreamStatus { + &self.status + } + + /// Returns true if the stream has no defects so far: no gaps, no + /// resyncs and no retransmission with differing bytes (see + /// [`TcpStreamStatus`]). + /// + /// Holes don't count, as retransmissions can still fill them, and + /// neither do discarded bytes (see [`TcpStream::discard_until`]). + pub fn is_clean(&self) -> bool { + 0 == self.status.gaps + && 0 == self.status.resyncs + && 0 == self.status.conflicting_retransmissions + } + + /// Returns true if the stream's FIN was seen and all bytes before it + /// were received or given up (no holes are left). + /// + /// Overdue holes (see [`TcpStream::holes`]) count as holes, as late + /// segments can still fill them. + pub fn is_finished(&self) -> bool { + // the FIN moves the highest offset to it, so all holes lie before it + self.fin_offset.is_some() && self.holes.is_empty() + } + + /// Returns true if the stream is complete: it is clean (see + /// [`TcpStream::is_clean`]), has an observed start and is finished (see + /// [`TcpStream::is_finished`]). + /// + /// All bytes the sender sent are then delivered exactly once and + /// unambiguously. + pub fn is_complete(&self) -> bool { + self.is_clean() && TcpStreamStart::Observed == self.status.start && self.is_finished() + } + + /// Returns the stream's buffer, emptied for re-use. + pub(crate) fn into_buffer(self) -> Vec { + let mut buf = self.buf; + buf.clear(); + buf + } + + /// Returns true if the receiver ACKed the stream's FIN and all holes + /// left are overdue, so that the stream can end as finished. + pub(crate) fn can_finish(&self) -> bool { + self.fin_offset.is_some_and(|fin| fin < self.seen_ack) + && self.holes.last().is_none_or(|hole| self.is_overdue(hole)) + } + + /// Gives up all holes, as the connection ended (late segments are + /// ignored after the end, so they can't fill them anymore). Once nothing + /// more is readable, reads return `end` (or [`TcpStreamEnd::Fin`] at + /// the FIN). + pub(crate) fn connection_ended(&mut self, end: TcpStreamEnd) { + self.give_up_holes_before(self.highest_offset); + self.connection_end = Some(end); + } + + /// Receive window in bytes that the stream's sender advertised for the + /// other stream `other`, `None` while it is unknown. + pub(crate) fn advertised_window(&self, other: &TcpStream) -> Option { + // the window scale is only known if both SYNs were seen (RFC 7323) + match (self.window, self.window_scale, other.window_scale) { + (Some((window, in_syn)), Some(scale), Some(other_scale)) => { + // the window of a SYN is never scaled, and both directions + // are only scaled if both SYNs had the option + let shift = match (scale, other_scale) { + (Some(scale), Some(_)) if false == in_syn => scale.min(14), + _ => 0, + }; + Some(u64::from(window) << shift) + } + _ => None, + } + } + + /// Offset after which the receiver with the receive window `window` + /// doesn't accept bytes. + fn window_end(&self, window: u64, config: &TcpReassemblyConfig) -> u64 { + self.seen_ack + .max(self.highest_offset) + .saturating_add(window_range(window, config)) + } + + /// Offset after the last byte in `buf`. + fn buf_end(&self) -> u64 { + self.read_offset + (self.buf.len() - self.head) as u64 + } + + /// Index in `buf` of the byte at `offset` (at or after `read_offset`). + fn index(&self, offset: u64) -> usize { + self.head + (offset - self.read_offset) as usize + } + + /// Maps the sequence number `seq` to a stream offset, relative to the + /// highest offset (RFC 1982 serial number arithmetic). + /// + /// Offsets before the stream's first byte are negative. A sequence + /// number 2^31 away from the highest offset lies neither before nor + /// after it, so it can't be mapped (`None`). + fn offset(&self, start_seq: u32, seq: u32) -> Option { + let highest = self.highest_offset; + let distance = seq.wrapping_sub(start_seq.wrapping_add(highest as u32)) as i32; + (i32::MIN != distance).then(|| highest as i64 + i64::from(distance)) + } + + /// Applies a segment sent by the stream's sender, whose receiver has the + /// receive window `window`, in the packet with the number `packet` of + /// the connection. + pub(crate) fn add_segment( + &mut self, + tcp: &TcpSlice<'_>, + window: u64, + packet: u64, + config: &TcpReassemblyConfig, + ) { + // the window the sender advertises for the other stream + self.window = Some((tcp.window_size(), tcp.syn())); + + // the SYN occupies the sequence number before the first byte + let seq = if tcp.syn() { + tcp.sequence_number().wrapping_add(1) + } else { + tcp.sequence_number() + }; + let data = tcp.payload(); + if tcp.syn() { + // a SYN whose start a mid-stream pickup can't take is not the + // stream's own one + if false == self.observe_start(seq, window, config) { + self.status.out_of_window_segments += 1; + return; + } + // the window scale is only known from the sender's SYN, which + // can arrive after the SYN-ACK that started the stream + if self.window_scale.is_none() && Some(seq) == self.start_seq { + self.window_scale = Some(window_scale(tcp)); + } + } else if self.start_seq.is_none() { + // without its SYN, the stream starts at its first bytes, or at + // a FIN without bytes, but not at the filler byte of a + // keep-alive, which ends at the receiver's ACK + let keep_alive = + is_keep_alive_shaped(tcp) && Some(seq.wrapping_add(1)) == self.pending_ack; + if (false == data.is_empty() || tcp.fin()) && false == keep_alive { + self.start_seq = Some(seq); + } + } + let Some(start_seq) = self.start_seq else { + return; + }; + let mut start = self.offset(start_seq, seq); + // the receiver doesn't accept bytes or a FIN starting after its + // window (or that can't be mapped) + let mut after_window = start.is_none_or(|start| { + u64::try_from(start).is_ok_and(|start| start > self.window_end(window, config)) + }); + + // data after the window can be where the stream jumped to, other + // data shows that it didn't (a SYN with another ISN is a reconnect, + // and nothing follows a FIN) + let mut jump_ack = None; + if false == data.is_empty() && false == tcp.syn() && self.fin_offset.is_none() { + let candidate = ResyncCandidate::new(seq, data.len(), tcp.fin()); + // an ACK beyond the window that arrived before confirms a jump + // to bytes within one window of it + let confirming_ack = self + .resync_ack + .filter(|ack| candidate.is_within_window(*ack, window)); + let confirmed = if after_window { + // so do enough consecutive segments that agree + self.add_resync_candidate(candidate, window, config) || confirming_ack.is_some() + } else { + self.resync_candidate = None; + false + }; + // the user or the other side confirm the jump, the segment is + // the new start + if self.resync_forced || confirmed { + jump_ack = confirming_ack; + let start_seq = self.resync(seq); + start = self.offset(start_seq, seq); + after_window = false; + } + } + if (false == data.is_empty() || tcp.fin()) && after_window { + // a FIN right after the bytes the stream may have jumped to ends + // it there + if let Some(candidate) = self + .resync_candidate + .as_mut() + .filter(|candidate| data.is_empty() && seq == candidate.end) + { + candidate.fin = true; + } + self.status.out_of_window_segments += 1; + return; + } + let Some(mut start) = start else { + return; + }; + + // bytes before offset 0 of a mid-stream pickup are prepended until + // it is read from, and are outside of the stream after that + let mut out_of_window = false; + if start < 0 + && false == data.is_empty() + && TcpStreamStart::MidStreamPickup == self.status.start + { + if self.move_start_back(seq, start, window, config) { + start = 0; + } else { + out_of_window = true; + } + } + let end = start + data.len() as i64; + + // the filler byte of a keep-alive must not fill an overdue hole + if is_keep_alive_shaped(tcp) + && end == self.seen_ack as i64 + && u64::try_from(start).is_ok_and(|start| self.in_overdue_hole(start)) + { + return; + } + + // the first FIN wins, but it can't lie before received bytes (even + // if bytes before it are missing or were given up) or before a jump + if tcp.fin() + && self.fin_offset.is_none() + && end >= self.received_end.max(self.resync_offset) as i64 + { + self.fin_offset = Some(end as u64); + // an ACK of the FIN that arrived before it marked the FIN's + // position as a missing byte + self.truncate_to(end as u64); + } + + // bytes after the FIN are not part of the stream + let data = match self.fin_offset { + Some(fin) if false == data.is_empty() && end > fin as i64 => { + out_of_window = true; + let len = (fin as i64 - start).max(0) as usize; + data.get(..len).unwrap_or_default() + } + _ => data, + }; + if out_of_window { + self.status.out_of_window_segments += 1; + } + self.add_data(start, data); + + // the sender sent all bytes before its FIN + if let Some(fin) = self.fin_offset { + self.extend_to(fin); + } + + // an ACK that confirmed the jump before the bytes arrived counts now + if let Some(ack) = jump_ack { + self.add_jump_ack(ack, window, packet); + } + } + + /// Applies an RST of the stream's sender with the sequence number `seq`, + /// whose receiver has the receive window `window`. Returns true if the + /// receiver can accept it, so that it ends the connection. Otherwise + /// the RST counts as out-of-window. + pub(crate) fn add_reset(&mut self, seq: u32, window: u64) -> bool { + // the receiver accepts an RST from the next byte it expects up to + // one window after it (RFC 9293 3.10.7.4), and that byte lies + // between the receiver's ACK and the bytes sent (and the FIN) + let accepted = match (self.start_seq, self.pending_ack) { + (Some(start_seq), pending_ack) => { + // the receiver's ACK can be kept at or before offset 0 (see + // `pending_ack`), but no ACK blocks an RST at or after the + // received bytes (a forged one could) + let ack = pending_ack + .and_then(|ack| self.offset(start_seq, ack)) + .unwrap_or(self.seen_ack as i64); + let mut first = ack.min(self.received_end as i64); + // nothing before a jump counts + if 0 < self.status.resyncs { + first = first.max(self.resync_offset as i64); + } + let sent_end = self.highest_offset + u64::from(self.fin_offset.is_some()); + let last = i64::try_from(sent_end.saturating_add(window)).unwrap_or(i64::MAX); + self.offset(start_seq, seq) + .is_some_and(|offset| first <= offset && offset <= last) + } + // without a start, the receiver's ACK is the next byte it + // expects + (None, Some(ack)) => { + u64::try_from(seq.wrapping_sub(ack) as i32).is_ok_and(|distance| distance <= window) + } + // nothing tells which bytes the receiver expects + (None, None) => true, + }; + if false == accepted { + self.status.out_of_window_segments += 1; + } + accepted + } + + /// Gives the stream an observed start at `seq`, the sequence number + /// after its SYN, where `window` is the receiver's receive window. + /// + /// A mid-stream pickup moves its start back to `seq`. Returns false if + /// it can't, and true if the stream has an observed start afterwards. + pub(crate) fn observe_start( + &mut self, + seq: u32, + window: u64, + config: &TcpReassemblyConfig, + ) -> bool { + match self.start_seq { + None => self.start_seq = Some(seq), + Some(_) if TcpStreamStart::Observed == self.status.start => return true, + Some(start_seq) => { + // a late SYN lies at or before the first byte received + let Some(start) = self.offset(start_seq, seq) else { + return false; + }; + if false == self.move_start_back(seq, start, window, config) { + return false; + } + } + } + self.status.start = TcpStreamStart::Observed; + true + } + + /// Moves offset 0 of a mid-stream pickup back to the sequence number + /// `seq` at offset `start`, if bytes can still be prepended and `seq` + /// lies within the range of the receiver's receive window `window` + /// before offset 0. Returns false otherwise. + fn move_start_back( + &mut self, + seq: u32, + start: i64, + window: u64, + config: &TcpReassemblyConfig, + ) -> bool { + if 0 < start + || start.unsigned_abs() > window_range(window, config) + || false == self.can_prepend() + { + return false; + } + if start < 0 { + self.prepend(start.unsigned_abs()); + } + self.start_seq = Some(seq); + true + } + + /// Returns true if bytes can still be prepended to the stream, as it is + /// a mid-stream pickup whose offsets no reader has used yet. + fn can_prepend(&self) -> bool { + // the read position of a pickup never moves back to 0 (a FIN can't + // lie before the first byte received), a reader may have read the + // end of a pickup that starts at its FIN, and prepending would move + // the gap of a resync + TcpStreamStart::MidStreamPickup == self.status.start + && 0 == self.read_offset + && Some(0) != self.fin_offset + && 0 == self.status.resyncs + && false == self.resync_forced + } + + /// Moves offset 0 of the mid-stream pickup `len` bytes back, these + /// bytes are a hole until they arrive. + fn prepend(&mut self, len: u64) { + // nothing was consumed yet, and there are no gaps, as the read + // position is at the first byte received + self.buf.splice(..0, core::iter::repeat_n(0, len as usize)); + self.highest_offset += len; + self.received_end += len; + for hole in &mut self.holes { + hole.start += len; + hole.end += len; + } + self.holes.insert(0, 0..len); + self.fin_offset = self.fin_offset.map(|fin| fin + len); + // ACKs of offset 0 or before it were ignored, so 0 means none + if 0 < self.seen_ack { + self.seen_ack += len; + } + if 0 < self.settled_ack { + self.settled_ack += len; + } + for (_, ack) in &mut self.recent_acks { + *ack += len; + } + self.implied_ack = self.implied_ack.map(|ack| ack.saturating_add(len as i64)); + // a read before returned other bytes at the read position + self.last_read_len = 0; + } + + /// Updates what the receiver must have received after the packet with + /// the number `packet` of the connection, where `window` is the + /// receiver's receive window (`None` while it is unknown). + pub(crate) fn after_packet( + &mut self, + window: Option, + packet: u64, + config: &TcpReassemblyConfig, + ) { + // an ACK that couldn't be applied counts once the stream has a start + // or its offsets moved (until then, it stays pending) + if let Some(ack) = self.pending_ack.take() { + let ack_window = window.unwrap_or(u64::from(config.fallback_window)); + self.add_ack(ack, ack_window, packet); + } + // the sender can have sent bytes into a larger window before the + // window shrank (e.g. to 0 when the receiver's buffer is full) + self.largest_window = self.largest_window.max(window); + if let Some(factor) = config.hole_give_up_window_factor { + // allow for several windows, as the window can change + let window = self + .largest_window + .unwrap_or(u64::from(config.fallback_window)); + let implied_ack = i64::try_from(self.highest_offset) + .unwrap_or(i64::MAX) + .saturating_sub( + i64::try_from(window.saturating_mul(u64::from(factor))).unwrap_or(i64::MAX), + ); + self.implied_ack = self.implied_ack.max(Some(implied_ack)); + } + // ACKs reordered against the data in a capture can come first, so + // a covered hole stays fillable for some packets + let tolerance = u64::from(config.ack_reorder_tolerance); + while let Some(&(ack_packet, ack)) = self.recent_acks.front() { + if ack_packet.saturating_add(tolerance) > packet { + break; + } + self.settled_ack = ack; + self.recent_acks.pop_front(); + } + if self.holes.is_empty() && false == self.can_prepend() { + // later holes lie after the seen ACK, so they can't be overdue + // by the ACKs so far (a prepend adds a hole before it) + self.recent_acks.clear(); + } + self.give_up_overdue_hole(); + } + + /// Applies the ACK number of a segment sent by the stream's receiver, + /// whose receive window before that segment was `window`, in the packet + /// with the number `packet` of the connection. + pub(crate) fn add_ack(&mut self, ack_seq: u32, window: u64, packet: u64) { + let Some(start_seq) = self.start_seq else { + self.pending_ack = Some(ack_seq); + return; + }; + // the receiver can only ACK bytes that can't be mapped after a jump + let Some(ack) = self.offset(start_seq, ack_seq) else { + self.add_resync_ack(ack_seq, window, packet); + return; + }; + // an ACK of offset 0 or before it can ACK bytes prepended later + if ack <= 0 && self.can_prepend() { + self.pending_ack = Some(ack_seq); + return; + } + // the sender can't have sent more than one window after the bytes + // it is known to have sent (and its FIN), unless the stream jumped + let sent_end = self.highest_offset + u64::from(self.fin_offset.is_some()); + if 0 < ack && ack as u64 > sent_end.saturating_add(window) { + self.add_resync_ack(ack_seq, window, packet); + return; + } + // ACKs before a jump don't count after it + if ack <= self.seen_ack as i64 || ack < self.resync_offset as i64 { + return; + } + self.seen_ack = ack as u64; + // the receiver got bytes that were not captured, but none after the + // FIN + let end = self + .fin_offset + .map_or(self.seen_ack, |fin| fin.min(self.seen_ack)); + self.extend_to(end); + // only holes can become overdue by the ACK, also ones that a + // prepend adds before it + if false == self.holes.is_empty() || self.can_prepend() { + self.recent_acks.push_back((packet, self.seen_ack)); + } + } + + /// Records the data after the receiver's window `candidate` as the latest + /// candidate of a resync, where `window` is the receiver's receive + /// window. Returns true if enough consecutive candidates agree that the + /// stream jumped there (see + /// [`TcpReassemblyConfig::resync_after_segments`]). + fn add_resync_candidate( + &mut self, + mut candidate: ResyncCandidate, + window: u64, + config: &TcpReassemblyConfig, + ) -> bool { + // consecutive segments after the window agree on the new position + // if each lies within one window of the one before + if let Some(previous) = self + .resync_candidate + .filter(|previous| previous.is_within_window(candidate.first, window)) + { + candidate.agreeing = previous.agreeing.saturating_add(1); + } + self.resync_candidate = Some(candidate); + config + .resync_after_segments + .is_some_and(|after| candidate.agreeing >= after) + } + + /// Applies the ACK number `ack_seq` of the receiver that lies more than + /// the receiver's receive window `window` after the bytes the sender is + /// known to have sent (or can't be mapped), in the packet with the + /// number `packet` of the connection. + /// + /// If it lies within one window of the latest data after the window, + /// the stream jumped there and continues after these bytes. Otherwise + /// it is kept, as such data can still follow. + fn add_resync_ack(&mut self, ack_seq: u32, window: u64, packet: u64) { + match self.resync_candidate { + Some(candidate) + if self.fin_offset.is_none() && candidate.is_within_window(ack_seq, window) => + { + // the FIN after the candidate's bytes ends the stream there + self.resync(candidate.end); + if candidate.fin { + self.fin_offset = Some(self.highest_offset); + } + self.add_jump_ack(ack_seq, window, packet); + } + _ => self.resync_ack = Some(ack_seq), + } + } + + /// Applies the ACK number `ack_seq` that confirmed a jump after the + /// resync, like the ACK of [`TcpStream::add_ack`]. It also ACKs all bytes + /// before the jump, as the receiver ACKed bytes after it. + fn add_jump_ack(&mut self, ack_seq: u32, window: u64, packet: u64) { + self.add_ack(ack_seq, window, packet); + self.seen_ack = self.seen_ack.max(self.resync_offset); + } + + /// Continues the stream with the byte that has the sequence number + /// `seq` at the highest offset, behind a gap of unknown length, and + /// returns the new sequence number of offset 0. + fn resync(&mut self, seq: u32) -> u32 { + // the missing bytes now map elsewhere, so nothing can fill the holes + self.give_up_holes_before(self.highest_offset); + let offset = self.highest_offset; + // resyncs without bytes between them leave one gap + if Some(&(offset..offset)) != self.gaps.last() { + self.gaps.push(offset..offset); + } + let start_seq = seq.wrapping_sub(offset as u32); + self.start_seq = Some(start_seq); + self.resync_offset = offset; + self.resync_candidate = None; + self.resync_ack = None; + self.resync_forced = false; + self.status.resyncs += 1; + start_seq + } + + /// Stores the bytes of `data` (starting at offset `start`) that were not + /// received before. + fn add_data(&mut self, start: i64, data: &[u8]) { + // skip the bytes before the read position (consumed, or before the + // stream's first byte), in a gap at it (given up) and before a jump + let skip_end = self + .gap_at_read_offset() + .map_or(self.read_offset, |gap| gap.end) + .max(self.resync_offset); + let skipped = (skip_end as i64).saturating_sub(start).max(0) as usize; + let data = match data.get(skipped..) { + Some(data) if false == data.is_empty() => data, + _ => return, + }; + let start = (start + skipped as i64) as u64; + let end = start + data.len() as u64; + + // bytes received before keep their content + if self.differs_from_received(start, data) { + self.status.conflicting_retransmissions += 1; + } + + // fill the holes in the buffer + let buf_end = self.buf_end(); + for hole in &self.holes { + let from = hole.start.max(start); + let to = hole.end.min(end).min(buf_end); + if from < to { + let (buf_from, buf_to) = (self.index(from), self.index(to)); + self.buf[buf_from..buf_to] + .copy_from_slice(&data[(from - start) as usize..(to - start) as usize]); + } + } + + // append the bytes after the end of the buffer (all missing so far) + if buf_end < end { + // drop the consumed bytes once they make up half of the buffer + if self.head >= self.buf.len() - self.head { + self.buf.drain(..self.head); + self.head = 0; + } + // placeholders for missing bytes before the segment + let from = start.max(buf_end); + self.buf.resize(self.index(from), 0); + self.buf.extend_from_slice(&data[(from - start) as usize..]); + self.received_end = end; + } + self.extend_to(end); + self.remove_from_holes(start..end); + } + + /// Returns true if bytes of `data` (starting at offset `start`, at or + /// after the read position) differ from the bytes received for the same + /// offsets, ignoring ACKed bytes. + fn differs_from_received(&self, start: u64, data: &[u8]) -> bool { + let end = start + data.len() as u64; + // the receiver ignores retransmissions of ACKed bytes (e.g. keep-alive + // probes), so they don't conflict + let compared_start = start.max(self.acked_offset()); + // the received bytes lie before each hole or gap and before the + // highest offset (an empty range at the end) + let mut received_start = self.read_offset; + let missing = self + .missing() + .chain([self.highest_offset..self.highest_offset]); + for range in missing { + let from = received_start.max(compared_start); + let to = range.start.min(end); + if from < to + && self.buf[self.index(from)..self.index(to)] + != data[(from - start) as usize..(to - start) as usize] + { + return true; + } + received_start = range.end; + } + false + } + + /// Ranges of missing bytes (holes and gaps) in order. + fn missing(&self) -> impl Iterator> + '_ { + let mut holes = self.holes.iter().peekable(); + let mut gaps = self.gaps.iter().peekable(); + core::iter::from_fn(move || match (holes.peek(), gaps.peek()) { + // the gap of a resync comes before a hole at its offset + (Some(hole), Some(gap)) if gap.start <= hole.start => gaps.next(), + (Some(_), _) => holes.next(), + (None, _) => gaps.next(), + }) + .cloned() + } + + /// Moves the highest offset forward to `offset`, the bytes in between + /// are missing. + fn extend_to(&mut self, offset: u64) { + if offset > self.highest_offset { + match self.holes.last_mut() { + Some(hole) if hole.end == self.highest_offset => hole.end = offset, + _ => self.holes.push(self.highest_offset..offset), + } + self.highest_offset = offset; + // the stream moved forward, so it didn't jump + self.resync_candidate = None; + self.resync_ack = None; + } + } + + /// Moves the highest offset back to `offset` (at or after the furthest + /// received byte), the missing bytes after it don't exist. + fn truncate_to(&mut self, offset: u64) { + if offset < self.highest_offset { + truncate_ranges(&mut self.holes, offset); + truncate_ranges(&mut self.gaps, offset); + self.highest_offset = offset; + // the read position can lie after it, in bytes that were given + // up (no bytes are buffered there) + self.read_offset = self.read_offset.min(offset); + } + } + + /// Removes the bytes in `range` from the holes. + fn remove_from_holes(&mut self, range: Range) { + // holes overlapping the range + let first = self.holes.partition_point(|hole| hole.end <= range.start); + let last = self.holes.partition_point(|hole| hole.start < range.end); + if first >= last { + return; + } + + // the parts of these holes before and after the range stay missing + let before = self.holes[first].start..range.start; + let after = range.end..self.holes[last - 1].end; + self.holes.drain(first..last); + let mut index = first; + for part in [before, after] { + if false == part.is_empty() { + self.holes.insert(index, part); + index += 1; + } + } + } +} + +/// Removes the parts of the sorted `ranges` before `offset`. The empty gap of +/// a resync at `offset` takes no offsets, so it stays. +fn remove_before(ranges: &mut Vec>, offset: u64) { + let removed = ranges.partition_point(|range| range.end <= offset && range.start < offset); + ranges.drain(..removed); + if let Some(range) = ranges.first_mut() { + range.start = range.start.max(offset); + } +} + +/// Removes the parts of the sorted `ranges` at or after `offset`. The empty +/// gap of a resync at `offset` takes no offsets, so it stays. +fn truncate_ranges(ranges: &mut Vec>, offset: u64) { + let kept = ranges.partition_point(|range| range.start < offset || range.end <= offset); + ranges.truncate(kept); + if let Some(range) = ranges.last_mut() { + range.end = range.end.min(offset); + } +} + +/// Number of bytes before or after the stream's bytes that a receiver with +/// the receive window `window` accepts: several windows, as the window can +/// change and not all ACKs are captured. +fn window_range(window: u64, config: &TcpReassemblyConfig) -> u64 { + let factor = config.hole_give_up_window_factor.unwrap_or(2); + window.saturating_mul(u64::from(factor)) +} + +/// Data segment after the receiver's window that a stream may have jumped +/// to. +#[derive(Copy, Clone, Debug)] +struct ResyncCandidate { + /// Sequence number of the first byte. + first: u32, + /// Sequence number after the last byte. + end: u32, + /// Whether a FIN follows the bytes. + fin: bool, + /// Number of consecutive data segments after the window up to this one, + /// each within one window of the one before. + agreeing: u32, +} + +impl ResyncCandidate { + /// Candidate with `len` bytes from the sequence number `seq` on, + /// followed by a FIN if `fin`. + fn new(seq: u32, len: usize, fin: bool) -> ResyncCandidate { + ResyncCandidate { + first: seq, + end: seq.wrapping_add(len as u32), + fin, + agreeing: 1, + } + } + + /// Returns true if the sequence number `seq` lies at most `window` bytes + /// before or after the candidate's bytes (RFC 1982 serial number + /// arithmetic). + fn is_within_window(&self, seq: u32, window: u64) -> bool { + let window = i64::try_from(window).unwrap_or(i64::MAX); + let distance = i64::from(seq.wrapping_sub(self.first) as i32); + let len = i64::from(self.end.wrapping_sub(self.first)); + -window <= distance && distance <= len.saturating_add(window) + } +} + +/// Returns true if the segment has the shape of a keep-alive probe: one +/// filler byte, without SYN or FIN, that repeats the byte before the +/// receiver's ACK (RFC 1122 4.2.3.6). RSTs carry no bytes of the stream. +fn is_keep_alive_shaped(tcp: &TcpSlice<'_>) -> bool { + 1 == tcp.payload().len() && false == (tcp.syn() || tcp.fin()) +} + +/// Returns the value of the window scale option (RFC 7323), if present. +fn window_scale(tcp: &TcpSlice<'_>) -> Option { + tcp.options_iterator() + .map_while(Result::ok) + .find_map(|option| match option { + TcpOptionElement::WindowScale(scale) => Some(scale), + _ => None, + }) +} + +#[cfg(test)] +mod test { + use super::*; + use crate::tcp_reassembly::TcpRole::*; + use std::{format, vec}; + + #[test] + fn derived_traits() { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + + // clone + { + let mut clone = stream.clone(); + assert_eq!(TcpRead::Data(b"abc"), clone.read_received()); + clone.consume(3); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // debug + assert!(format!("{:?}", stream).starts_with("TcpStream { ")); + } + + #[test] + fn read_received() { + // nothing received yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Pending, + connection.stream_mut(Initiator).read_received() + ); + assert_eq!( + TcpRead::Pending, + connection.stream_mut(Responder).read_received() + ); + } + + // in-order data of several segments is read as one slice + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"GET") + .send(Responder, b"HTTP") + .send(Initiator, b" /") + .send(Responder, b"/1.1"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"GET /"), + connection.stream_mut(Initiator).read_received() + ); + assert_eq!( + TcpRead::Data(b"HTTP/1.1"), + connection.stream_mut(Responder).read_received() + ); + } + + // data in the SYN (TCP Fast Open) starts at offset 0 + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn_with_data(b"fast") + .syn_ack() + .ack(Initiator) + .send(Initiator, b" open"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"fast open"), stream.read_received()); + assert_eq!(0, stream.read_offset()); + } + + // SYNs with options start the streams too + for options in [ + // window scale + &[TcpOptionElement::WindowScale(7), TcpOptionElement::Noop][..], + // window scale after another option + &[ + TcpOptionElement::MaximumSegmentSize(1460), + TcpOptionElement::WindowScale(14), + TcpOptionElement::Noop, + ][..], + // no window scale + &[TcpOptionElement::MaximumSegmentSize(1460)][..], + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + script.segments[0].header.set_options(options).unwrap(); + script.segments[1].header.set_options(options).unwrap(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_received() + ); + assert_eq!( + TcpRead::Data(b"def"), + connection.stream_mut(Responder).read_received() + ); + } + + // SYNs with malformed options start the streams too + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(7), Some(7)]; + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + // window scale option with a wrong length + script.segments[0] + .header + .set_options_raw(&[3, 4, 7, 0]) + .unwrap(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_received() + ); + assert_eq!( + TcpRead::Data(b"def"), + connection.stream_mut(Responder).read_received() + ); + } + + // without its SYN, the SYN-ACK starts both streams (the initiator's + // at the ACK of the SYN, also when it is the first packet) + for syn_ack_first in [false, true] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + let syn = script.segments.remove(0); + if false == syn_ack_first { + script.segments.insert(0, syn); + } + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + for (role, data) in [(Initiator, b"abc"), (Responder, b"def")] { + let stream = connection.stream_mut(role); + assert_eq!(TcpRead::Data(data), stream.read_received()); + assert_eq!(0, stream.read_offset()); + } + } + + // retransmitted bytes are delivered once (also across a + // wrap-around of the sequence numbers) + for isn in [1000, u32::MAX - 2] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(isn, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + // the same segment again + .send_at(Initiator, 3, b"def") + // the same bytes cut differently, with new bytes at the end + .send_at(Initiator, 1, b"bcdefgh") + // only bytes received before + .send_at(Initiator, 0, b"ab"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abcdefgh"), + connection.stream_mut(Initiator).read_received() + ); + } + + // reading stops at a hole and continues once it is filled + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"de") + .send(Initiator, b"fg"); + let missing = script.segments.remove(4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + let (connection, _) = missing.feed(&mut pool, ()).active.unwrap(); + assert_eq!( + TcpRead::Data(b"defg"), + connection.stream_mut(Initiator).read_received() + ); + } + + // a hole at the start of the stream + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + let missing = script.segments.remove(3); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Pending, + connection.stream_mut(Initiator).read_received() + ); + } + let (connection, _) = missing.feed(&mut pool, ()).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abcdef"), + connection.stream_mut(Initiator).read_received() + ); + } + + // an overdue hole at the read position (its end lies before the + // implied ACK) is read as one gap, but not while only a part of it + // is overdue, and never without a hole give up window factor + for (factor, expected) in [ + (Some(2), TcpRead::Gap { len: Some(3) }), + (None, TcpRead::Pending), + ] { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: factor, + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .send(Initiator, b"jkl"); + script.segments.remove(2); + { + let (connection, _) = script.feed(&mut pool, ..3).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + // the implied ACK (5) lies inside the hole + assert_eq!(TcpRead::Pending, stream.read_received()); + } + // the implied ACK (8) lies after the hole + let (connection, _) = script.feed(&mut pool, 3..).active.unwrap(); + assert_eq!(expected, connection.stream_mut(Initiator).read_received()); + } + + // a hole that the seen ACK covers is overdue on the N-th further + // packet of the connection after the ACK (N is the ACK reorder + // tolerance, every packet of both directions counts), also without a + // hole give up window factor + for (factor, tolerance, packets, expected) in [ + (Some(2), 3, 2, TcpRead::Pending), + (Some(2), 3, 3, TcpRead::Gap { len: Some(3) }), + (None, 3, 2, TcpRead::Pending), + (None, 3, 3, TcpRead::Gap { len: Some(3) }), + (None, 0, 0, TcpRead::Gap { len: Some(3) }), + ] { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: factor, + ack_reorder_tolerance: tolerance, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .ack(Responder); + script.segments.remove(4); + for packet in 0..packets { + match packet % 3 { + 0 => script.ack(Initiator), + 1 => script.send(Responder, b"x"), + // a retransmission + _ => script.send_at(Initiator, 0, b"a"), + }; + } + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(expected, stream.read_received()); + } + + // a hole that the seen ACK covers stays fillable within the ACK + // reorder tolerance + { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 3, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .ack(Responder) + .ack(Initiator); + let late = script.segments.remove(4); + script.segments.push(late); + script.ack(Initiator).ack(Initiator).ack(Initiator); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcdefghi"), stream.read_received()); + assert!(stream.is_clean()); + } + + // a hole is overdue once the seen ACK, as it was N packets ago, + // covered all of it (also after a segment cut it from a larger hole) + { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 3, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 9, b"jkl") + // covers a part of the hole 3..9 + .ack_to(Responder, 5) + .ack_to(Responder, 12) + // leaves the hole 3..4, covered since the first ACK + .send_at(Initiator, 4, b"efghi") + .ack(Initiator); + script.feed(&mut pool, ..3); + let expected = [ + TcpRead::Pending, + TcpRead::Pending, + TcpRead::Pending, + TcpRead::Pending, + TcpRead::Pending, + TcpRead::Gap { len: Some(1) }, + ]; + for (segment, expected) in script.segments[3..].iter().zip(expected) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + if 0 == stream.read_offset() { + stream.read_received(); + stream.consume(3); + } + assert_eq!(expected, stream.read_received()); + } + } + + // an ACK that shrinks the window to 0 doesn't make the hole it adds + // overdue, so the bytes still arrive after it (ACK captured before + // the data it ACKs) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 10; + script.handshake().send(Initiator, b"abc"); + script.window_size = 0; + script.ack_to(Responder, 6).send_at(Initiator, 3, b"def"); + { + let (connection, _) = script.feed(&mut pool, ..5).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"def"), + connection.stream_mut(Initiator).read_received() + ); + } + + // late segments still fill an overdue hole that the read position + // hasn't reached + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .send(Initiator, b"jkl"); + let late = script.segments.remove(2); + script.segments.push(late); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcdefghijkl"), stream.read_received()); + assert!(stream.is_clean()); + } + + // a stream whose SYN was not seen starts at its first bytes (also + // after packets of the receiver, and across a wrap-around of the + // sequence numbers) + for (isn, receiver_first) in [(2000, false), (2000, true), (u32::MAX - 4, false)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, isn); + script + .handshake() + .send(Responder, b"lost") + .send(Initiator, b"x") + .send(Responder, b"abc") + .send(Responder, b"def"); + script.segments.drain(..4); + if false == receiver_first { + script.segments.remove(0); + } + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Responder); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + assert_eq!(0, stream.read_offset()); + } + + // earlier bytes arriving before the read position moved are put in + // front of a mid-stream pickup, moving the offsets (also when they + // overlap the first bytes or leave a hole) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghij") + .send_at(Initiator, 5, b"fgh"); + script.segments.drain(..3); + for (i, expected) in [ + (2, &b"ghij"[..]), + (3, b"fghij"), + (0, b"abc"), + (1, b"abcdefghij"), + ] { + let (connection, _) = script.segments[i].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(expected), stream.read_received()); + assert_eq!(0, stream.read_offset()); + assert_eq!(TcpStreamStart::MidStreamPickup, stream.status().start); + } + } + + // the hole a prepend leaves before the seen ACK is overdue once that + // ACK was seen N packets ago, also if there was no hole when it was + // seen + { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 1, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"x") + .send(Initiator, b"bc") + .send(Initiator, b"def") + .ack(Responder) + .ack(Responder); + script.segments.drain(..3); + // without "bc", "x" after the ACKs + script.segments.remove(1); + script.segments.rotate_left(1); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(vec![1..3], stream.holes().collect::>()); + stream.read_received(); + stream.consume(1); + assert_eq!(TcpRead::Gap { len: Some(2) }, stream.read_received()); + } + + // a prepend moves the overdue state with the offsets: the ACK of N + // packets ago, settled before the prepend or after it + for (tolerance, acks_after) in [(1, 1), (2, 0)] { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: tolerance, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"lostlostxy") + .send(Initiator, b"abc") + .send(Initiator, b"lll") + .send(Initiator, b"ghi"); + let x = script.injected(|s| { + s.send_at(Initiator, 8, b"x"); + }); + // ACKs of the bytes up to "ghi", before and after "x" + for _ in 0..1 + acks_after { + script.ack_to(Responder, 16); + } + script.segments.push(x); + script.ack_to(Responder, 16); + script.segments.drain(..4); + // without "lll" + script.segments.remove(1); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + // "x", hole, "abc", hole, "ghi", where the ACK of the "ghi" covers + // both holes for long enough + assert_eq!(vec![1..2, 5..8], stream.holes().collect::>()); + assert_eq!(TcpRead::Data(b"x"), stream.read_received()); + stream.consume(1); + assert_eq!(TcpRead::Gap { len: Some(1) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + } + + // the implied ACK moves with the offsets too, also after a FIN moved + // the highest offset back (the implied ACK never moves back) + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"lostlostxy") + .send(Initiator, b"abc"); + let x = script.injected(|s| { + s.send_at(Initiator, 8, b"x"); + }); + // an ACK two bytes after "abc" (one window), then the FIN after + // "abc", which moves the highest offset back + script.ack_to(Responder, 15).fin(Initiator); + script.segments.push(x); + script.segments.drain(..4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(Some(5), stream.fin_offset()); + assert_eq!(TcpRead::Data(b"x"), stream.read_received()); + stream.consume(1); + // the implied ACK was 2 windows before the ACK, 3 after "x" + assert_eq!(TcpRead::Gap { len: Some(1) }, stream.read_received()); + } + + // a keep-alive doesn't start a stream if it ends at the receiver's + // ACK, but as the first packet it does, with its filler byte + // (regression test: the old tcp-reassembly branch always started + // the stream at it) + for (receiver_first, expected) in [(true, &b"def"[..]), (false, b"xdef")] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"ghi"); + let keep_alive = script.injected(|s| { + s.send_at(Initiator, 2, b"x"); + }); + script.send(Initiator, b"def"); + // without the handshake and the bytes before the keep-alive + script.segments.drain(..4); + script + .segments + .insert(usize::from(receiver_first), keep_alive); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(expected), + connection.stream_mut(Initiator).read_received() + ); + } + + // other segments at the position of a keep-alive (the byte before + // the receiver's ACK) start the stream: two bytes and a byte with a + // FIN. A keep-alive without bytes doesn't (the following bytes start + // the stream). + for (payload, fin, expected) in [ + (&b"bc"[..], false, &b"bcd"[..]), + (b"b", true, b"b"), + (b"", false, b"cd"), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"ab") + .send(Responder, b"ghi"); + let segment = script.injected(|s| { + s.send_at(Initiator, 1, payload); + }); + script.send_at(Initiator, 2, b"cd"); + script.segments.drain(..4); + script.segments.insert(1, segment); + script.segments[1].header.fin = fin; + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(expected), + connection.stream_mut(Initiator).read_received() + ); + } + + // the end is reported once all bytes up to the FIN were read + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"ab") + .fin_with_data(Initiator, b"c") + .fin(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(2); + assert_eq!(TcpRead::Data(b"c"), stream.read_received()); + stream.consume(1); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + // without bytes + assert_eq!( + TcpRead::End(TcpStreamEnd::Fin), + connection.stream_mut(Responder).read_received() + ); + } + + // bytes after the FIN are never readable + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .send(Initiator, b"def") + .send_at(Initiator, 1, b"bcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // no end while bytes before the FIN are missing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // bytes starting after the receiver's window are never readable + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send_at(Initiator, 201, b"x") + .send_at(Initiator, 0, &[b'a'; 201]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(&[b'a'; 201]), stream.read_received()); + stream.consume(201); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // a retransmitted SYN changes nothing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn_with_data(b"abc") + .syn_ack() + .send(Initiator, b"def"); + let syn = script.segments[0].clone(); + script.segments.push(syn); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abcdef"), + connection.stream_mut(Initiator).read_received() + ); + } + + // data far after the receiver's window (e.g. after a large capture + // loss) continues the stream once an ACK of the other side within + // one window of it confirms the jump: the bytes after it follow a + // gap of unknown length, which also covers the confirmed bytes (also + // across a wrap-around of the sequence numbers) + for isn in [1000, u32::MAX - 500] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(isn, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, b"a.js"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"a.js"), stream.read_received()); + } + + // an ACK beyond the window that arrives before the data confirms the + // jump once the data arrives, which is then the new start + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 1000) + .send_at(Initiator, 1000, b"GET /") + .send(Initiator, b"a.js"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"GET /a.js"), stream.read_received()); + } + + // without an ACK that confirms the jump, the data after the window + // is not read + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .send(Initiator, b"a.js"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // the holes before a jump can't be filled anymore, as their bytes + // now map elsewhere: they are read as gaps before the gap of the + // resync + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi"); + script.segments.remove(4); + script + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, b"a.js"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"ghi"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"a.js"), stream.read_received()); + } + + // resyncs without bytes between them leave one gap, unless the read + // position stepped over the gap of the first one + for step_over in [false, true] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"x") + .ack(Responder) + .send_at(Initiator, 5000, b"y") + .ack(Responder) + .send(Initiator, b"z"); + { + let (connection, _) = script.feed(&mut pool, ..6).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + if step_over { + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + } + } + let (connection, _) = script.feed(&mut pool, 6..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(2, stream.status().resyncs); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"z"), stream.read_received()); + } + + // with resync_after_segments = Some(n), n consecutive segments after + // the window, each within one window of the one before, continue + // the stream at the last of them without an ACK, but n - 1 don't + for (after, resynced) in [(3, true), (4, false)] { + let config = TcpReassemblyConfig { + resync_after_segments: Some(after), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"x") + .send(Initiator, b"y") + .send(Initiator, b"z"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + if resynced { + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"z"), stream.read_received()); + } else { + assert_eq!(TcpRead::Pending, stream.read_received()); + } + } + + // after a reset, the holes are gaps, every byte received can be + // read, and then the end is reported + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .rst(Responder); + script.segments.remove(4); + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"ghi"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::End(TcpStreamEnd::Reset), stream.read_received()); + assert_eq!( + TcpRead::End(TcpStreamEnd::Reset), + connection.stream_mut(Responder).read_received() + ); + } + + // ... also behind the gap of a resync + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .rst(Initiator); + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::End(TcpStreamEnd::Reset), stream.read_received()); + } + + // a stream whose FIN arrived before the reset ends at its FIN, also + // with a hole before the FIN + for lost in [false, true] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin_with_data(Initiator, b"def") + .rst(Responder); + if lost { + script.segments.remove(3); + } + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + let stream = connection.stream_mut(Initiator); + if lost { + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } else { + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + } + stream.consume(6); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + } + + #[test] + fn read_acked() { + // nothing ACKed yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Pending, stream.read_acked()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // bytes up to the ACKed offset (also across a wrap-around of the + // sequence numbers) + for isn in [1000, u32::MAX - 2] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(isn, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .ack_to(Responder, 4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcd"), stream.read_acked()); + stream.consume(4); + assert_eq!(TcpRead::Pending, stream.read_acked()); + } + script.ack(Responder); + let (connection, _) = script.feed(&mut pool, 6..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"ef"), + connection.stream_mut(Initiator).read_acked() + ); + } + + // without ACKs (capture of one direction), the bytes up to the + // implied ACK are readable + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn().send(Initiator, b"abcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"ab"), + connection.stream_mut(Initiator).read_acked() + ); + } + + // regression test (the old tcp-reassembly branch stalled after + // capture loss): in a capture of one direction, the implied ACK alone + // delivers the bytes up to two fallback windows before the highest + // offset, with one gap per lost range + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn(); + for chunk in b"abcdefghijklmnopqrstuvwx".chunks(2) { + script.send(Initiator, chunk); + } + // lose "cd", "ij" and "kl" + for index in [6, 5, 2] { + script.segments.remove(index); + } + let mut delivered = Vec::new(); + let mut gaps = Vec::new(); + for segment in &script.segments { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + loop { + match stream.read_acked() { + TcpRead::Data(data) => { + delivered.extend_from_slice(data); + let len = data.len(); + stream.consume(len); + } + TcpRead::Gap { len } => { + gaps.push((stream.read_offset(), len)); + stream.consume_gap(); + } + _ => break, + } + } + } + assert_eq!(&b"abefghmnopqrst"[..], &delivered[..]); + assert_eq!(vec![(2, Some(2)), (8, Some(4))], gaps); + } + + // consuming is limited to the ACKed bytes that were read + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abcdef") + .ack_to(Responder, 2); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"ab"), stream.read_acked()); + stream.consume(10); + assert_eq!(2, stream.read_offset()); + assert_eq!(TcpRead::Data(b"cdef"), stream.read_received()); + } + + // reading stops at a hole, even if bytes after it are ACKed + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .ack(Responder); + let missing = script.segments.remove(4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_acked() + ); + } + let (connection, _) = missing.feed(&mut pool, ()).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abcdefghi"), + connection.stream_mut(Initiator).read_acked() + ); + } + + // the end is reported once all bytes up to the FIN were read + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .fin_with_data(Initiator, b"abc") + .ack(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_acked()); + stream.consume(3); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_acked()); + } + + // bytes consumed after reading them with read_received + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abcdef") + .ack_to(Responder, 2); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + stream.consume(4); + assert_eq!(TcpRead::Pending, stream.read_acked()); + assert_eq!(TcpRead::Data(b"ef"), stream.read_received()); + } + + // the gap of a resync is read at its offset, and the bytes after it + // once they are ACKed (the ACK of the jump ACKs the bytes before it) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, b"a.js") + .ack(Responder); + { + let (connection, _) = script.feed(&mut pool, ..7).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_acked()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_acked()); + stream.consume_gap(); + assert_eq!(TcpRead::Pending, stream.read_acked()); + } + let (connection, _) = script.feed(&mut pool, 7..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"a.js"), + connection.stream_mut(Initiator).read_acked() + ); + } + + // after a reset, the end is reported once the ACKed bytes were read, + // even if bytes that were not ACKed are left (they can still be + // read with read_received). The ACK of the RST counts. + for (rst_acks, acked) in [(false, &b"abc"[..]), (true, b"abcdef")] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack(Responder) + .send(Initiator, b"def") + .rst(Responder); + script.segments[6].header.ack = rst_acks; + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(acked), stream.read_acked()); + stream.consume(acked.len()); + assert_eq!(TcpRead::End(TcpStreamEnd::Reset), stream.read_acked()); + if false == rst_acks { + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } + } + + // a stream whose FIN arrived before the reset ends at the FIN once + // the bytes before it are ACKed, otherwise the reset ends it before + // the bytes that were not ACKed + for (rst_acks, acked, end) in [ + (false, &b"abc"[..], TcpStreamEnd::Reset), + (true, b"abcdef", TcpStreamEnd::Fin), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack(Responder) + .fin_with_data(Initiator, b"def") + .rst(Responder); + script.segments[6].header.ack = rst_acks; + let mut connection = script.feed_all(&mut pool).ended.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(acked), stream.read_acked()); + stream.consume(acked.len()); + assert_eq!(TcpRead::End(end), stream.read_acked()); + } + } + + #[test] + fn consume() { + // moving the read position ends putting earlier bytes in front of + // a mid-stream pickup, consuming nothing doesn't. A consume after + // bytes were put in front consumes nothing until the next read. + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi"); + script.segments.drain(..3); + { + let (connection, _) = script.segments[2].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"ghi"), stream.read_received()); + stream.consume(0); + } + { + let (connection, _) = script.segments[1].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.consume(3); + assert_eq!(0, stream.read_offset()); + assert_eq!(TcpRead::Data(b"defghi"), stream.read_received()); + stream.consume(1); + } + let (connection, _) = script.segments[0].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(1, stream.read_offset()); + assert_eq!(TcpRead::Data(b"efghi"), stream.read_received()); + assert_eq!(1, stream.status().out_of_window_segments); + } + + // partial consumes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + stream.consume(2); + assert_eq!(TcpRead::Data(b"cdef"), stream.read_received()); + stream.consume(1); + stream.consume(2); + assert_eq!(TcpRead::Data(b"f"), stream.read_received()); + stream.consume(1); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // consuming is limited to the bytes the last read returned + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abc"), + connection.stream_mut(Initiator).read_received() + ); + } + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.consume(10); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } + + // nothing is consumed without a read + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.consume(2); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // nothing is consumed after a pending read + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + { + let (connection, _) = script.feed(&mut pool, ..3).active.unwrap(); + assert_eq!( + TcpRead::Pending, + connection.stream_mut(Initiator).read_received() + ); + } + let (connection, _) = script.feed(&mut pool, 3..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.consume(2); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // bytes arriving after a consume follow the unconsumed bytes + for consumed in 0..=6 { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abcdef") + .send(Initiator, b"gh"); + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + stream.consume(consumed); + } + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + assert_eq!( + TcpRead::Data(&b"abcdefgh"[consumed..]), + connection.stream_mut(Initiator).read_received() + ); + } + + // a long stream with swapped segments, consumed in small steps that + // fall behind the received bytes + { + let data: Vec = (0..64 * 1024).map(|i| (i % 251) as u8).collect(); + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + for chunk in data.chunks(1000) { + script.send(Initiator, chunk); + } + for pair in script.segments[3..].chunks_mut(2) { + pair.reverse(); + } + let mut delivered = Vec::new(); + for (i, segment) in script.segments.iter().enumerate() { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + // at most 100 reads per segment, all bytes after the last one + let last = i + 1 == script.segments.len(); + let mut reads = 0; + while let TcpRead::Data(d) = stream.read_received() { + if 100 == reads && false == last { + break; + } + let len = d.len().min(7); + delivered.extend_from_slice(&d[..len]); + stream.consume(len); + reads += 1; + } + } + assert_eq!(data, delivered); + } + + // consuming up to an overdue hole gives it up right away, as the + // read position reaches it + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .send(Initiator, b"jkl"); + script.segments.remove(2); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(2); + assert_eq!(&[3..6][..], stream.holes().collect::>()); + stream.consume(1); + assert_eq!(0, stream.holes().count()); + assert_eq!((1, 3), (stream.status().gaps, stream.status().gap_bytes)); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + } + + // retransmissions of consumed bytes are not delivered again + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + } + let (connection, _) = script.segments[3].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Pending, stream.read_received()); + assert_eq!(3, stream.read_offset()); + } + } + + #[test] + fn give_up_hole() { + // the hole at the read position becomes a gap, which is read before + // the bytes after it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi"); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert!(stream.give_up_hole()); + assert_eq!(0, stream.holes().count()); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(6, stream.read_offset()); + assert_eq!(TcpRead::Data(b"ghi"), stream.read_received()); + } + + // no hole at the read position + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 5, b"f"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + // bytes at the read position, the hole lies after them + assert!(false == stream.give_up_hole()); + assert_eq!(&[3..5][..], stream.holes().collect::>()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + // a gap at the read position + assert!(stream.give_up_hole()); + assert!(false == stream.give_up_hole()); + assert_eq!(TcpRead::Gap { len: Some(2) }, stream.read_received()); + stream.consume_gap(); + // no holes at all + assert!(false == stream.give_up_hole()); + assert_eq!(TcpRead::Data(b"f"), stream.read_received()); + assert_eq!((1, 2), (stream.status().gaps, stream.status().gap_bytes)); + } + + // reading only ACKed bytes returns the gap too + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send_at(Initiator, 3, b"def"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.give_up_hole()); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_acked()); + stream.consume_gap(); + assert_eq!(TcpRead::Pending, stream.read_acked()); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } + + // bytes of the gap that arrive later are ignored, also if they differ + // from the placeholders + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi"); + let missing = script.segments.remove(4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + } + let (connection, _) = missing.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().conflicting_retransmissions); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"ghi"), stream.read_received()); + } + + // a hole up to an ACK after the received bytes, whose bytes arrive + // after it was given up, followed by new bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 6); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + assert_eq!((1, 3), (stream.status().gaps, stream.status().gap_bytes)); + } + script + .send_at(Initiator, 3, b"dX") + .send_at(Initiator, 4, b"efgh"); + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().conflicting_retransmissions); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"gh"), stream.read_received()); + } + + // a FIN inside a gap up to an ACK cuts the gap, also after bytes of + // the gap arrived (they are ignored) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 10); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + } + script + .send_at(Initiator, 3, b"defgh") + .fin_at(Initiator, 6, &[]); + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(Some(6), stream.fin_offset()); + assert_eq!(6, stream.highest_offset()); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + // the counters keep the bytes that were given up + assert_eq!((1, 7), (stream.status().gaps, stream.status().gap_bytes)); + } + + // an overdue hole at the read position is a gap already + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send_at(Initiator, 3, b"def") + .send_at(Initiator, 6, b"ghi"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(false == stream.give_up_hole()); + assert_eq!((1, 3), (stream.status().gaps, stream.status().gap_bytes)); + } + + // a hole at the gap of a resync is given up behind it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send_at(Initiator, 1010, b"s"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Gap { len: Some(5) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"s"), stream.read_received()); + } + } + + #[test] + fn consume_gap() { + // does nothing if the read position is not at a gap + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 5, b"f"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + // at bytes + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume_gap(); + assert_eq!(0, stream.read_offset()); + // at a hole + stream.read_received(); + stream.consume(3); + stream.consume_gap(); + assert_eq!(3, stream.read_offset()); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // steps over a gap between received bytes, the bytes after it are + // read next (also behind further holes and gaps) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send_at(Initiator, 0, b"ab") + .send_at(Initiator, 4, b"ef") + .send_at(Initiator, 8, b"ij"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + for (offset, data) in [(2, &b"ef"[..]), (6, b"ij")] { + stream.read_received(); + stream.consume(2); + assert!(stream.give_up_hole()); + stream.consume_gap(); + assert_eq!(offset + 2, stream.read_offset()); + assert_eq!(TcpRead::Data(data), stream.read_received()); + } + } + + // steps over a gap after the received bytes, new bytes after it are + // read next + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 5); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + stream.consume_gap(); + assert_eq!(5, stream.read_offset()); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + script.send_at(Initiator, 5, b"fg"); + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"fg"), + connection.stream_mut(Initiator).read_received() + ); + } + + // steps over a gap up to the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + stream.consume_gap(); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // steps onto an overdue hole, which is given up right away + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 5; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 6); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(stream.give_up_hole()); + } + // a hole after the gap, overdue once the implied ACK (11) passes + // it + script + .ack_to(Responder, 10) + .send_at(Initiator, 10, b"klmnopqrstu"); + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(&[6..10][..], stream.holes().collect::>()); + stream.consume_gap(); + assert_eq!(0, stream.holes().count()); + assert_eq!((2, 7), (stream.status().gaps, stream.status().gap_bytes)); + assert_eq!(TcpRead::Gap { len: Some(4) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"klmnopqrstu"), stream.read_received()); + } + + // steps over the gap of a resync, which takes no offsets + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, b"a.js"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + stream.consume_gap(); + assert_eq!(3, stream.read_offset()); + assert_eq!(TcpRead::Data(b"a.js"), stream.read_received()); + stream.consume_gap(); + assert_eq!(3, stream.read_offset()); + } + } + + #[test] + fn discard_until() { + // discarding ends putting earlier bytes in front of a mid-stream + // pickup, discarding up to its first byte doesn't + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi"); + script.segments.drain(..3); + { + let (connection, _) = script.segments[2].feed(&mut pool, ()).active.unwrap(); + connection.stream_mut(Initiator).discard_until(0); + } + { + let (connection, _) = script.segments[1].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"defghi"), stream.read_received()); + stream.discard_until(1); + } + let (connection, _) = script.segments[0].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"efghi"), stream.read_received()); + assert_eq!(1, stream.status().out_of_window_segments); + } + + // an offset inside the received bytes drops the bytes before it, + // which keeps the stream clean + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_until(2); + assert_eq!(2, stream.read_offset()); + assert_eq!(TcpRead::Data(b"cdef"), stream.read_received()); + stream.discard_until(5); + assert_eq!(TcpRead::Data(b"f"), stream.read_received()); + assert!(stream.is_clean()); + } + + // offsets at or before the read offset change nothing + for offset in [0, 1, 2] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(2); + assert_eq!(TcpRead::Data(b"cdef"), stream.read_received()); + stream.discard_until(offset); + assert_eq!(2, stream.read_offset()); + // the bytes of the last read can still be consumed + stream.consume(1); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } + + // the bytes of the last read can't be consumed after a discard + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + stream.discard_until(2); + stream.consume(2); + assert_eq!(TcpRead::Data(b"cdef"), stream.read_received()); + } + + // holes before the offset are dropped (a hole containing it only + // partly) without counting as gaps, the missing bytes after it stay + // a hole + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send_at(Initiator, 0, b"ab") + .send_at(Initiator, 4, b"ef") + .send_at(Initiator, 10, b"k"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_until(8); + assert_eq!(8, stream.read_offset()); + assert_eq!(&[8..10][..], stream.holes().collect::>()); + assert_eq!(TcpRead::Pending, stream.read_received()); + assert_eq!((0, 0), (stream.status().gaps, stream.status().gap_bytes)); + assert!(stream.is_clean()); + // the rest of the hole can still be filled + script.send_at(Initiator, 6, b"ghij"); + let (connection, _) = script.feed(&mut pool, 6..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"ijk"), + connection.stream_mut(Initiator).read_received() + ); + } + + // an offset after the highest offset drops all bytes and holes up to + // the highest offset, the bytes after it are readable once they + // arrive + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 5); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_until(100); + assert_eq!(5, stream.read_offset()); + assert_eq!(0, stream.holes().count()); + assert_eq!((0, 0), (stream.status().gaps, stream.status().gap_bytes)); + } + script.send_at(Initiator, 5, b"fg"); + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"fg"), + connection.stream_mut(Initiator).read_received() + ); + } + + // retransmissions of discarded bytes are ignored + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abcdef"); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + connection.stream_mut(Initiator).discard_until(4); + } + script.send_at(Initiator, 0, b"XYZWe"); + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"ef"), stream.read_received()); + assert!(stream.is_clean()); + } + + // an offset inside a gap at the read position shortens the gap + // without counting it again + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send_at(Initiator, 5, b"f"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.give_up_hole()); + stream.discard_until(2); + assert_eq!(TcpRead::Gap { len: Some(3) }, stream.read_received()); + assert_eq!((1, 5), (stream.status().gaps, stream.status().gap_bytes)); + stream.discard_until(5); + assert_eq!(TcpRead::Data(b"f"), stream.read_received()); + } + + // an offset inside an overdue hole gives up the rest of it, as the + // read position reaches it (the discarded part doesn't count) + { + let config = TcpReassemblyConfig { + fallback_window: 4, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send_at(Initiator, 9, b"jkl") + .send(Initiator, b"mno") + .send(Initiator, b"pqr"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_until(5); + assert_eq!(0, stream.holes().count()); + assert_eq!((1, 4), (stream.status().gaps, stream.status().gap_bytes)); + assert_eq!(TcpRead::Gap { len: Some(4) }, stream.read_received()); + } + + // up to the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().fin_with_data(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_until(10); + assert_eq!(3, stream.read_offset()); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + assert!(stream.is_complete()); + } + + // keeps the gap of a resync at the offset, and discards it with the + // bytes after it + for (offset, expected) in [ + (3, TcpRead::Gap { len: None }), + (4, TcpRead::Data(&b".js"[..])), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, b"a.js"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_until(offset); + assert_eq!(expected, stream.read_received()); + } + } + + #[test] + fn discard_all() { + // ends putting earlier bytes in front of a mid-stream pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + script.segments.drain(..3); + { + let (connection, _) = script.segments[1].feed(&mut pool, ()).active.unwrap(); + connection.stream_mut(Initiator).discard_all(); + } + let (connection, _) = script.segments[0].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(3, stream.read_offset()); + assert_eq!(TcpRead::Pending, stream.read_received()); + assert_eq!(1, stream.status().out_of_window_segments); + } + + // drops the received bytes, which keeps the stream clean, and new + // bytes continue the stream + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.discard_all(); + assert_eq!(3, stream.read_offset()); + assert_eq!(TcpRead::Pending, stream.read_received()); + assert!(stream.is_clean()); + } + script.send(Initiator, b"def"); + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"def"), + connection.stream_mut(Initiator).read_received() + ); + } + + // drops the holes without counting them as gaps, and a gap at the + // read position that was counted when it was given up + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send_at(Initiator, 2, b"c") + .send_at(Initiator, 5, b"f") + .ack_to(Responder, 8); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.give_up_hole()); + stream.discard_all(); + assert_eq!(8, stream.read_offset()); + assert_eq!(0, stream.holes().count()); + assert_eq!(TcpRead::Pending, stream.read_received()); + assert_eq!((1, 2), (stream.status().gaps, stream.status().gap_bytes)); + } + script.send_at(Initiator, 6, b"ghij"); + let (connection, _) = script.feed(&mut pool, 6..).active.unwrap(); + assert_eq!( + TcpRead::Data(b"ij"), + connection.stream_mut(Initiator).read_received() + ); + } + + // nothing buffered + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_all(); + assert_eq!(0, stream.read_offset()); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // up to the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().fin_with_data(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_all(); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // keeps the gap of a resync without bytes after it + for (after, expected) in [ + (&b""[..], TcpRead::Gap { len: None }), + (b"a.js", TcpRead::Pending), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, after); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.discard_all(); + assert_eq!(expected, stream.read_received()); + } + } + + #[test] + fn force_resync() { + // the next segment with bytes is the new start, behind a gap of + // unknown length, also if it lies in the window + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + connection.stream_mut(Initiator).force_resync(); + } + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(1, stream.status().resyncs); + assert_eq!(0, stream.status().out_of_window_segments); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } + + // ... such as one with a new initial sequence number before the + // stream's bytes, which isn't detected otherwise + for forced in [false, true] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let jumped = script.seq(Initiator, 0).wrapping_sub(1_000_000); + for (seq, payload) in [(jumped, b"new"), (jumped.wrapping_add(3), b"er!")] { + let mut segment = script.injected(|s| { + s.send(Initiator, payload); + }); + segment.header.sequence_number = seq; + script.segments.push(segment); + } + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + if forced { + connection.stream_mut(Initiator).force_resync(); + } + } + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + if forced { + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"newer!"), stream.read_received()); + } else { + assert_eq!(TcpRead::Pending, stream.read_received()); + } + } + + // segments without bytes and SYNs are no new start + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc").ack(Initiator); + let mut syn = script.segments[0].clone(); + syn.payload = b"abc".to_vec(); + script.segments.push(syn); + script.send(Initiator, b"def"); + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + connection.stream_mut(Initiator).force_resync(); + } + script.feed(&mut pool, 4..6); + let (connection, _) = script.feed(&mut pool, 6..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(1, stream.status().resyncs); + stream.read_received(); + stream.consume(3); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + } + + // does nothing before the stream started (its first bytes start it + // anyway), after its FIN, or if its FIN arrives before the next bytes + let cases: [(fn(&mut ConnectionScript), fn(&mut ConnectionScript)); 3] = [ + ( + |s| { + s.handshake().send(Initiator, b"abc"); + s.segments.drain(..3); + }, + |s| { + s.send(Responder, b"def"); + }, + ), + ( + |s| { + s.handshake().send(Initiator, b"abc").fin(Responder); + }, + |s| { + s.send(Responder, b"def"); + }, + ), + ( + |s| { + s.handshake().send(Initiator, b"abc"); + }, + |s| { + s.fin(Responder).send(Responder, b"def"); + }, + ), + ]; + for (before, after) in cases { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + before(&mut script); + let fed = script.segments.len(); + after(&mut script); + { + let (connection, _) = script.feed(&mut pool, ..fed).active.unwrap(); + connection.stream_mut(Responder).force_resync(); + } + let (connection, _) = script.feed(&mut pool, fed..).active.unwrap(); + assert_eq!(0, connection.stream(Responder).status().resyncs); + } + + // ... so after the FIN, earlier bytes are still put in front of a + // mid-stream pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin_with_data(Initiator, b"def"); + let earlier = script.segments[3].clone(); + script.segments.drain(..4); + script.segments.push(earlier); + { + let (connection, _) = script.feed(&mut pool, ..1).active.unwrap(); + connection.stream_mut(Initiator).force_resync(); + } + let (connection, _) = script.feed(&mut pool, 1..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().resyncs); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + } + + // ends putting earlier bytes or a late SYN in front of a mid-stream + // pickup: the next bytes are the new start, a late SYN counts as + // out-of-window + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + let syn = script.segments[0].clone(); + let earlier = script.segments[3].clone(); + script.segments.drain(..4); + script.segments.extend([syn, earlier]); + { + let (connection, _) = script.feed(&mut pool, ..1).active.unwrap(); + connection.stream_mut(Initiator).force_resync(); + } + { + let (connection, _) = script.feed(&mut pool, 1..2).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!(TcpStreamStart::MidStreamPickup, status.start); + assert_eq!(1, status.out_of_window_segments); + } + let (connection, _) = script.feed(&mut pool, 2..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpRead::Data(b"def"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + } + + #[test] + fn read_offset() { + // stays at 0 when earlier bytes are put in front of a mid-stream + // pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + script.segments.drain(..3); + script.segments.swap(0, 1); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).read_offset()); + } + + // starts at 0 and grows by the consumed bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abcdef"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.read_offset()); + stream.read_received(); + stream.consume(4); + assert_eq!(4, stream.read_offset()); + stream.consume(4); + assert_eq!(6, stream.read_offset()); + } + + // keeps growing across several wrap-arounds of the sequence numbers + { + const SEGMENT_LEN: usize = 1 << 20; + const SEGMENTS: u64 = (3 << 32) / (SEGMENT_LEN as u64) + 1; + + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(u32::MAX - 10, 2000); + script.handshake().send(Initiator, &[0; SEGMENT_LEN]); + script.feed(&mut pool, ..3); + + // re-use the bytes of the data segment and only change the + // sequence number and the first payload bytes + let data = &script.segments[3]; + let mut bytes = data.header.to_bytes().to_vec(); + let header_len = bytes.len(); + bytes.extend_from_slice(&data.payload); + + let mut offset = 0u64; + for _ in 0..SEGMENTS { + bytes[4..8].copy_from_slice(&script.seq(Initiator, offset).to_be_bytes()); + bytes[header_len..header_len + 8].copy_from_slice(&offset.to_be_bytes()); + let (connection, _) = pool + .process_segment( + TcpSegment { + vlan_ids: Default::default(), + source: data.source.ip(), + destination: data.destination.ip(), + channel_id: (), + tcp: TcpSlice::from_slice(&bytes).unwrap(), + }, + (), + ) + .active + .unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(offset, stream.read_offset()); + match stream.read_received() { + TcpRead::Data(d) => { + assert_eq!(SEGMENT_LEN, d.len()); + assert_eq!(&offset.to_be_bytes(), &d[..8]); + } + other => panic!("unexpected read {:?}", other), + } + stream.consume(SEGMENT_LEN); + offset += SEGMENT_LEN as u64; + } + assert!(offset > 3 << 32); + } + } + + #[test] + fn acked_offset() { + // earlier bytes put in front of a mid-stream pickup move the ACKed + // offset, and an ACK of the pickup's first byte or before it counts + // once the bytes it ACKs were put in front + for (ack, expected) in [(6, 6), (3, 3), (2, 2)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .ack_to(Responder, ack); + script.segments.drain(..3); + // "def", ACK, "abc" + script.segments.rotate_left(1); + { + let (connection, _) = script.feed(&mut pool, ..2).active.unwrap(); + assert_eq!( + ack.saturating_sub(3), + connection.stream(Initiator).acked_offset() + ); + } + let (connection, _) = script.feed(&mut pool, 2..).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + + // ... but not after the read position moved + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .ack_to(Responder, 3); + script.segments.drain(..4); + { + let (connection, _) = script.feed(&mut pool, ..1).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(1); + } + let (connection, _) = script.feed(&mut pool, 1..).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).acked_offset()); + } + + // the last ACK seen before a mid-stream pickup started counts once + // it starts ("de" at offset 0), unless it lies more than one window + // after its bytes, or before its first byte + for (fallback_window, ack, expected) in [(4, 9, 6), (2, 9, 0), (4, 2, 0)] { + let config = TcpReassemblyConfig { + fallback_window, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"x") + .ack_to(Responder, ack) + .send(Initiator, b"de"); + script.segments.drain(..4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + + // nothing ACKed yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).acked_offset()); + assert_eq!(0, connection.stream(Responder).acked_offset()); + } + + // follows the highest ACK, older ACKs arriving later change nothing + // (also across a wrap-around of the sequence numbers) + for isn in [1000, u32::MAX - 2] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(isn, 2000); + script + .handshake() + .send(Initiator, b"abcdef") + .ack_to(Responder, 2) + .ack_to(Responder, 5) + .ack_to(Responder, 3) + .ack_to(Responder, 6); + script.feed(&mut pool, ..4); + for (segment, expected) in script.segments[4..].iter().zip([2, 5, 5, 6]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + } + + // an ACK of the FIN ACKs all bytes, but nothing after them + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .fin_with_data(Initiator, b"abc") + .ack_to(Responder, 4) + .ack_to(Responder, 5); + script.feed(&mut pool, ..4); + for segment in &script.segments[4..] { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(3, stream.acked_offset()); + assert_eq!(0, stream.holes().count()); + } + } + + // ACKs count up to one window after the highest offset, using the + // window the receiver advertised before the ACK + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 104) + .ack_to(Responder, 103); + // a window of 0 limits the next ACK, not the one in its segment + script.window_size = 0; + script.ack_to(Responder, 203).ack_to(Responder, 204); + script.feed(&mut pool, ..4); + for (segment, expected) in script.segments[4..].iter().zip([0, 103, 203, 203]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + } + + // the implied ACK: the sender sends at most one window after the + // ACK, so the receiver ACKed the bytes up to the hole give up window + // factor times the window before the highest offset (it never moves + // back when the window grows, and a higher seen ACK counts) + for (factor, expected) in [ + (Some(2), [0, 50, 50, 200]), + (Some(1), [50, 150, 150, 200]), + (None, [0, 0, 0, 200]), + ] { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: factor, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, &[b'a'; 150]) + .send(Initiator, &[b'b'; 100]); + script.window_size = 1000; + script.ack_to(Responder, 0).ack_to(Responder, 200); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip(expected) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + } + + // the implied ACK uses the largest window the receiver advertised, so + // a window that shrinks (e.g. to 0) doesn't move it forward + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, &[b'a'; 150]) + .send(Initiator, &[b'b'; 100]); + script.window_size = 0; + script.ack_to(Responder, 0); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([0, 50, 50]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + } + + // ACKs up to 2^31 - 1 after the highest offset count (with a window + // above 2^31), one 2^31 away can't be mapped, and one 2^31 + 1 after + // it lies 2^31 - 1 before it + for (distance, expected) in [ + ((1 << 31) - 1, 2 + (1 << 31)), + (1 << 31, 0), + ((1 << 31) + 1, 0), + ] { + let config = TcpReassemblyConfig { + fallback_window: u32::MAX, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 3 + distance); + script.segments.drain(..3); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + + // after the FIN, ACKs count up to one window after the FIN (the ACK + // of the FIN even with a window of 0) + for (window, ack, expected) in [(0, 4, 3), (100, 104, 3), (100, 105, 0)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = window; + script + .handshake() + .fin_with_data(Initiator, b"abc") + .ack_to(Responder, ack); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).acked_offset()); + } + + // the ACK that confirms a jump counts after it: one after the + // confirmed bytes ACKs bytes that were not captured + for (ack, expected) in [(1005, 3), (1008, 6)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, ack); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(expected, stream.acked_offset()); + assert_eq!(expected, stream.highest_offset()); + } + + // the ACK that confirms a jump ACKs the bytes before it, also if it + // maps before the resync point (later data after the window replaced + // the candidate, the stream continues after "a.js") + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .send(Initiator, b"a.js") + .ack_to(Responder, 1005); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(3, stream.acked_offset()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_acked()); + } + + // an ACK that confirmed a jump before the data arrived counts after + // the new start, and ACKs the bytes before the jump + for (ack, expected) in [(1000, 3), (1003, 6), (1005, 8)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, ack) + .send_at(Initiator, 1000, b"GET /"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(1, stream.status().resyncs); + assert_eq!(expected, stream.acked_offset()); + } + + // ACKs before a jump don't count after it (with + // resync_after_segments, no ACK confirms the jump) + { + let config = TcpReassemblyConfig { + resync_after_segments: Some(1), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, 998); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(1, stream.status().resyncs); + assert_eq!(0, stream.acked_offset()); + } + + // an RST outside of the receiver's window doesn't ACK bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .rst_at(Responder, 1 << 30); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).acked_offset()); + } + } + + #[test] + fn highest_offset() { + // moves with earlier bytes put in front of a mid-stream pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + script.segments.drain(..3); + script.segments.swap(0, 1); + { + let (connection, _) = script.feed(&mut pool, ..1).active.unwrap(); + assert_eq!(3, connection.stream(Initiator).highest_offset()); + } + let (connection, _) = script.feed(&mut pool, 1..).active.unwrap(); + assert_eq!(6, connection.stream(Initiator).highest_offset()); + } + + // nothing received yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).highest_offset()); + assert_eq!(0, connection.stream(Responder).highest_offset()); + } + + // follows the furthest received byte, also behind holes (and across + // a wrap-around of the sequence numbers) + for isn in [1000, u32::MAX - 2] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(isn, 2000); + script + .handshake() + .send_at(Initiator, 0, b"abc") + // behind a hole + .send_at(Initiator, 6, b"gh") + // filling the hole + .send_at(Initiator, 3, b"def") + // retransmission + .send_at(Initiator, 0, b"ab"); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([3, 8, 8, 8]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).highest_offset()); + } + } + + // reading doesn't move it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(2); + assert_eq!(3, stream.highest_offset()); + } + + // a FIN behind missing bytes moves it to the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(6, connection.stream(Initiator).highest_offset()); + } + + // a segment far after the receiver's window doesn't move it (and + // allocates no buffer for the bytes before it) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1 << 30, b"x"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(3, stream.highest_offset()); + assert_eq!(0, stream.holes().count()); + assert_eq!(1, stream.status().out_of_window_segments); + } + + // ACKs within the receiver's window move it, a FIN before it moves it + // back + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 50) + // more than one window after it + .ack_to(Responder, 151) + .fin_at(Initiator, 20, &[]); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([3, 50, 50, 20]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).highest_offset()); + } + } + + // a resync keeps it, the bytes after the jump follow it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send(Initiator, b"a.js"); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([3, 3, 3, 7]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).highest_offset()); + } + } + } + + #[test] + fn holes() { + // earlier bytes put in front of a mid-stream pickup move the holes, + // and the bytes in between are a hole (that is not overdue) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"ab") + .send(Initiator, b"cd") + .send(Initiator, b"ef") + .send(Initiator, b"gh") + .send(Initiator, b"ij"); + script.segments.drain(..3); + // "ef", "ij", "ab" + script.segments = vec![ + script.segments[2].clone(), + script.segments[4].clone(), + script.segments[0].clone(), + ]; + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(vec![2..4, 6..8], stream.holes().collect::>()); + stream.read_received(); + stream.consume(2); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // no holes while the bytes arrive in order + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).holes().count()); + } + + // segments create holes and fill them completely or in parts + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + let steps: [(u64, &[u8], &[Range]); 10] = [ + // hole at the start of the stream + (2, b"c", &[0..2]), + // hole after received bytes + (6, b"gh", &[0..2, 3..6]), + (12, b"m", &[0..2, 3..6, 8..12]), + // splits a hole + (4, b"e", &[0..2, 3..4, 5..6, 8..12]), + (9, b"j", &[0..2, 3..4, 5..6, 8..9, 10..12]), + // fills the end of one hole and another one completely + (1, b"bcde", &[0..1, 5..6, 8..9, 10..12]), + // fills two holes completely + (5, b"fghij", &[0..1, 10..12]), + // fills the start of a hole + (10, b"k", &[0..1, 11..12]), + // fills a hole and overlaps received bytes + (11, b"lm", &[0..1]), + // fills the last hole + (0, b"a", &[]), + ]; + for (offset, data, _) in steps { + script.send_at(Initiator, offset, data); + } + script.feed(&mut pool, ..3); + for (segment, (_, _, expected)) in script.segments[3..].iter().zip(steps) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(expected, stream.holes().collect::>()); + if expected.is_empty() { + assert_eq!(TcpRead::Data(b"abcdefghijklm"), stream.read_received()); + } + } + } + + // missing bytes before a FIN, with and without bytes in the FIN + for fin_data in [&b""[..], b"gh"] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin_with_data(Initiator, fin_data); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + &[3..6][..], + connection.stream(Initiator).holes().collect::>() + ); + } + + // an ACK after the highest offset adds a hole up to it (merged with + // a hole at the end), and a FIN cuts it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + script + .send(Initiator, b"abc") + .send_at(Initiator, 6, b"g") + .ack_to(Responder, 10) + .ack_to(Responder, 12) + .fin_at(Initiator, 9, &[]); + script.feed(&mut pool, ..3); + let expected: [&[Range]; 5] = + [&[], &[3..6], &[3..6, 7..10], &[3..6, 7..12], &[3..6, 7..9]]; + for (segment, expected) in script.segments[3..].iter().zip(expected) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(expected, stream.holes().collect::>()); + } + } + + // the ACK of a FIN arriving before the FIN adds a hole that the FIN + // removes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 4) + .fin(Initiator); + script.feed(&mut pool, ..4); + for (segment, expected) in script.segments[4..].iter().zip([&[3..4][..], &[]]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(expected, stream.holes().collect::>()); + } + } + + // an overdue hole is listed until the read position reaches it + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send_at(Initiator, 6, b"ghi") + .send(Initiator, b"jkl"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(&[3..6][..], stream.holes().collect::>()); + stream.read_received(); + stream.consume(3); + assert_eq!(0, stream.holes().count()); + } + + // a keep-alive probe (one byte ending at the seen ACK, without SYN + // or FIN) doesn't fill an overdue hole, other segments do, and so + // does a keep-alive before the hole is overdue + for (packets, offset, payload, [syn, fin], expected) in [ + // keep-alive + (2, 5, &[0][..], [false; 2], &[3..6][..]), + // keep-alive before the hole is overdue + (1, 5, &[0], [false; 2], &[3..5]), + // two bytes + (2, 4, b"ef", [false; 2], &[3..4]), + // one byte that doesn't end at the seen ACK + (2, 4, b"e", [false; 2], &[3..4, 5..6]), + // SYN or FIN + (2, 5, &[0], [true, false], &[3..5]), + (2, 5, &[0], [false, true], &[3..5]), + ] { + let config = TcpReassemblyConfig { + ack_reorder_tolerance: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 6); + for _ in 0..packets { + script.ack(Initiator); + } + let mut probe = script.injected(|s| { + s.send_at(Initiator, offset, payload); + }); + probe.header.syn = syn; + probe.header.fin = fin; + if syn { + // the SYN occupies the sequence number before the byte + probe.header.sequence_number -= 1; + } + script.segments.push(probe); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + expected, + connection.stream(Initiator).holes().collect::>() + ); + } + + // a resync gives up the holes before the jump, as their bytes now + // map elsewhere + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi"); + script.segments.remove(4); + script.send_at(Initiator, 1000, b"GET /").ack(Responder); + { + let (connection, _) = script.feed(&mut pool, ..6).active.unwrap(); + assert_eq!( + vec![3..6], + connection.stream(Initiator).holes().collect::>() + ); + } + let (connection, _) = script.feed(&mut pool, 6..).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(0, stream.holes().count()); + assert_eq!((1, 3), (stream.status().gaps, stream.status().gap_bytes)); + } + } + + #[test] + fn fin_offset() { + // a FIN before the bytes received is still ignored after earlier + // bytes were put in front of a mid-stream pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + let early_fin = script.injected(|s| { + s.fin_at(Initiator, 4, &[]); + }); + script.segments.drain(..3); + script.segments.swap(0, 1); + script.segments.push(early_fin); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.stream(Initiator).fin_offset()); + } + + // earlier bytes put in front of a mid-stream pickup move the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator); + script.segments.drain(..3); + // "def", FIN, "abc" + script.segments.rotate_left(1); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Some(6), connection.stream(Initiator).fin_offset()); + } + + // no FIN yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.stream(Initiator).fin_offset()); + assert_eq!(None, connection.stream(Responder).fin_offset()); + } + + // a FIN up to 2^31 - 1 after the highest offset lies after it (a + // window above 2^31 takes it), one 2^31 away can't be mapped and + // counts as out-of-window, and one 2^31 + 1 after it lies 2^31 - 1 + // before it + for (distance, expected, out_of_window) in [ + ((1 << 31) - 1, Some(2 + (1 << 31)), 0), + (1 << 31, None, 1), + ((1 << 31) + 1, None, 0), + ] { + let config = TcpReassemblyConfig { + fallback_window: u32::MAX, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let fin = script.injected(|s| { + s.fin_at(Initiator, 3 + distance, &[]); + }); + script.segments.drain(..3); + script.segments.push(fin); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(expected, stream.fin_offset()); + assert_eq!(out_of_window, stream.status().out_of_window_segments); + } + + // FIN after the bytes, with and without data (also across a + // wrap-around of the sequence numbers) + for isn in [1000, u32::MAX - 4] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(isn, isn); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .send(Responder, b"de") + .fin_with_data(Responder, b"fgh"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Some(3), connection.stream(Initiator).fin_offset()); + assert_eq!(Some(5), connection.stream(Responder).fin_offset()); + } + + // FIN of a stream without bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().fin(Initiator); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Some(0), connection.stream(Initiator).fin_offset()); + } + + // FIN behind missing bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Some(6), connection.stream(Initiator).fin_offset()); + } + + // the first FIN wins, a retransmission of it (offset 2) and later + // FINs at other offsets change nothing + for later_offset in [2, 3, 4, 10] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"ab") + .fin(Initiator) + .fin_at(Initiator, later_offset, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Some(2), connection.stream(Initiator).fin_offset()); + } + + // a FIN before already received bytes is ignored + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin_at(Initiator, 2, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(None, connection.stream(Initiator).fin_offset()); + } + + // a FIN before already received bytes is ignored, even if bytes + // before the FIN are missing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"defgh") + .fin_at(Initiator, 6, &[]); + let missing = script.segments.remove(3); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(None, stream.fin_offset()); + assert_eq!(8, stream.highest_offset()); + } + // the bytes after it stay readable + let (connection, _) = missing.feed(&mut pool, ()).active.unwrap(); + assert_eq!( + TcpRead::Data(b"abcdefgh"), + connection.stream_mut(Initiator).read_received() + ); + } + + // a FIN before bytes that were ACKed, but not received + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 10) + .fin_at(Initiator, 6, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(Some(6), connection.stream(Initiator).fin_offset()); + } + + // a FIN before the read position, which lies after bytes up to an + // ACK that were given up, moves the read position back to it (with + // the ACK of the FIN and a larger ACK) + let give_ups: [fn(&mut TcpStream); 2] = [ + |stream| { + assert!(stream.give_up_hole()); + stream.consume_gap(); + }, + |stream| stream.discard_all(), + ]; + for ((ack, fin), give_up) in [(4, 3), (10, 6)] + .into_iter() + .flat_map(|offsets| give_ups.map(|give_up| (offsets, give_up))) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, ack); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + give_up(stream); + assert_eq!(ack, stream.read_offset()); + } + script.fin_at(Initiator, fin, &[]); + let (connection, _) = script.feed(&mut pool, 5..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(Some(fin), stream.fin_offset()); + assert_eq!(fin, stream.read_offset()); + assert_eq!(fin, stream.highest_offset()); + assert!(stream.is_finished()); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // a FIN starting after the receiver's window is ignored + for (offset, expected) in [(201, None), (200, Some(200))] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().fin_at(Initiator, offset, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).fin_offset()); + } + + // a FIN without bytes starts a stream whose SYN was not seen, which + // is then empty and finished + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Responder, b"lost") + .send(Initiator, b"abc") + .fin(Responder); + script.segments.drain(..4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Responder); + assert_eq!(Some(0), stream.fin_offset()); + assert!(stream.is_finished()); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // a FIN after the bytes that an ACK confirmed as a jump ends the + // stream at the resync point, in their segment or right after them + // (but not one further away) + let fins: [(fn(&mut ConnectionScript), Option); 3] = [ + ( + |s| { + s.fin_at(Initiator, 1000, b"xyz"); + }, + Some(3), + ), + ( + |s| { + s.send_at(Initiator, 1000, b"xyz") + .fin_at(Initiator, 1003, &[]); + }, + Some(3), + ), + ( + |s| { + s.send_at(Initiator, 1000, b"xyz") + .fin_at(Initiator, 1010, &[]); + }, + None, + ), + ]; + for (jump, expected) in fins { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + jump(&mut script); + script.ack(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(1, stream.status().resyncs); + assert_eq!(expected, stream.fin_offset()); + assert_eq!(expected.is_some(), stream.is_finished()); + if expected.is_some() { + stream.read_received(); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + } + + // after a jump, a FIN at the gap of the resync ends the stream there + // (cutting the hole that the ACK of the jump added), while a FIN + // before it is ignored, also if bytes before the jump were missing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 10) + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, 1008) + .fin_at(Initiator, 1002, &[]) + .fin_at(Initiator, 1005, &[]); + { + let (connection, _) = script.feed(&mut pool, ..8).active.unwrap(); + assert_eq!(None, connection.stream(Initiator).fin_offset()); + } + let (connection, _) = script.feed(&mut pool, 8..).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(Some(10), stream.fin_offset()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + stream.consume(3); + assert_eq!(TcpRead::Gap { len: Some(7) }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::Gap { len: None }, stream.read_received()); + stream.consume_gap(); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + } + + #[test] + fn is_finished() { + // no FIN yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(false == connection.stream(Initiator).is_finished()); + } + + // FIN after all bytes (finished before they were read) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(connection.stream(Initiator).is_finished()); + assert!(connection.stream(Responder).is_finished()); + } + + // FIN behind missing bytes finishes once they arrive, with and + // without bytes in the FIN + for fin_data in [&b""[..], b"gh"] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin_with_data(Initiator, fin_data); + let missing = script.segments.remove(4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(false == connection.stream(Initiator).is_finished()); + } + let (connection, _) = missing.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.is_finished()); + assert_eq!( + TcpRead::Data(&[&b"abcdef"[..], fin_data].concat()[..]), + stream.read_received() + ); + } + + // FIN behind a hole finishes once the hole is given up + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin_at(Initiator, 6, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(3); + assert!(false == stream.is_finished()); + assert!(stream.give_up_hole()); + assert!(stream.is_finished()); + } + + // FIN behind several holes finishes once the last one is filled + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send_at(Initiator, 1, b"b") + .fin_at(Initiator, 3, b"d") + .send_at(Initiator, 0, b"a") + .send_at(Initiator, 2, b"c"); + script.feed(&mut pool, ..3); + for (segment, finished) in script.segments[3..].iter().zip([false, false, false, true]) + { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(finished, connection.stream(Initiator).is_finished()); + } + } + + // an overdue hole before the FIN keeps it unfinished until the read + // position reaches it, as late segments can still fill it + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send_at(Initiator, 6, b"ghi") + .fin_with_data(Initiator, b"jkl"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(false == stream.is_finished()); + stream.read_received(); + stream.consume(3); + assert!(stream.is_finished()); + } + + // a reset finishes a stream whose FIN was seen, as the holes before + // the FIN become gaps, but not a stream without a FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin_with_data(Initiator, b"def") + .rst(Responder); + script.segments.remove(3); + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + assert!(false == connection.stream(Initiator).is_finished()); + } + let connection = script.feed(&mut pool, 4..).ended.unwrap(); + assert!(connection.stream(Initiator).is_finished()); + assert!(false == connection.stream(Responder).is_finished()); + } + } + + #[test] + fn status() { + // new stream, whose SYN gives it an observed start (the other + // stream's SYN was not seen yet) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + &TcpStreamStatus { + start: TcpStreamStart::Observed, + gaps: 0, + gap_bytes: 0, + resyncs: 0, + conflicting_retransmissions: 0, + out_of_window_segments: 0, + }, + connection.stream(Initiator).status() + ); + assert_eq!( + TcpStreamStart::MidStreamPickup, + connection.stream(Responder).status().start + ); + } + + // a stream whose SYN was not seen is a mid-stream pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + script.segments.drain(..2); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + for role in [Initiator, Responder] { + assert_eq!( + TcpStreamStart::MidStreamPickup, + connection.stream(role).status().start + ); + } + } + + // a late SYN gives a mid-stream pickup an observed start before its + // read position moved, when it lies at most k windows (the hole give + // up window factor, 2 without one) before the first byte (moving the + // offsets), or at it + for (factor, fallback_window, lost, expected) in [ + (Some(2), 2, &b"abcd"[..], &b""[..]), + (Some(1), 4, b"abcd", b""), + (None, 2, b"abcd", b""), + (None, 2, b"", b"abcdef"), + ] { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: factor, + fallback_window, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, lost) + .send(Initiator, b"abcdef"[lost.len()..].as_ref()); + let syn = script.segments[0].clone(); + script.segments.drain(..4); + script.segments.push(syn); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(TcpStreamStart::Observed, stream.status().start); + assert_eq!(0, stream.status().out_of_window_segments); + assert_eq!(6, stream.highest_offset()); + if expected.is_empty() { + assert_eq!(TcpRead::Pending, stream.read_received()); + } else { + assert_eq!(TcpRead::Data(expected), stream.read_received()); + } + } + + // other SYNs of a mid-stream pickup count as out-of-window and + // change nothing, not even with bytes (TCP Fast Open): after the + // read position moved, more than k windows before the first byte, + // after the first byte, 2^31 away from the highest offset (can't be + // mapped), and for a pickup that starts at its FIN + for (factor, fallback_window, lost, consumed, syn_offset, fin) in [ + (None, 3, &b""[..], 1, 0, false), + (Some(2), 2, b"abcde", 0, 0, false), + (Some(1), 4, b"abcde", 0, 0, false), + (None, 2, b"abcde", 0, 0, false), + (None, 3, b"", 0, 2, false), + (None, 3, b"", 0, (1 << 31) + 3, false), + (None, 3, b"", 0, 0, true), + ] { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: factor, + fallback_window, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, lost); + if fin { + script.fin(Initiator); + } else { + script.send(Initiator, b"def"); + } + let mut syn = script.segments[0].clone(); + syn.header.sequence_number += syn_offset; + syn.payload = b"XYZ".to_vec(); + script.segments.drain(..4); + // the responder's bytes start the connection + script.send(Responder, b"x"); + let responder = script.segments.pop().unwrap(); + script.segments.insert(0, responder); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(consumed); + } + let (connection, _) = syn.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(TcpStreamStart::MidStreamPickup, stream.status().start); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(0, stream.status().conflicting_retransmissions); + assert_eq!(if fin { 0 } else { 3 }, stream.highest_offset()); + } + + // segments without bytes before the first byte of a mid-stream + // pickup change nothing (e.g. earlier ACKs of its sender, or its + // keep-alives), before and after the read position moved + for consumed in [0, 1] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + let ack = script.injected(|s| { + s.send_at(Initiator, 1, &[]); + }); + script.segments.drain(..4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(consumed); + } + let (connection, _) = ack.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().out_of_window_segments); + assert_eq!(3, stream.highest_offset()); + assert_eq!(Vec::>::new(), stream.holes().collect::>()); + } + + // a late SYN-ACK gives both streams of mid-stream pickups an + // observed start (the initiator's at its ACK), but not to streams + // whose read position moved; a SYN after it changes nothing + for consumed in [false, true] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Responder, b"def"); + let syn = script.segments[0].clone(); + let syn_ack = script.segments[1].clone(); + script.segments.drain(..3); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + for role in [Initiator, Responder] { + let stream = connection.stream_mut(role); + stream.read_received(); + stream.consume(usize::from(consumed)); + } + } + let expected = if consumed { + TcpStreamStart::MidStreamPickup + } else { + TcpStreamStart::Observed + }; + for segment in [syn_ack, syn] { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + for role in [Initiator, Responder] { + let status = connection.stream(role).status(); + assert_eq!(expected, status.start); + } + } + // the SYN-ACK counts for the responder's stream, the SYN for + // the initiator's + let (connection, _) = script.segments[0].feed(&mut pool, ()).active.unwrap(); + for role in [Initiator, Responder] { + assert_eq!( + u64::from(consumed), + connection.stream(role).status().out_of_window_segments + ); + } + } + + // bytes before the first byte of a mid-stream pickup count as + // out-of-window if they can't be put in front: after the read + // position moved, or more than k windows before. Each segment + // counts once, also with bytes after the FIN, and its bytes from + // the read position on are stored. + for (fallback_window, consumed, earlier, expected) in [ + (3, 1, &b"abcd"[..], &b"fX"[..]), + (1, 0, b"abcd", b"efX"), + // put in front, only the bytes after the FIN count + (3, 0, b"bcd", b"bcdefX"), + ] { + let config = TcpReassemblyConfig { + fallback_window, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abcd") + .send(Initiator, b"e"); + // the segment fills the missing byte "f" + let segment = script.injected(|s| { + s.send_at( + Initiator, + (4 - earlier.len()) as u64, + &[earlier, b"efXh"].concat(), + ); + }); + script.send_at(Initiator, 6, b"X").fin_at(Initiator, 7, &[]); + script.segments.drain(..4); + { + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(consumed); + } + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(TcpRead::Data(expected), stream.read_received()); + } + + // bytes before the first byte of a stream with an observed start + // don't count (e.g. the filler byte of a keep-alive before any + // bytes were sent) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake(); + let mut keep_alive = script.injected(|s| { + s.send(Initiator, b"x"); + }); + keep_alive.header.sequence_number -= 1; + script.segments.push(keep_alive); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().out_of_window_segments); + assert_eq!(TcpRead::Pending, stream.read_received()); + } + + // the SYN-ACK gives the responder's stream an observed start, and + // the initiator's too if its SYN was not seen + for syn in [true, false] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn().syn_ack(); + if false == syn { + script.segments.remove(0); + } + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + for role in [Initiator, Responder] { + assert_eq!( + TcpStreamStart::Observed, + connection.stream(role).status().start + ); + } + } + + // every given up hole counts as a gap with its missing bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send_at(Initiator, 2, b"c") + .send_at(Initiator, 7, b"h"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.give_up_hole()); + assert_eq!((1, 2), (stream.status().gaps, stream.status().gap_bytes)); + stream.consume_gap(); + stream.read_received(); + stream.consume(1); + assert!(stream.give_up_hole()); + assert_eq!((2, 6), (stream.status().gaps, stream.status().gap_bytes)); + } + + // an overdue hole counts as a gap once the read position reaches it + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send_at(Initiator, 2, b"c") + .send_at(Initiator, 4, b"efgh") + .send(Initiator, b"ijkl"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + // the hole at the read position, but not the one after it + assert_eq!((1, 2), (stream.status().gaps, stream.status().gap_bytes)); + stream.consume_gap(); + stream.read_received(); + stream.consume(1); + assert_eq!((2, 3), (stream.status().gaps, stream.status().gap_bytes)); + } + + // bytes starting 2^31 - 1 after the highest offset lie after the + // window, ones 2^31 after it can't be mapped and count too, and ones + // 2^31 + 1 after it lie 2^31 - 1 before it (before the first byte, + // which doesn't count) + for (distance, expected) in [((1 << 31) - 1, 1), (1 << 31, 1), ((1 << 31) + 1, 0)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let segment = script.injected(|s| { + s.send_at(Initiator, 3 + distance, b"x"); + }); + script.segments.push(segment); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(expected, stream.status().out_of_window_segments); + assert_eq!(3, stream.highest_offset()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // ... while a segment without bytes there changes nothing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let ack = script.injected(|s| { + s.send_at(Initiator, 3 + (1 << 31), &[]); + }); + script.segments.push(ack); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(0, stream.status().out_of_window_segments); + assert_eq!(3, stream.highest_offset()); + } + + // every segment with bytes after the FIN counts as out-of-window + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + // bytes after the FIN + .send(Initiator, b"x") + // bytes starting at the FIN + .send_at(Initiator, 3, b"y") + // retransmitted bytes followed by bytes after the FIN + .send_at(Initiator, 1, b"bcz"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(3, stream.status().out_of_window_segments); + assert!(stream.is_finished()); + } + + // segments without bytes after the FIN don't count + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + // ACK after the FIN + .ack(Initiator) + // retransmission of the FIN + .fin_at(Initiator, 0, b"abc") + // a FIN without bytes at another offset + .fin_at(Initiator, 7, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + 0, + connection.stream(Initiator).status().out_of_window_segments + ); + } + + // bytes after the FIN count while bytes before it are missing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator) + .send(Initiator, b"x"); + let missing = script.segments.remove(4); + script.segments.push(missing); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + stream.consume(6); + assert_eq!(TcpRead::End(TcpStreamEnd::Fin), stream.read_received()); + } + + // retransmissions with differing bytes count once per segment, the + // bytes received first are kept + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abcdef") + // same bytes + .send_at(Initiator, 1, b"bcd") + // one differing byte + .send_at(Initiator, 0, b"aXc") + // several differing bytes + .send_at(Initiator, 2, b"XYZ") + // differing bytes followed by new bytes + .send_at(Initiator, 5, b"Xgh"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(3, stream.status().conflicting_retransmissions); + assert_eq!(TcpRead::Data(b"abcdefgh"), stream.read_received()); + } + + // bytes in holes are not compared, the received bytes around them + // are + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send_at(Initiator, 0, b"ab") + .send_at(Initiator, 4, b"ef") + .send_at(Initiator, 8, b"ij") + // fills the holes + .send_at(Initiator, 1, b"bcdefgh") + // received bytes after a hole differ + .send_at(Initiator, 5, b"Xghi"); + script.feed(&mut pool, ..3); + let segments = &script.segments[3..]; + for (i, (segment, expected)) in segments.iter().zip([0, 0, 0, 0, 1]).enumerate() { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(expected, stream.status().conflicting_retransmissions); + if i + 1 == segments.len() { + assert_eq!(TcpRead::Data(b"abcdefghij"), stream.read_received()); + } + } + } + + // bytes that were already consumed are not compared + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 0, b"XYc"); + { + let (connection, _) = script.feed(&mut pool, ..4).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(2); + } + let (connection, _) = script.feed(&mut pool, 4..).active.unwrap(); + assert_eq!( + 0, + connection + .stream(Initiator) + .status() + .conflicting_retransmissions + ); + } + + // ACKed bytes are not compared, as the receiver ignores them too + // (e.g. keep-alive probes) + for (payload, expected) in [ + // only ACKed bytes differ + (&b"Xc"[..], 0), + // ACKed and not ACKed bytes differ + (&b"XcY"[..], 1), + ] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abcdef") + .ack_to(Responder, 3) + .send_at(Initiator, 1, payload); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(expected, stream.status().conflicting_retransmissions); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + } + + // bytes before the implied ACK are not compared either + for (payload, expected) in [(&b"XY"[..], 0), (&b"XYZ"[..], 1)] { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abcdef") + .send_at(Initiator, 0, payload); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(expected, stream.status().conflicting_retransmissions); + assert_eq!(TcpRead::Data(b"abcdef"), stream.read_received()); + } + + // differing bytes after the FIN only count as out-of-window, a + // differing FIN retransmission counts + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .fin_with_data(Initiator, b"abc") + .send_at(Initiator, 2, b"cX") + .fin_at(Initiator, 1, b"Xc"); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([0, 0, 1]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!( + expected, + connection + .stream(Initiator) + .status() + .conflicting_retransmissions + ); + } + } + + // bytes starting more than two windows of the receiver after the + // highest offset count as out-of-window, where the window of the + // SYN-ACK is never scaled + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(3), Some(3)]; + script.window_size = 100; + script.handshake(); + assert_window_end(Default::default(), &script, 200); + } + + // later windows of the receiver are scaled by its window scale if + // both SYNs had the option (shifts above 14 count as 14), and the + // last one counts + for (scales, windows, end) in [ + ([Some(5), Some(3)], &[100][..], 2 * (100 << 3)), + ([Some(5), Some(3)], &[200, 100][..], 2 * (100 << 3)), + ([Some(0), Some(14)], &[1][..], 2 * (1 << 14)), + ([Some(0), Some(15)], &[1][..], 2 * (1 << 14)), + // one SYN without the option + ([None, Some(3)], &[100][..], 200), + ([Some(3), None], &[100][..], 200), + ] { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = scales; + script.window_size = 1000; + script.handshake(); + for window in windows { + script.window_size = *window; + script.ack(Responder); + } + assert_window_end(Default::default(), &script, end); + } + + // a SYN with a malformed window scale option has none + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(3), Some(3)]; + script.handshake(); + script.window_size = 100; + script.ack(Responder); + // window scale option with a wrong length + script.segments[0] + .header + .set_options_raw(&[3, 4, 3, 0]) + .unwrap(); + assert_window_end(Default::default(), &script, 200); + } + + // the first window scale option counts, also after other options + for options in [ + &[ + TcpOptionElement::MaximumSegmentSize(1460), + TcpOptionElement::WindowScale(3), + ][..], + &[ + TcpOptionElement::WindowScale(3), + TcpOptionElement::WindowScale(5), + ][..], + ] { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(0), None]; + script.handshake(); + script.window_size = 100; + script.ack(Responder); + script.segments[1].header.set_options(options).unwrap(); + assert_window_end(Default::default(), &script, 2 * (100 << 3)); + } + + // the fallback window is used while the window scale is unknown + // (without the SYN-ACK, without the SYN, or without both) + { + let config = TcpReassemblyConfig { + fallback_window: 50, + ..Default::default() + }; + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc").ack(Responder); + script.segments.drain(..3); + assert_window_end(config, &script, 103); + } + for missing in [1, 0] { + let config = TcpReassemblyConfig { + fallback_window: 50, + ..Default::default() + }; + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().ack(Responder); + script.segments.remove(missing); + assert_window_end(config, &script, 100); + } + + // a SYN after its SYN-ACK makes the window scale known + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(3), Some(3)]; + script.window_size = 100; + script.handshake().ack(Responder); + script.segments.swap(0, 1); + assert_window_end(Default::default(), &script, 2 * (100 << 3)); + } + + // only the first SYN with the stream's ISN sets its window scale: a + // retransmitted SYN-ACK with another option doesn't + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(3), Some(3)]; + script.window_size = 100; + script.handshake(); + let mut syn_ack = script.segments[1].clone(); + syn_ack + .header + .set_options(&[TcpOptionElement::WindowScale(5), TcpOptionElement::Noop]) + .unwrap(); + script.segments.push(syn_ack); + script.ack(Responder); + assert_window_end(Default::default(), &script, 2 * (100 << 3)); + } + + // ... and neither does a SYN with another ISN after the SYN-ACK + // started the stream + { + let config = TcpReassemblyConfig { + fallback_window: 50, + ..Default::default() + }; + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(3), Some(3)]; + script.window_size = 100; + script.handshake().ack(Responder); + script.segments[0].header.sequence_number += 7; + script.segments.swap(0, 1); + assert_window_end(config, &script, 100); + } + + // ... and neither does the SYN after its stream resynced, as it no + // longer lies before the stream's first byte (window 50 instead of + // 100 << 3 after the resync) + { + let config = TcpReassemblyConfig { + fallback_window: 50, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_scales = [Some(3), Some(3)]; + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"x") + .ack(Responder); + let syn = script.segments.remove(0); + script.segments.push(syn); + let probe = script.injected(|s| { + s.send_at(Initiator, 1001 + 101, b"y"); + }); + script.feed_all(&mut pool); + let (connection, _) = probe.feed(&mut pool, ()).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!((1, 2), (status.resyncs, status.out_of_window_segments)); + } + + // the number of windows is the hole give up window factor + for (factor, end) in [(Some(1), 100), (Some(3), 300), (None, 200)] { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: factor, + ..Default::default() + }; + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake(); + assert_window_end(config, &script, end); + } + + // the window starts at the highest offset or at the ACKed offset, + // whichever is higher + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + assert_window_end(Default::default(), &script, 203); + script.ack_to(Responder, 50); + assert_window_end(Default::default(), &script, 250); + } + + // after the FIN, the window starts at the ACK of the FIN + for (offset, expected) in [(204, 0), (205, 1)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .fin_with_data(Initiator, b"abc") + .ack(Responder); + let fin = script.injected(|s| { + s.fin_at(Initiator, offset, &[]); + }); + script.segments.push(fin); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!( + expected, + connection.stream(Initiator).status().out_of_window_segments + ); + } + + // FINs starting after the window count too, pure ACKs don't + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake(); + let fin = script.injected(|s| { + s.fin_at(Initiator, 201, &[]); + }); + let ack = script.injected(|s| { + s.send_at(Initiator, 201, &[]); + }); + script.segments.extend([fin, ack]); + let mut pool = TcpReassemblyPool::<(), ()>::default(); + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([1, 1]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!( + expected, + connection.stream(Initiator).status().out_of_window_segments + ); + } + } + + // a resync counts: data that only became its candidate counts as + // out-of-window, data that an earlier ACK confirmed is the new start + // and doesn't + for (ack_first, out_of_window) in [(false, 1), (true, 0)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + if ack_first { + script + .ack_to(Responder, 1000) + .send_at(Initiator, 1000, b"GET /"); + } else { + script.send_at(Initiator, 1000, b"GET /").ack(Responder); + } + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!(1, status.resyncs); + assert_eq!(out_of_window, status.out_of_window_segments); + } + + // an ACK more than one window after the bytes sent confirms data + // after the window if it lies at most one window before its first + // byte or after its last byte, whichever arrives first (window 100, + // bytes 1000..1005) + for ack_first in [false, true] { + for (ack, resyncs) in [(900, 1), (899, 0), (1105, 1), (1106, 0)] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + if ack_first { + script + .ack_to(Responder, ack) + .send_at(Initiator, 1000, b"GET /"); + } else { + script + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, ack); + } + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(resyncs, connection.stream(Initiator).status().resyncs); + } + } + + // the latest data after the window and the latest ACK beyond it + // count + for ack_first in [false, true] { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + if ack_first { + script + .ack_to(Responder, 1000) + .ack_to(Responder, 5000) + .send_at(Initiator, 1000, b"x") + .send_at(Initiator, 5000, b"y"); + } else { + script + .send_at(Initiator, 1000, b"x") + .send_at(Initiator, 5000, b"y") + .ack_to(Responder, 1001) + .ack_to(Responder, 5001); + } + script.feed(&mut pool, ..3); + for (segment, expected) in script.segments[3..].iter().zip([0, 0, 0, 0, 1]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).status().resyncs); + } + } + + // other bytes after the data after the window show that the stream + // didn't jump, and so does anything that moves the stream forward, + // so a later ACK doesn't confirm the jump + let between: [(fn(&mut ConnectionScript), u64); 5] = [ + // bytes in the window + ( + |s| { + s.send_at(Initiator, 3, b"d"); + }, + 0, + ), + // a retransmission + ( + |s| { + s.send_at(Initiator, 0, b"a"); + }, + 0, + ), + // an ACK that moves the highest offset + ( + |s| { + s.ack_to(Responder, 50); + }, + 0, + ), + // an ACK that doesn't + ( + |s| { + s.ack_to(Responder, 2); + }, + 1, + ), + // a segment of the sender without bytes + ( + |s| { + s.ack(Initiator); + }, + 1, + ), + ]; + for (step, resyncs) in between { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /"); + step(&mut script); + script.ack_to(Responder, 1005); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(resyncs, connection.stream(Initiator).status().resyncs); + } + + // ... while for an ACK that arrived first, only what moves the + // stream forward shows it + for (step, resyncs) in between + .iter() + .zip([0, 1, 0, 1, 1]) + .map(|((step, _), r)| (step, r)) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 1000); + step(&mut script); + script.send_at(Initiator, 1000, b"GET /"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(resyncs, connection.stream(Initiator).status().resyncs); + } + + // a resync ends the jumps the stream may have made before: an ACK + // that was kept doesn't confirm data near it after the resync + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .ack_to(Responder, 1300) + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, 1005) + .send_at(Initiator, 1250, b"x"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!((1, 2), (status.resyncs, status.out_of_window_segments)); + } + + // a SYN with another ISN is a reconnect, not a jump + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + let mut syn = script.segments[0].clone(); + syn.header.sequence_number = script.seq(Initiator, 999); + syn.payload = b"GET /".to_vec(); + script.segments.push(syn); + script.ack_to(Responder, 1005); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!(0, status.resyncs); + assert_eq!(1, status.out_of_window_segments); + } + + // nothing follows a FIN, so a stream with a FIN doesn't jump, also + // not to data from before the FIN + let orders: [fn(&mut ConnectionScript); 3] = [ + |s| { + s.fin(Initiator) + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, 1005); + }, + |s| { + s.fin(Initiator) + .ack_to(Responder, 1000) + .send_at(Initiator, 1000, b"GET /"); + }, + |s| { + s.send_at(Initiator, 1000, b"GET /") + .fin_at(Initiator, 3, &[]) + .ack_to(Responder, 1005); + }, + ]; + for order in orders { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + order(&mut script); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(0, stream.status().resyncs); + assert_eq!(Some(3), stream.fin_offset()); + } + + // bytes from before a jump that arrive after it are ignored, so they + // don't conflict with the bytes before it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send_at(Initiator, 999, b"XGEX /"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().conflicting_retransmissions); + assert_eq!(TcpRead::Data(b"abc"), stream.read_received()); + } + + // bytes that fill a hole at the gap of a resync don't conflict + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder) + .send_at(Initiator, 1010, b"s") + .send_at(Initiator, 1005, b"a.js/"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert_eq!(0, stream.status().conflicting_retransmissions); + stream.read_received(); + stream.consume(3); + stream.consume_gap(); + assert_eq!(TcpRead::Data(b"a.js/s"), stream.read_received()); + } + + // data 2^31 after the highest offset can be where the stream jumped + // to (an ACK that maps before it confirms it) + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 3 + (1 << 31), b"x") + .ack_to(Responder, 2 + (1 << 31)); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(1, connection.stream(Initiator).status().resyncs); + } + + // an ACK 2^31 after the highest offset can't be mapped, but it can + // confirm a jump near it + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, (1 << 31) - 50, b"GET /") + .ack_to(Responder, 3 + (1 << 31)); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(1, connection.stream(Initiator).status().resyncs); + } + + // ACKs before the first byte of a mid-stream pickup are old ones, so + // they don't replace the ACK beyond the window that was kept + { + let config = TcpReassemblyConfig { + fallback_window: 10, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + script.segments.drain(..4); + script + .ack_to(Responder, 100) + .ack_to(Responder, 1) + .send_at(Initiator, 100, b"xyz"); + { + let (connection, _) = script.feed(&mut pool, ..1).active.unwrap(); + let stream = connection.stream_mut(Initiator); + stream.read_received(); + stream.consume(1); + } + let (connection, _) = script.feed(&mut pool, 1..).active.unwrap(); + assert_eq!(1, connection.stream(Initiator).status().resyncs); + } + + // a resync ends putting earlier bytes in front of a mid-stream + // pickup: they count as out-of-window + { + let config = TcpReassemblyConfig { + fallback_window: 10, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def"); + script.segments.drain(..4); + script + .ack_to(Responder, 100) + .send_at(Initiator, 100, b"xyz") + .send_at(Initiator, 90, b"ab"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(1, stream.status().resyncs); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(6, stream.highest_offset()); + } + + // with resync_after_segments, the segments before the one that + // resyncs count as out-of-window + { + let config = TcpReassemblyConfig { + resync_after_segments: Some(3), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"x") + .send(Initiator, b"y") + .send(Initiator, b"z"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!((1, 2), (status.resyncs, status.out_of_window_segments)); + } + + // ... a segment after the window agrees with the one before if it + // starts at most one window before its first byte or after its last + // byte (window 100, bytes 1000..1001) + for (second, resyncs) in [(900, 1), (899, 0), (1101, 1), (1102, 0)] { + let config = TcpReassemblyConfig { + resync_after_segments: Some(2), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"x") + .send_at(Initiator, second, b"y"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(resyncs, connection.stream(Initiator).status().resyncs); + } + + // ... the count starts again with a segment that doesn't agree, after + // other bytes, and after a resync + let between: [fn(&mut ConnectionScript); 2] = [ + |s| { + s.send_at(Initiator, 5000, b"w"); + }, + |s| { + s.send_at(Initiator, 3, b"d"); + }, + ]; + for step in between { + let config = TcpReassemblyConfig { + resync_after_segments: Some(2), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"x"); + step(&mut script); + script.send_at(Initiator, 1001, b"y"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).status().resyncs); + } + { + let config = TcpReassemblyConfig { + resync_after_segments: Some(2), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"w") + .send(Initiator, b"x") + .send_at(Initiator, 5000, b"y") + .send(Initiator, b"z"); + script.feed(&mut pool, ..4); + for (segment, expected) in script.segments[4..].iter().zip([0, 1, 1, 2]) { + let (connection, _) = segment.feed(&mut pool, ()).active.unwrap(); + assert_eq!(expected, connection.stream(Initiator).status().resyncs); + } + } + + // ... a resync ends the count, also if the ACK that confirmed it left + // the stream at the resync point (with a hole give up window factor + // of 0, the window ends at the highest offset) + { + let config = TcpReassemblyConfig { + hole_give_up_window_factor: Some(0), + resync_after_segments: Some(2), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack_to(Responder, 1005) + .send_at(Initiator, 1010, b"x"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert_eq!(1, connection.stream(Initiator).status().resyncs); + } + + // ... and Some(0) works like Some(1): the first segment after the + // window is the new start + for after in [0, 1] { + let config = TcpReassemblyConfig { + resync_after_segments: Some(after), + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!((1, 0), (status.resyncs, status.out_of_window_segments)); + } + + // a reset gives up all holes, they count as gaps + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .send(Initiator, b"ghi") + .send(Initiator, b"jkl") + .ack(Responder) + .rst(Initiator); + script.segments.remove(6); + script.segments.remove(4); + { + let (connection, _) = script.feed(&mut pool, ..5).active.unwrap(); + assert_eq!(0, connection.stream(Initiator).status().gaps); + } + let connection = script.feed(&mut pool, 5..).ended.unwrap(); + let status = connection.stream(Initiator).status(); + assert_eq!((2, 6), (status.gaps, status.gap_bytes)); + } + + // an RST outside of the receiver's window counts for the stream of + // its sender, and its window doesn't apply + { + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script.handshake().send(Initiator, b"abc"); + let mut rst = script.injected(|s| { + s.rst_at(Responder, 1 << 30); + }); + rst.header.window_size = 0; + script.segments.push(rst); + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let [initiator, responder] = + [Initiator, Responder].map(|role| connection.stream(role).status()); + assert_eq!(0, initiator.out_of_window_segments); + assert_eq!(1, responder.out_of_window_segments); + } + assert_window_end(Default::default(), &script, 203); + } + } + + /// Checks that after `script`, bytes of the initiator starting at `end` + /// are stored, but bytes starting after it count as out-of-window. + fn assert_window_end(config: TcpReassemblyConfig, script: &ConnectionScript, end: u64) { + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut probes = script.clone(); + probes.segments.clear(); + probes + .send_at(Initiator, end + 1, b"x") + .send_at(Initiator, end, b"y"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let highest_offset = connection.stream(Initiator).highest_offset(); + { + let (connection, _) = probes.segments[0].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(highest_offset, stream.highest_offset()); + } + let (connection, _) = probes.segments[1].feed(&mut pool, ()).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(1, stream.status().out_of_window_segments); + assert_eq!(end + 1, stream.highest_offset()); + } + + #[test] + fn is_clean() { + // new stream + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.syn(); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(connection.stream(Initiator).is_clean()); + } + + // holes, retransmissions with the same bytes and bytes after the FIN + // keep it clean + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator) + .send_at(Initiator, 4, b"efX") + .send_at(Initiator, 0, b"abc"); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert_eq!(1, stream.holes().count()); + assert!(stream.is_clean()); + } + + // a Windows keep-alive probe (the last ACKed byte again, with + // different content) keeps it clean + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .ack(Responder) + .send_at(Initiator, 2, &[0]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.is_clean()); + assert_eq!(TcpRead::Data(b"abc"), stream.read_acked()); + } + + // a given up hole makes it unclean + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send_at(Initiator, 3, b"d"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.give_up_hole()); + assert!(false == stream.is_clean()); + } + + // a conflicting retransmission makes it unclean + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 0, b"X"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(false == connection.stream(Initiator).is_clean()); + } + + // a resync makes it unclean + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.window_size = 100; + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 1000, b"GET /") + .ack(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(false == connection.stream(Initiator).is_clean()); + } + } + + #[test] + fn is_complete() { + // no FIN yet + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(false == connection.stream(Initiator).is_complete()); + } + + // bytes before the FIN are missing + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send(Initiator, b"def") + .fin(Initiator); + script.segments.remove(4); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(false == connection.stream(Initiator).is_complete()); + } + + // all bytes from the SYN to the FIN + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .fin(Initiator) + .fin(Responder); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + assert!(connection.stream(Initiator).is_complete()); + assert!(connection.stream(Responder).is_complete()); + } + + // clean and finished, but a mid-stream pickup + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().send(Initiator, b"abc").fin(Initiator); + script.segments.drain(..3); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert!(stream.is_clean()); + assert!(stream.is_finished()); + assert!(false == stream.is_complete()); + } + + // finished, but a hole was given up + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script.handshake().fin_at(Initiator, 3, &[]); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(stream.give_up_hole()); + assert!(stream.is_finished()); + assert!(false == stream.is_complete()); + } + + // finished, but a retransmission had differing bytes + { + let mut pool = TcpReassemblyPool::<(), ()>::default(); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .handshake() + .send(Initiator, b"abc") + .send_at(Initiator, 0, b"X") + .fin(Initiator); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream(Initiator); + assert!(stream.is_finished()); + assert!(false == stream.is_complete()); + } + + // an overdue hole before the FIN: incomplete before and after the + // read position reaches it + { + let config = TcpReassemblyConfig { + fallback_window: 2, + ..Default::default() + }; + let mut pool = TcpReassemblyPool::<(), ()>::new(config); + let mut script = ConnectionScript::with_isns(1000, 2000); + script + .syn() + .send(Initiator, b"abc") + .send_at(Initiator, 6, b"ghi") + .fin_with_data(Initiator, b"jkl"); + let (connection, _) = script.feed_all(&mut pool).active.unwrap(); + let stream = connection.stream_mut(Initiator); + assert!(false == stream.is_complete()); + stream.read_received(); + stream.consume(3); + assert!(false == stream.is_complete()); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_stream_end.rs b/etherparse/src/tcp_reassembly/tcp_stream_end.rs new file mode 100644 index 00000000..a3f4b732 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_stream_end.rs @@ -0,0 +1,47 @@ +/// Reason why no more bytes can be read from a +/// [`crate::tcp_reassembly::TcpStream`]. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub enum TcpStreamEnd { + /// The sender ended the stream with a FIN. + Fin, + + /// The connection was reset before the read position reached a FIN + /// (see [`crate::tcp_reassembly::TcpConnectionEnd::Reset`]). + Reset, +} + +#[cfg(test)] +mod test { + use super::*; + use core::hash::{Hash, Hasher}; + use std::format; + + #[test] + fn derived_traits() { + // copy & clone + { + let a = TcpStreamEnd::Fin; + let b = a; + assert_eq!(a, b); + assert_eq!(a.clone(), a); + assert_ne!(TcpStreamEnd::Reset, a); + } + + // debug + { + assert_eq!("Fin", format!("{:?}", TcpStreamEnd::Fin)); + assert_eq!("Reset", format!("{:?}", TcpStreamEnd::Reset)); + } + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |end: TcpStreamEnd| { + let mut hasher = DefaultHasher::new(); + end.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(TcpStreamEnd::Fin), hash(TcpStreamEnd::Fin)); + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_stream_start.rs b/etherparse/src/tcp_reassembly/tcp_stream_start.rs new file mode 100644 index 00000000..5a765ca8 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_stream_start.rs @@ -0,0 +1,59 @@ +/// How the start of a [`crate::tcp_reassembly::TcpStream`] is known. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub enum TcpStreamStart { + /// The handshake showed the stream's first byte, which is at offset 0. + Observed, + + /// The stream's SYN was not seen (yet), so the bytes before offset 0 are + /// unknown. + /// + /// Offset 0 is the first byte captured, so it is most likely not the + /// start of a message. Until the read position first moves (see + /// [`crate::tcp_reassembly::TcpStream::consume`]), earlier bytes that + /// arrive late are put in front and the offsets move with them, and a + /// late SYN turns the start into [`TcpStreamStart::Observed`]. This + /// holds for bytes up to + /// [`crate::tcp_reassembly::TcpReassemblyConfig::hole_give_up_window_factor`] + /// receiver windows before offset 0. + MidStreamPickup, +} + +#[cfg(test)] +mod test { + use super::*; + use crate::test_gens::*; + use core::hash::{Hash, Hasher}; + use proptest::prelude::*; + use std::format; + + proptest! { + #[test] + fn derived_traits(start in tcp_stream_start_any()) { + // copy & clone + { + let copy = start; + assert_eq!(copy, start); + assert_eq!(start.clone(), start); + } + + // debug + assert_eq!("Observed", format!("{:?}", TcpStreamStart::Observed)); + assert_eq!("MidStreamPickup", format!("{:?}", TcpStreamStart::MidStreamPickup)); + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |start: TcpStreamStart| { + let mut hasher = DefaultHasher::new(); + start.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(start), hash(start.clone())); + assert_ne!( + hash(TcpStreamStart::Observed), + hash(TcpStreamStart::MidStreamPickup) + ); + } + } + } +} diff --git a/etherparse/src/tcp_reassembly/tcp_stream_status.rs b/etherparse/src/tcp_reassembly/tcp_stream_status.rs new file mode 100644 index 00000000..9b4308f6 --- /dev/null +++ b/etherparse/src/tcp_reassembly/tcp_stream_status.rs @@ -0,0 +1,86 @@ +use crate::tcp_reassembly::*; + +/// How a [`crate::tcp_reassembly::TcpStream`] started, and counters that +/// describe its quality. +#[derive(Clone, Debug, Eq, PartialEq, Hash)] +pub struct TcpStreamStatus { + /// Whether the stream's first byte is known from the handshake. + pub start: TcpStreamStart, + + /// Number of gaps: holes that were given up, e.g. with + /// [`crate::tcp_reassembly::TcpStream::give_up_hole`]. + /// + /// Discarded holes don't count (see + /// [`crate::tcp_reassembly::TcpStream::discard_until`]). + pub gaps: u64, + + /// Number of bytes in the holes that were given up. + pub gap_bytes: u64, + + /// Number of times the stream continued at a new position behind a gap + /// of unknown length ([`crate::tcp_reassembly::TcpRead::Gap`] with + /// `len: None`), as its sequence numbers jumped far after the + /// receiver's window, or as + /// [`crate::tcp_reassembly::TcpStream::force_resync`] forced it. + pub resyncs: u64, + + /// Number of retransmitted segments whose bytes differ from the bytes + /// received first at the same positions. + /// + /// The bytes received first are kept. Only bytes that are neither ACKed + /// nor consumed are compared, so keep-alive probes don't count. + pub conflicting_retransmissions: u64, + + /// Number of segments with bytes that lie outside of the stream: they + /// start after the receiver's window, lie after the stream's FIN, or lie + /// before the first byte of a mid-stream pickup that can't take them + /// anymore (see [`TcpStreamStart::MidStreamPickup`]). + /// + /// These bytes are not stored. FINs starting after the receiver's window + /// count too, and so do SYNs that a mid-stream pickup can't take and + /// RSTs that the receiver can't accept (see + /// [`crate::tcp_reassembly::TcpConnectionEnd::Reset`]). + pub out_of_window_segments: u64, +} + +#[cfg(test)] +mod test { + use super::*; + use crate::test_gens::*; + use core::hash::{Hash, Hasher}; + use proptest::prelude::*; + use std::format; + + proptest! { + #[test] + fn derived_traits(status in tcp_stream_status_any()) { + // clone + assert_eq!(status.clone(), status); + + // debug + assert_eq!( + format!( + "TcpStreamStatus {{ start: {:?}, gaps: {}, gap_bytes: {}, resyncs: {}, conflicting_retransmissions: {}, out_of_window_segments: {} }}", + status.start, + status.gaps, + status.gap_bytes, + status.resyncs, + status.conflicting_retransmissions, + status.out_of_window_segments + ), + format!("{:?}", status) + ); + + // hash + { + use std::collections::hash_map::DefaultHasher; + let hash = |status: &TcpStreamStatus| { + let mut hasher = DefaultHasher::new(); + status.hash(&mut hasher); + hasher.finish() + }; + assert_eq!(hash(&status), hash(&status.clone())); + } + } + } +} diff --git a/etherparse/src/test_gens/mod.rs b/etherparse/src/test_gens/mod.rs index 8cae2c46..d64f7d8d 100644 --- a/etherparse/src/test_gens/mod.rs +++ b/etherparse/src/test_gens/mod.rs @@ -924,3 +924,173 @@ prop_compose! { Icmpv6Header::from_slice(&bytes).unwrap().0 } } + +prop_compose! { + pub fn vlan_ids_any() + (vlan_ids in proptest::collection::vec(vlan_id_any(), 0..=3)) + -> arrayvec::ArrayVec + { + vlan_ids.into_iter().collect() + } +} + +pub fn ip_addr_any() -> impl Strategy { + prop_oneof![ + any::<[u8; 4]>().prop_map(core::net::IpAddr::from), + any::<[u8; 16]>().prop_map(core::net::IpAddr::from), + ] +} + +prop_compose! { + pub fn socket_addr_any() + (ip in ip_addr_any(), port in any::()) + -> core::net::SocketAddr + { + core::net::SocketAddr::new(ip, port) + } +} + +/// TCP initial sequence numbers, often within 2^16 of 2^32 so that the +/// sequence numbers of a connection wrap around. +pub fn tcp_isn_any() -> impl Strategy { + prop_oneof![ + any::(), + (u32::MAX - 0xffff)..=u32::MAX, + (u32::MAX - 0x1fff)..=u32::MAX, + ] +} + +/// Bytes of a TCP stream with a length below `max_len`. +/// +/// The bytes come from a pseudo-random generator, which is a lot faster +/// than generating each byte with proptest. +pub fn stream_data_any(max_len: usize) -> impl Strategy> { + (0..max_len, any::()).prop_map(|(len, seed)| { + let mut state = seed; + (0..len) + .map(|_| { + // linear congruential generator (Knuth's MMIX constants) + state = state + .wrapping_mul(6364136223846793005) + .wrapping_add(1442695040888963407); + (state >> 56) as u8 + }) + .collect() + }) +} + +#[cfg(feature = "std")] +pub fn tcp_role_any() -> impl Strategy { + use crate::tcp_reassembly::TcpRole; + prop_oneof![Just(TcpRole::Initiator), Just(TcpRole::Responder)] +} + +#[cfg(feature = "std")] +prop_compose! { + pub fn tcp_connection_id_any() + (value in any::()) + -> crate::tcp_reassembly::TcpConnectionId + { + crate::tcp_reassembly::TcpConnectionId(value) + } +} + +#[cfg(feature = "std")] +prop_compose! { + pub fn tcp_connection_key_any() + ( + vlan_ids in vlan_ids_any(), + a in socket_addr_any(), + b in socket_addr_any(), + channel_id in any::(), + ) + -> crate::tcp_reassembly::TcpConnectionKey + { + crate::tcp_reassembly::TcpConnectionKey::new(vlan_ids, a, b, channel_id) + } +} + +#[cfg(feature = "std")] +prop_compose! { + /// Default configurations of a + /// [`crate::tcp_reassembly::TcpReassemblyPool`] with small values for the + /// settings that make holes overdue. + pub fn tcp_overdue_config_any() + ( + hole_give_up_window_factor in proptest::option::of(1u32..4), + ack_reorder_tolerance in 0u32..24, + ) + -> crate::tcp_reassembly::TcpReassemblyConfig + { + crate::tcp_reassembly::TcpReassemblyConfig { + hole_give_up_window_factor, + ack_reorder_tolerance, + ..Default::default() + } + } +} + +#[cfg(feature = "std")] +prop_compose! { + pub fn tcp_reassembly_config_any() + ( + max_stream_buffer in any::(), + max_holes_per_stream in any::(), + hole_give_up_window_factor in proptest::option::of(any::()), + fallback_window in any::(), + ack_reorder_tolerance in any::(), + resync_after_segments in proptest::option::of(any::()), + max_connections in proptest::option::of(any::()), + max_total_buffered in proptest::option::of(any::()), + max_pooled_buffers in any::(), + max_pooled_buffer_capacity in any::(), + ) + -> crate::tcp_reassembly::TcpReassemblyConfig + { + crate::tcp_reassembly::TcpReassemblyConfig { + max_stream_buffer, + max_holes_per_stream, + hole_give_up_window_factor, + fallback_window, + ack_reorder_tolerance, + resync_after_segments, + max_connections, + max_total_buffered, + max_pooled_buffers, + max_pooled_buffer_capacity, + } + } +} + +#[cfg(feature = "std")] +pub fn tcp_stream_start_any() -> impl Strategy { + use crate::tcp_reassembly::TcpStreamStart; + prop_oneof![ + Just(TcpStreamStart::Observed), + Just(TcpStreamStart::MidStreamPickup) + ] +} + +#[cfg(feature = "std")] +prop_compose! { + pub fn tcp_stream_status_any() + ( + start in tcp_stream_start_any(), + gaps in any::(), + gap_bytes in any::(), + resyncs in any::(), + conflicting_retransmissions in any::(), + out_of_window_segments in any::(), + ) + -> crate::tcp_reassembly::TcpStreamStatus + { + crate::tcp_reassembly::TcpStreamStatus { + start, + gaps, + gap_bytes, + resyncs, + conflicting_retransmissions, + out_of_window_segments, + } + } +}