diff --git a/.github/workflows/run-unit-tests.yml b/.github/workflows/run-unit-tests.yml index ab361c2ed..09e26051d 100644 --- a/.github/workflows/run-unit-tests.yml +++ b/.github/workflows/run-unit-tests.yml @@ -91,7 +91,10 @@ jobs: uses: ./.github/actions/setup-build-environment - name: Install signed-package verification dependency - run: python3 -m pip install cryptography + run: | + python3 -m pip install cryptography + sudo apt-get update + sudo apt-get install -y libssl-dev - name: Verify ArduinoJson pin run: | @@ -110,6 +113,8 @@ jobs: - name: Verify parser, delivery, storage, permissions, clock and radio stability run: | python3 -B test/test_protocol_parser_bounds.py -v + python3 -B test/test_cli_error_bounds.py -v + python3 -B test/test_ota_security.py -v python3 -B test/test_companion_offline_delivery.py -v python3 -B test/test_room_receive_admission.py -v python3 -B test/test_companion_lfs_traversal.py -v @@ -153,7 +158,9 @@ jobs: run: python3 -B test/test_build_output_safety.py -v - name: Verify serial mOTA response deadlines and RX fairness - run: python3 -B test/test_mota_serial_deadline.py -v + run: | + python3 -B test/test_mota_serial_deadline.py -v + python3 -B test/test_mota_folder_deadline.py -v - name: Verify filter playground modes and built-in defaults run: node scripts/test_filter_tool.js @@ -177,15 +184,15 @@ jobs: run: python3 -B test/test_telemetry_tx_persistence.py -v - name: Verify MQTT start results and connection-attempt accounting - run: python3 -B test/test_mqtt_transport_results.py -v + run: | + python3 -B test/test_mqtt_transport_results.py -v + python3 -B test/test_mqtt_tls_security.py -v - name: Verify DNS lease restoration and bounded diagnostics run: python3 -B test/test_network_dns.py -v - name: Verify Companion contact and channel TX routing run: | - sudo apt-get update - sudo apt-get install -y libssl-dev python3 -B test/test_companion_tx_routing.py -v python3 -B test/test_companion_discovery.py -v python3 -B test/test_repeater_discovery.py -v @@ -335,6 +342,7 @@ jobs: run: | python3 -B test/test_wifi_ota_start.py -v python3 -B test/test_webconfig_ap_start.py -v + python3 -B test/test_webconfig_recovery_auth.py -v python3 -B test/test_esp32_wifi_scan_fix.py -v python3 -B test/test_esp32_wifi_scan_recipes.py -v diff --git a/docs/cli_commands.md b/docs/cli_commands.md index e22e0e1c1..e936803d9 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -288,6 +288,13 @@ them entirely. Sign in with the node's admin password. If the node has no saved WiFi SSID, the command starts the open `MeshCore-Setup-XXXX` captive AP at instead. +If a saved WiFi network is unavailable and the node falls back to its setup +AP, sign in with the existing admin password before changing settings. Joining +that AP does not grant permission to replace the password. First-time setup +without a saved SSID keeps its AP provisioning flow. Images deliberately +configured without an admin password, including passwordless Companions, +retain their local no-password policy; use them only on a trusted network. + `start webconfig ap` forces captive-AP mode. It will not interrupt an active MQTT bridge, so run `set mqtt.enabled off` first. Use `stop webconfig` to close either mode for the current boot. (`stop webconfig` does not change a @@ -4887,6 +4894,13 @@ brokers to reconnect. `get mqtt.running` checks the service's runtime state; `get mqtt.status` reports individual broker connections. Enabling MQTT does not imply that a broker is connected. +Custom `mqtts://` and `wss://` brokers require an image with the embedded CA +bundle. Without it, the slot stays disconnected and sends no credentials; +use a build with the bundle or a supported preset with its pinned CA. +Portable MQTT images retain those presets but do not include the general +bundle for custom TLS brokers. Explicit `mqtt://` and `ws://` configurations +remain available for trusted networks and use plaintext transport. + On ESP32 Repeater and Room Server images, `set mqtt.enabled off` acknowledges the stop request while the MQTT task disconnects and destroys its clients. `get mqtt.stopping` stays `on` until that cleanup completes; `mqtt.running` diff --git a/docs/fleet_management.md b/docs/fleet_management.md index 25cac39bc..fa3ca8438 100644 --- a/docs/fleet_management.md +++ b/docs/fleet_management.md @@ -62,7 +62,7 @@ off` disables reception; `set fleet.controller off` revokes the publisher. Key changes use the existing individually authenticated admin path, never fleet commands. `get fleet.stats` includes `parts`, the number of fragments currently buffered -for an incomplete two-packet command. +across the two bounded, incomplete two-packet command slots. Nodes need a clock set to current UTC. Commands expire after ten minutes and may be at most one minute ahead of a receiver's clock. A bad clock fails closed; @@ -213,8 +213,10 @@ remote CLI command cannot turn that Companion into a multicast signing proxy. An `OK` means the Companion queued the command, not that every receiver applied it. Wait for acknowledgements and confirm the result on important nodes. -Use at most one new command per second. The Unix-second sequence is reserved in -durable storage **before** dispatch. The same sequence is never executed twice, +Use at most one new command per second. The publishing Companion remembers its +last queued sequence for the current boot; its clock supplies the next sequence. +Each receiving node reserves the Unix-second sequence in durable storage +**before** dispatch. That receiver never executes the same sequence twice, including after reboot or a lost reply. Retry an uncertain command with a fresh sequence; the operation should be chosen to be idempotent. @@ -270,10 +272,12 @@ delivery over LoRa. A receiver accepts either arrival order and identical duplicates. It executes and acknowledges **only after both parts arrive and the complete signature, target, clock and replay checks pass**. Missing or altered parts cannot execute -a partial command. One bounded assembly is kept for up to five minutes from the -first part; duplicates do not extend that deadline. A fresh command with a newer -eligible sequence replaces an incomplete older transfer, so a lost part does -not block retries. Reboot or changing enrollment discards the partial transfer. +a partial command. Two bounded assemblies are kept for up to five minutes +from their respective first parts; duplicates do not extend those deadlines. +Unverified fragment sequences cannot grant priority over another transfer. A +third transfer replaces the oldest collection. A complete, valid signed command +clears the partial collections, and durable replay checks remain authoritative. +Reboot or changing enrollment discards the partial transfers. | Control | Fleet commands | | --- | --- | @@ -331,8 +335,8 @@ failed transmissions, or an acknowledgement timeout cancels the staged mutation. Temporary-radio leases and scheduled windows retain their original monotonic end time; waiting for an acknowledgement does not lengthen them. -Exact single-node acknowledgements use 0.5–1.5 seconds of random delay; prefix, -multiple-target, region, GPS and whole-fleet replies use 0.5–10 seconds, including +Exact single-node acknowledgements use 0.5-1.5 seconds of random delay; prefix, +multiple-target, region, GPS and whole-fleet replies use 0.5-10 seconds, including radio mutations. Queuing, airtime and forwarding can add delivery time. This reduces simultaneous responses but is not a reliable delivery protocol for an arbitrarily large fleet. Use individual requests for @@ -350,10 +354,13 @@ move nodes off the normal network; use a temporary window or a planned recovery path for experiments. A forwarding policy can also partition the fleet. The receiver is allocated lazily when fleet settings are present or queried, with -one bounded mailbox and one 308-byte fragment assembly. Cryptographic work and storage writes occur after the receive -stack unwinds. Signature-validation -attempts are bounded to protect the radio loop from matching-hash junk. A corrupt -or unreadable fleet store denies commands rather than discarding its replay state. +one bounded mailbox and two 308-byte fragment assemblies, plus bounded metadata. +Cryptographic work and storage writes occur after the receive stack unwinds. +Signature-validation attempts are bounded after private-channel MAC verification, +complete framing, replay, target, time and command checks. Keyless matching-hash +junk, already-used requests, other nodes' requests and incomplete fragments do not +spend that signature budget. A corrupt or unreadable fleet store denies commands +rather than discarding its replay state. ## Ideas for packet-abuse containment diff --git a/docs/ota_user_guide.md b/docs/ota_user_guide.md index 9026da362..e12db2692 100644 --- a/docs/ota_user_guide.md +++ b/docs/ota_user_guide.md @@ -424,6 +424,10 @@ and packet loss; `3` does not guarantee three times the throughput. The factor covers OTA requests and responses (catalog, manifest, leaves, DATA, and proofs), OTA relay delays, discovery jitter, and automatic OTA adverts. +Sources queue manifest and leaf replies and admit their fragments one at a +time through the paced transmit queue. Repeated requests merge pending +fragments; a full response queue leaves the request available for another +source or a later retry. This preserves packet space for other mesh traffic. Below `1`, the transmit queue also spaces out **every OTA packet**, including both profile copies, while letting ordinary messages run. Recovery waits grow for slower transfers; faster settings retain the existing retry allowance so @@ -469,7 +473,7 @@ automation (e.g. for a remote node you can't easily reach), you can opt in. Thes ``` ota config autofetch any # auto-DOWNLOAD any compatible update for this node (still won't install) -ota config autofetch signed # auto-download only signed updates +ota config autofetch signed # auto-download verified updates from allowlisted signers ota config autofetch off # back to manual (default) ota config autoinstall trusted # auto-INSTALL only a trusted signed version newer than the running EndF @@ -484,9 +488,18 @@ ota config hops 0 # only exchange OTA with directly-connected node ota config # show the current settings ``` -These policies also govern automatic adoption of an interrupted staged download after reboot. `off` leaves -it untouched, `signed` requires the stored manifest's signed flag, and automatic resume requires the stored -target to match this node and its version to be newer than the running valid EndF. Reissuing an explicit +With `autofetch signed`, add the author's public key using `ota key add` before +expecting an automatic download. The node verifies the manifest's signature +against that allowlist before planning, erasing, or writing staging storage. +`autofetch any` remains the deliberate option for automatically downloading +unsigned compatible packages; it does not authorize installation. + +These policies also govern automatic adoption of an interrupted staged +download after reboot. `off` leaves it untouched; `signed` requires the same +allowlisted signature verification. Automatic resume also requires the stored +target to match this node and its version to be newer than the running valid +EndF. The signature check applies when an automatic download resumes after +discovering a source or reconnecting its storage. Reissuing an explicit `ota pull ` remains the deliberate override for an older or unsigned partial. For bring-up/debugging, `ota dev resume ` performs the same explicit MID-bound re-adoption without starting a new network fetch. After reboot it requires the MID; bare `ota dev resume` is accepted only while @@ -496,6 +509,13 @@ guessing which is newest. Specify the intended MID to select its unique checkpoi rejected. Temporary storage read failures no longer consume a download slot indefinitely: host storage pauses for reconnection, while non-reconnectable storage reports a storage error and can be retried. +A failed automatic download starts a cooldown before other automatic candidates +are considered: one minute initially, doubling after further failures up to +15 minutes. Changing the offered image or source does not skip this wait. +The timer uses elapsed uptime, and a completed download clears it. Manual +`ota pull`, explicit resume, and archive captures keep their existing operator +controls and are not restricted by this automatic-download cooldown. + Recommended for most people: leave both **off** and update by hand. Use `autoinstall trusted` only once you've added the signer's key (next section) and you trust them to push updates unattended. Automatic admission and final apply both reject zero, equal, or older signed versions; a dishonest catalog version @@ -513,8 +533,9 @@ for the required `/mota/.mota` filenames and the complete TempRadio ## Optional: only trust updates from specific people -If you'll use auto-install, tell your node which signing keys to trust. The firmware author shares their -**public** key (a hex string); you add it: +If you'll use signed auto-download or auto-install, tell your node which +signing keys to trust. The firmware author shares their **public** key (a hex +string); you add it: ``` ota key add # trust this signer diff --git a/src/Mesh.cpp b/src/Mesh.cpp index d9e3194c9..8e26fbb13 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -173,7 +173,8 @@ static uint8_t otaTrafficPriority(const uint8_t* msg, uint16_t len) { static bool isPacedOtaResponse(const uint8_t* msg, uint16_t len) { if (!msg || len == 0) return false; - return msg[0] == ota::OTA_DATA || msg[0] == ota::OTA_PROOF; + return msg[0] == ota::OTA_DATA || msg[0] == ota::OTA_PROOF + || msg[0] == ota::OTA_LEAVES || msg[0] == ota::OTA_MANIFEST; } #if defined(ENABLE_OTA) @@ -191,7 +192,7 @@ static int queuedPacedOtaResponses(PacketManager* manager) { } // Adapter so the portable OtaManager can emit packets through the mesh (message-priority, hop-capped). -// DATA/PROOF admission is credit-limited; false leaves the manager's response descriptor intact. +// Transfer response admission is credit-limited; false retains the response descriptor. bool Mesh::otaSendAdapter(void* ctx, const uint8_t* msg, uint16_t len, bool /*flood*/) { Mesh* m = (Mesh*)ctx; if (!m->isAnyTempRadioActive()) return false; diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index 34cb3b201..a9d9c50be 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -5137,7 +5137,7 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep strcpy(reply, "Error: extra.sf requires an LR2021 radio"); #endif } else { - sprintf(reply, "unknown config: %s", config); + strcpy(reply, "unknown config"); } } diff --git a/src/helpers/CommonCLI_Observer.cpp b/src/helpers/CommonCLI_Observer.cpp index fba7d11b2..b6e72ea05 100644 --- a/src/helpers/CommonCLI_Observer.cpp +++ b/src/helpers/CommonCLI_Observer.cpp @@ -654,7 +654,7 @@ bool CommonCLI::handleObserverSetCmd(uint32_t sender_timestamp, const char* conf } } } else { - sprintf(reply, "unknown config: %s", config); + strcpy(reply, "unknown config"); } } else if (memcmp(config, "mqtt.analyzer.us ", 17) == 0) { const int slot = 0; diff --git a/src/helpers/FleetChannel.cpp b/src/helpers/FleetChannel.cpp index 7081c042a..21bbaf725 100644 --- a/src/helpers/FleetChannel.cpp +++ b/src/helpers/FleetChannel.cpp @@ -81,7 +81,7 @@ bool FleetChannel::handleConfig(const char* command, char* reply, size_t capacit snprintf(reply, capacity, "> accepted=%lu rejected=%lu busy=%lu pending=%u ack=%u parts=%u", (unsigned long)accepted_, (unsigned long)rejected_, (unsigned long)busy_, unsigned(pending_), unsigned(barrier_.waiting()), - unsigned(bool(assembly_parts_ & 1)) + unsigned(bool(assembly_parts_ & 2))); + assemblyPartCount()); } else if (!strncmp(command, "set fleet.channel ", 18)) { if (pending_ || barrier_.waiting()) { snprintf(reply, capacity, "Err - fleet command pending; retry later"); return true; @@ -142,16 +142,29 @@ void FleetChannel::receive(Packet* packet, Mesh& mesh, const TransportKey* scope (void)mesh; } +void FleetChannel::clearAssembly(Assembly& assembly) { + memset(assembly.data, 0, sizeof(assembly.data)); + assembly.sequence = assembly.deadline = 0; + assembly.length = 0; + assembly.parts = 0; +} + void FleetChannel::clearAssembly() { - memset(assembly_, 0, sizeof(assembly_)); - assembly_sequence_ = assembly_deadline_ = 0; - assembly_length_ = 0; - assembly_parts_ = 0; + for (auto& assembly : assemblies_) clearAssembly(assembly); +} + +unsigned FleetChannel::assemblyPartCount() const { + unsigned count = 0; + for (const auto& assembly : assemblies_) + count += unsigned(bool(assembly.parts & 1)) + unsigned(bool(assembly.parts & 2)); + return count; } void FleetChannel::serviceAssemblyDeadline() { - if (assembly_parts_ && int32_t(uint32_t(millis()) - assembly_deadline_) >= 0) - clearAssembly(); + for (auto& assembly : assemblies_) { + if (assembly.parts && int32_t(uint32_t(millis()) - assembly.deadline) >= 0) + clearAssembly(assembly); + } } FleetChannel::DecodeResult FleetChannel::decode(Mesh& mesh, FleetCommand::Decoded& command) { @@ -159,10 +172,6 @@ FleetChannel::DecodeResult FleetChannel::decode(Mesh& mesh, FleetCommand::Decode if (uint32_t(now_ms - verify_window_) >= 1000) { verify_window_ = now_ms; verify_attempts_ = 0; } - // A forged matching channel hash must not monopolize the radio loop with - // Ed25519 work. Legitimate publishers can retry with a fresh sequence. - if (verify_attempts_ >= 4) return DecodeResult::Rejected; - ++verify_attempts_; uint8_t data[MAX_PACKET_PAYLOAD]; const int length = Utils::MACThenDecrypt(channel_.secret, data, incoming_ + 1, incoming_len_ - 1); if (length < 3 || data[0] != uint8_t(FleetCommand::DataType) @@ -174,7 +183,7 @@ FleetChannel::DecodeResult FleetChannel::decode(Mesh& mesh, FleetCommand::Decode || !zero(data + unpadded, length - unpadded)) return DecodeResult::Rejected; const uint8_t* envelope = data + 3; size_t envelope_length = payload_length; - bool assembled = false; + Assembly* assembled = nullptr; if (payload_length >= 4 && !memcmp(envelope, "FMP1", 4)) { FleetCommand::Fragment fragment; if (!FleetCommand::parseFragment(envelope, payload_length, fragment) @@ -184,38 +193,66 @@ FleetChannel::DecodeResult FleetChannel::decode(Mesh& mesh, FleetCommand::Decode || (fragment.sequence > now && fragment.sequence - now > FleetCommand::MaxClockLead) || (now > fragment.sequence && now - fragment.sequence > FleetCommand::MaxLifetime)) return DecodeResult::Rejected; - // A fresh retry must not wait five minutes for a lost second fragment. - // Older transfers and conflicting fragments cannot disturb newer intent. - if (assembly_parts_ && fragment.sequence > assembly_sequence_) clearAssembly(); - if (assembly_parts_ && (assembly_sequence_ != fragment.sequence - || assembly_length_ != fragment.total_length)) - return DecodeResult::Rejected; - if (!assembly_parts_) { - assembly_sequence_ = fragment.sequence; - assembly_length_ = fragment.total_length; - // A duplicate cannot extend this fixed five-minute collection window. - assembly_deadline_ = now_ms + 300000UL; + Assembly* slot = nullptr; + for (auto& candidate : assemblies_) { + if (candidate.parts && candidate.sequence == fragment.sequence) { + // Conflicting metadata cannot replace a live transfer with this + // sequence. Its identity remains untrusted until the full signature. + if (candidate.length != fragment.total_length) return DecodeResult::Rejected; + slot = &candidate; + break; + } + } + if (!slot) { + for (auto& candidate : assemblies_) { + if (!candidate.parts) { slot = &candidate; break; } + } + if (!slot) { + // Evict the oldest collection by monotonic age, never by an unsigned + // advertised sequence. A forged now+60 fragment cannot reserve the + // receiver against a legitimate current command for five minutes. + slot = &assemblies_[0]; + for (auto& candidate : assemblies_) { + if (int32_t(candidate.deadline - slot->deadline) < 0) slot = &candidate; + } + clearAssembly(*slot); + } + slot->sequence = fragment.sequence; + slot->length = fragment.total_length; + // Fixed five-minute lifetime: duplicates never extend ownership. + slot->deadline = now_ms + AssemblyLifetimeMillis; } const size_t offset = fragment.index * FleetCommand::FragmentDataLength; const uint8_t mask = uint8_t(1U << fragment.index); - if (assembly_parts_ & mask) { - return !memcmp(assembly_ + offset, fragment.data, fragment.length) + if (slot->parts & mask) { + return !memcmp(slot->data + offset, fragment.data, fragment.length) ? DecodeResult::Partial : DecodeResult::Rejected; } - memcpy(assembly_ + offset, fragment.data, fragment.length); - assembly_parts_ |= mask; - if (assembly_parts_ != 3) return DecodeResult::Partial; - envelope = assembly_; - envelope_length = assembly_length_; - assembled = true; + memcpy(slot->data + offset, fragment.data, fragment.length); + slot->parts |= mask; + if (slot->parts != 3) return DecodeResult::Partial; + envelope = slot->data; + envelope_length = slot->length; + assembled = slot; } + // The visible channel hash is only a routing hint. Charge the expensive + // verification budget only at Ed25519 verification, after private-key MAC, + // framing, replay, target, time and command checks. Keyless junk, recorded + // old requests and incomplete transfers cannot consume those slots. const bool valid = envelope_length >= FleetCommand::MinHeaderSize + FleetCommand::SignatureSize && storage::readLE32(envelope + 4) > last_sequence_ - && (!assembled || storage::readLE32(envelope + 4) == assembly_sequence_) + && (!assembled || storage::readLE32(envelope + 4) == assembled->sequence) && FleetCommand::decode(controller_, channel_.secret, envelope, envelope_length, mesh.getRTCClock()->getCurrentTime(), mesh.self_id.pub_key, command, - matchesFleetRegion, regions_, matchesFleetLocation, hooks_); - if (assembled || (valid && assembly_parts_ && command.sequence >= assembly_sequence_)) clearAssembly(); + matchesFleetRegion, regions_, matchesFleetLocation, hooks_, + [](void* context) { + auto* receiver = static_cast(context); + if (receiver->verify_attempts_ >= 4) return false; + ++receiver->verify_attempts_; + return true; + }, this); + if (valid) clearAssembly(); + else if (assembled) clearAssembly(*assembled); if (!valid) return DecodeResult::Rejected; broadcast_ = command.broadcast; return DecodeResult::Accepted; diff --git a/src/helpers/FleetChannel.h b/src/helpers/FleetChannel.h index 029afdf31..8fdbdd624 100644 --- a/src/helpers/FleetChannel.h +++ b/src/helpers/FleetChannel.h @@ -99,10 +99,19 @@ class FleetChannel { bool broadcast_ = false; bool ack_profile_mutation_ = false; uint8_t incoming_[MAX_PACKET_PAYLOAD]{}; - uint8_t assembly_[FleetCommand::MaxEnvelopeLength]{}; - uint32_t assembly_sequence_ = 0, assembly_deadline_ = 0; - uint16_t assembly_length_ = 0; - uint8_t assembly_parts_ = 0; + // Fragment metadata has only channel-key authentication, not the + // publisher's signature. Two bounded slots avoid making an unsigned future + // sequence authoritative over every other command's assembly. + struct Assembly { + uint8_t data[FleetCommand::MaxEnvelopeLength]{}; + uint32_t sequence = 0, deadline = 0; + uint16_t length = 0; + uint8_t parts = 0; + }; + static constexpr uint32_t AssemblyLifetimeMillis = 300000; + static_assert(sizeof(Assembly) <= FleetCommand::MaxEnvelopeLength + 12, + "fleet fragment slots must stay bounded"); + Assembly assemblies_[2]{}; uint8_t incoming_len_ = 0, rx_profile_ = 0, path_hash_size_ = 1; uint32_t rx_generation_ = 0; TransportKey reply_scope_{}; @@ -115,6 +124,8 @@ class FleetChannel { enum class DecodeResult { Rejected, Partial, Accepted }; DecodeResult decode(Mesh& mesh, FleetCommand::Decoded& command); void clearAssembly(); + void clearAssembly(Assembly& assembly); + unsigned assemblyPartCount() const; void serviceAssemblyDeadline(); bool acknowledge(Mesh& mesh, const char* name, uint32_t sequence, const char* reply, bool radio_mutation); diff --git a/src/helpers/FleetCommand.cpp b/src/helpers/FleetCommand.cpp index ba7301f77..d8286ec44 100644 --- a/src/helpers/FleetCommand.cpp +++ b/src/helpers/FleetCommand.cpp @@ -579,7 +579,8 @@ bool FleetCommand::decode(const Identity& publisher, const uint8_t* key, const uint8_t* payload, size_t length, uint32_t now, const uint8_t* self_public_key, Decoded& output, RegionMatcher matcher, void* context, - GeoMatcher geo_matcher, void* geo_context) { + GeoMatcher geo_matcher, void* geo_context, + SignatureGate signature_gate, void* signature_context) { memset(&output, 0, sizeof(output)); if (!privateKeyAllowed(key) || !payload || !self_public_key || zero(publisher.pub_key, PUB_KEY_SIZE) || zero(self_public_key, PUB_KEY_SIZE) @@ -620,6 +621,7 @@ bool FleetCommand::decode(const Identity& publisher, const uint8_t* key, memcpy(command, payload + command_offset, command_length); command[command_length] = 0; if (!commandAllowed(command)) return false; + if (signature_gate && !signature_gate(signature_context)) return false; uint8_t message[SignedMessageCapacity]; const size_t message_length = signedMessage(key, payload, unsigned_length, message); const bool valid = publisher.verify(payload + unsigned_length, message, int(message_length)); diff --git a/src/helpers/FleetCommand.h b/src/helpers/FleetCommand.h index f3cad1b5f..23659b997 100644 --- a/src/helpers/FleetCommand.h +++ b/src/helpers/FleetCommand.h @@ -63,6 +63,9 @@ public: const char* name, size_t length); using GeoMatcher = bool (*)(void* context, int32_t latitude_e6, int32_t longitude_e6, uint32_t radius_meters); + // Optional runtime work gate. Called only after all cheap envelope, + // targeting and time checks, immediately before Ed25519 verification. + using SignatureGate = bool (*)(void* context); struct Fragment { uint32_t sequence; @@ -108,7 +111,8 @@ public: const uint8_t* payload, size_t length, uint32_t now, const uint8_t* self_public_key, Decoded& output, RegionMatcher matcher = nullptr, void* context = nullptr, - GeoMatcher geo_matcher = nullptr, void* geo_context = nullptr); + GeoMatcher geo_matcher = nullptr, void* geo_context = nullptr, + SignatureGate signature_gate = nullptr, void* signature_context = nullptr); // Envelopes <= MaxPayloadLength travel unchanged. Longer envelopes use // exactly two FMP1 frames, each bounded by the group payload limit. diff --git a/src/helpers/bridges/MQTTBridge.cpp b/src/helpers/bridges/MQTTBridge.cpp index e00270afa..c86e93878 100644 --- a/src/helpers/bridges/MQTTBridge.cpp +++ b/src/helpers/bridges/MQTTBridge.cpp @@ -2214,7 +2214,12 @@ bool MQTTBridge::setupSlot(int index) { #if defined(PORTABLE_MQTT_OBSERVER) // Portable images keep pinned roots for built-in presets. The general CA // bundle is intentionally left unreferenced so the linker can discard it. - (void)needs_tls; + if (needs_tls) { + MQTT_DEBUG_PRINTLN("MQTT%d TLS refused: custom brokers require a CA bundle", index + 1); + slot.initial_connect_done = false; + slot.last_reconnect_attempt = millis(); + return false; + } #else if (needs_tls) { if (!s_ca_bundle_loaded) { @@ -2233,7 +2238,12 @@ bool MQTTBridge::setupSlot(int index) { slot.client->setCACertBundle(rootca_crt_bundle_start, bundle_len); s_ca_bundle_loaded = true; } else { - MQTT_DEBUG_PRINTLN("MQTT%d TLS: no embedded cert bundle available", index + 1); + // Never let ESP-IDF fall back to VERIFY_NONE for a TLS URI. In + // particular, do not mint/send credentials or start the client. + MQTT_DEBUG_PRINTLN("MQTT%d TLS refused: no embedded cert bundle available", index + 1); + slot.initial_connect_done = false; + slot.last_reconnect_attempt = millis(); + return false; } } else { // Global bundle already loaded - just attach the callback for this client. diff --git a/src/helpers/esp32/WebConfigHtml.h b/src/helpers/esp32/WebConfigHtml.h index 34639cbe3..a69b8496e 100644 --- a/src/helpers/esp32/WebConfigHtml.h +++ b/src/helpers/esp32/WebConfigHtml.h @@ -1,46 +1,46 @@ // Auto-generated by scripts/generate_webconfig_html.py from webui/index.html // DO NOT EDIT - edit webui/index.html instead. // Compressed with Google Zopfli 0.4.3 (gzip, 1000 iterations). -// shipped-page-sha256: 6f3e28a9455d02d128c9776b138a57980e8c793efcf57b061d53417857725f68 +// shipped-page-sha256: a91ff84d309bc581ecd0558b9c1c2985f212564425417a13f95c34b03627a85e #pragma once #include #include -const uint32_t WEBCONFIG_HTML_GZ_LEN = 34031; -const char WEBCONFIG_HTML_ETAG[] = "\"ab4bf555eb260feb\""; -const char WEBCONFIG_HTML_VERSION[] = "426b5dfbabaeb838"; -const uint16_t WEBCONFIG_HTML_LOADER_LEN = 462; +const uint32_t WEBCONFIG_HTML_GZ_LEN = 34038; +const char WEBCONFIG_HTML_ETAG[] = "\"72583d025af248b5\""; +const char WEBCONFIG_HTML_VERSION[] = "2d0842255cf9e90a"; +const uint16_t WEBCONFIG_HTML_LOADER_LEN = 461; const uint16_t WEBCONFIG_HTML_SUCCESS_LEN = 65; const uint8_t WEBCONFIG_HTML_LOADER[] PROGMEM = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x75,0x52,0xc7,0x96,0x9b,0x30, - 0x14,0xfd,0x15,0x65,0x2a,0x72,0xc1,0x9e,0x5e,0x40,0x4e,0xe1,0x64,0x95,0xde,0xd7, - 0x42,0x3c,0x8c,0x4e,0x64,0x89,0xf3,0x78,0x98,0x69,0xfc,0x7b,0xa8,0xe9,0xc3,0x46, - 0xfd,0x36,0x6e,0xf8,0x24,0x71,0x8a,0x6e,0x73,0x60,0x19,0x6d,0xcc,0x2a,0xdc,0x00, - 0x49,0xa6,0x32,0x89,0x05,0x90,0x28,0x29,0x9d,0x5f,0x0e,0x7b,0x56,0x6e,0x40,0x6c, - 0x35,0x54,0xb9,0x43,0x62,0xca,0x59,0x02,0x4b,0x62,0xa7,0xd2,0x09,0x65,0x22,0x81, - 0xad,0x56,0x30,0xef,0x16,0x33,0x6d,0x35,0x69,0x69,0xe6,0x85,0x92,0x06,0xc4,0xd1, - 0xce,0x2a,0x24,0x4d,0x06,0x56,0x6f,0xa0,0xc8,0x22,0x87,0xc0,0xbe,0x41,0x1c,0x39, - 0x9b,0xea,0x75,0xb8,0xe8,0x4f,0xc2,0xd8,0x25,0xb7,0xab,0xd7,0x4e,0x26,0xda,0xae, - 0xd9,0xbf,0xf7,0x0e,0x32,0x30,0x46,0xe7,0x41,0x58,0x28,0xd4,0x39,0xad,0xbc,0xb4, - 0xb4,0x8a,0xb4,0xb3,0x1e,0xbf,0xdf,0x4a,0x64,0x56,0x2c,0x83,0x71,0x8b,0x99,0x06, - 0x66,0xd8,0x8f,0x44,0xa5,0x6d,0xe2,0x2a,0xff,0x79,0xdc,0x88,0x6e,0xb0,0x08,0x9d, - 0x31,0x80,0x33,0x25,0xa2,0x83,0x03,0x0b,0x15,0x8b,0x3c,0x3e,0x23,0xa1,0x0e,0x0e, - 0x0a,0xa0,0xcf,0x7a,0x03,0xae,0xa4,0xdf,0xc1,0x95,0x2f,0xdb,0x97,0x1e,0xaf,0x67, - 0x57,0xcb,0xe6,0xe3,0x41,0x0a,0xa4,0x32,0x6f,0x67,0x51,0xea,0xa7,0x5b,0x71,0x7a, - 0x7c,0x1e,0x9f,0x25,0x69,0x2c,0x63,0x09,0xf1,0xe5,0xc9,0xe5,0xce,0x4c,0x3d,0xbd, - 0x2f,0xf4,0xda,0x4a,0x73,0xad,0xfc,0x7e,0x52,0x5f,0xdf,0xd7,0xdc,0xa7,0x0c,0xec, - 0x2f,0x60,0xe4,0xf7,0x3a,0xf5,0xd0,0x77,0xdf,0x39,0x02,0x95,0x68,0x19,0xfa,0x04, - 0x37,0x0d,0x4f,0xd0,0xed,0x17,0x24,0xa9,0x2c,0x84,0x10,0xa7,0xcb,0x2b,0x7e,0x6f, - 0x9c,0x92,0xed,0x33,0x1f,0xa1,0xf7,0x16,0x0c,0x8f,0x6c,0x69,0x4c,0x4d,0x19,0xba, - 0x8a,0xbd,0x44,0x74,0xe8,0xed,0x10,0x4a,0x5b,0xa4,0x80,0x2c,0x95,0xda,0x40,0xb2, - 0xc3,0xff,0xa1,0xce,0x3b,0x6a,0xe2,0xca,0x80,0xc4,0xd1,0x31,0x75,0xbc,0xb9,0x10, - 0xa2,0x85,0x1c,0x34,0x05,0x89,0x53,0xe5,0x06,0x2c,0xf9,0x2e,0x87,0x26,0x8c,0x5f, - 0xeb,0x0a,0x35,0x81,0x97,0xff,0xb6,0xa3,0x8c,0x2b,0xa0,0x4d,0xe9,0x27,0x0f,0x3c, - 0xce,0x33,0x9d,0xda,0xf0,0x84,0xff,0x16,0x78,0xeb,0x6a,0x76,0xb6,0x5c,0x4e,0x2c, - 0x0f,0xc0,0x14,0xc0,0x7e,0xe2,0xb6,0xbd,0xe8,0x92,0x89,0xc6,0xbe,0x7d,0xb1,0x32, - 0x36,0xc0,0xc8,0x75,0xff,0xf9,0x57,0x45,0xae,0xd9,0xce,0x14,0xa6,0x3b,0x3e,0xfb, - 0x08,0xdd,0x41,0x73,0xa1,0xb1,0x81,0xb7,0xfe,0x4e,0xcd,0xeb,0x3e,0xb6,0x9a,0x7b, - 0x3c,0x5c,0x0c,0x15,0xfa,0x01,0x48,0x1e,0x8c,0x7d,0xf8,0x02,0x00,0x00, + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x75,0x52,0x47,0x97,0x9c,0x30, + 0x0c,0xfe,0x2b,0xce,0x56,0x3c,0x85,0x65,0x7b,0x01,0x4f,0x0a,0x2f,0xa7,0xf4,0x7e, + 0xf6,0x18,0xb1,0xf8,0xc5,0x23,0xf1,0x84,0x18,0xb6,0xf1,0xdf,0x93,0x69,0xe9,0xd1, + 0x45,0xbd,0x7f,0xd9,0xa3,0x82,0x9c,0xdc,0xd6,0xa0,0x2a,0x99,0x85,0x49,0x36,0x03, + 0xb1,0xca,0x55,0x96,0x1b,0x10,0xd3,0x4a,0x39,0xbe,0x58,0xdb,0xd0,0xce,0xc0,0xcc, + 0x3d,0x74,0x35,0xb1,0x28,0x47,0x28,0x80,0x62,0xb6,0x3a,0x5f,0x48,0x65,0x0a,0x98, + 0x7b,0x07,0xe3,0xa5,0x32,0xf2,0xe8,0xc5,0xdb,0x30,0x6e,0x9c,0x0d,0x60,0x0e,0xb7, + 0x26,0x99,0x78,0x09,0x30,0x79,0x05,0x4d,0x95,0x13,0x83,0xfa,0x02,0xd3,0x9c,0xb0, + 0xf4,0xd7,0xd9,0xc1,0xca,0x93,0x4d,0xa9,0xb8,0x9d,0xbc,0x24,0x5b,0x78,0xbc,0x56, + 0x7f,0xc7,0xed,0x55,0x10,0x82,0xaf,0xd3,0xac,0x71,0xec,0x6b,0x99,0x44,0x65,0x8b, + 0x4e,0x3c,0x61,0xa4,0xef,0xe7,0x96,0x15,0x9a,0x24,0xdd,0x98,0x54,0x20,0x5b,0xac, + 0xed,0xb9,0xe9,0x3c,0x16,0xd4,0xc5,0x4f,0xa7,0xc4,0x92,0x13,0x0a,0x53,0x08,0xc0, + 0x23,0x67,0xf2,0xbd,0x3d,0x84,0x4e,0xe5,0x91,0x1e,0x89,0x71,0x7b,0x7b,0x0d,0xc8, + 0x47,0x3f,0x03,0x6a,0xe5,0xd7,0xe2,0x2e,0xb6,0x8b,0xcc,0x48,0xf7,0xa3,0xcb,0xe4, + 0x3b,0xe9,0xb4,0x04,0x71,0x55,0xb4,0x75,0xd0,0xfa,0xc7,0x73,0x73,0x54,0x24,0x17, + 0x27,0x47,0x47,0xa7,0xa7,0xae,0xbc,0x84,0xcb,0xc4,0x6e,0x8d,0xdc,0xe3,0xfb,0xc6, + 0x5f,0xa3,0x0d,0x57,0x2e,0x5e,0x09,0xfd,0xd5,0x7d,0xaf,0x63,0xa9,0x00,0x7f,0x16, + 0x66,0x7d,0xef,0xcb,0x88,0x63,0xfa,0xaa,0x19,0xa4,0x65,0x54,0x1c,0x0b,0xdc,0x48, + 0xa4,0xd3,0xa5,0xbd,0x11,0x2b,0x6d,0x63,0x8c,0x39,0x49,0x2e,0xf5,0x7d,0x20,0x67, + 0x17,0x69,0x31,0xc3,0x6a,0xb7,0x74,0x9d,0x84,0x6d,0x08,0xbd,0x54,0x4c,0x9d,0x7a, + 0xce,0x4c,0x1c,0x6d,0x09,0x5b,0x6c,0x4a,0x60,0x55,0x5a,0x1f,0xa0,0xd8,0xd2,0x7f, + 0xb5,0xae,0x97,0xad,0x45,0xbb,0x00,0x96,0x37,0x1b,0xcb,0xb2,0x6f,0x6d,0x8c,0x59, + 0x94,0x5c,0xcf,0x94,0x16,0xe4,0xda,0x19,0xa0,0xc4,0x54,0x03,0x46,0xfa,0xa7,0xde, + 0xb1,0x17,0x88,0xea,0x5f,0x2c,0x2e,0x50,0x03,0x8b,0x2b,0xfd,0xe8,0x03,0xff,0xef, + 0x33,0x1c,0x62,0x76,0xac,0x7f,0x39,0xf8,0x62,0xab,0xd1,0x69,0x92,0x0c,0x50,0xa7, + 0x10,0x1a,0x50,0x3f,0xea,0x2e,0x70,0xb1,0xbc,0x4c,0xbe,0xc1,0xdb,0x27,0xb4,0xd3, + 0x00,0x4a,0x68,0xf9,0xe7,0x9f,0x10,0xb9,0x52,0x5b,0x43,0x18,0x6e,0xc5,0xea,0x3d, + 0x2c,0x1d,0x42,0x8a,0x41,0xf8,0x36,0xde,0xea,0x75,0xbf,0x3a,0x5b,0xaf,0x23,0x9d, + 0x1d,0xac,0x21,0xf4,0x0d,0x45,0xc6,0x70,0x47,0xf8,0x02,0x00,0x00, }; const uint8_t WEBCONFIG_HTML_GZ[] PROGMEM = { @@ -262,1915 +262,1916 @@ const uint8_t WEBCONFIG_HTML_GZ[] PROGMEM = { 0xc1,0x6e,0xa4,0xf7,0x41,0xb1,0x49,0xc3,0x28,0xd1,0x2e,0xb7,0x00,0x8f,0x44,0x36, 0xa8,0x29,0x6b,0x88,0x6c,0x73,0xc8,0x4a,0xea,0x0a,0xda,0xfe,0xd0,0x4f,0x45,0x4d, 0x3e,0x62,0x47,0xc4,0x0e,0xcd,0x81,0xc5,0xfb,0x1b,0x74,0xe7,0x2d,0xcd,0xbb,0x01, - 0x67,0xee,0x95,0x37,0x7d,0x3d,0x73,0x1d,0xdf,0xab,0x02,0x67,0xff,0xcf,0xce,0x75, - 0x37,0x37,0x8e,0x2b,0xf9,0xff,0xf7,0x53,0x74,0xf1,0xaa,0x66,0xe4,0xba,0x11,0x2d, - 0xc9,0xb2,0x26,0x78,0xac,0x2d,0x87,0x09,0x1b,0x1c,0x6e,0xec,0x17,0xfe,0xbb,0x82, - 0x48,0xc8,0xe2,0x33,0x45,0x70,0x01,0x70,0x64,0xed,0xa7,0xbf,0x46,0x03,0x20,0x45, - 0xd3,0xd4,0xd0,0xe1,0xf2,0x7b,0x6f,0x77,0x25,0x11,0xa9,0xd1,0xdd,0xf8,0x75,0x40, - 0xd3,0x75,0xe9,0x20,0x83,0x2b,0xc4,0xb6,0xb9,0xb4,0x8f,0xbb,0xb6,0xa4,0x1e,0xbf, - 0xb8,0x57,0x00,0x4c,0x7c,0xe1,0x5e,0x08,0xe0,0x12,0xbf,0x60,0x2d,0x2d,0xd8,0x0a, - 0xff,0x60,0x34,0x09,0xc0,0x7a,0x3d,0xf4,0x9d,0x4a,0xf8,0x8f,0xc5,0xdd,0x61,0x40, - 0x35,0x49,0x63,0xfc,0x27,0x00,0x93,0xac,0x3f,0x0c,0x8c,0x6a,0x07,0xa0,0xb4,0x14, - 0xb7,0xfc,0x30,0xa8,0xb2,0x18,0xfe,0x59,0xdf,0xcf,0xe8,0x1f,0x90,0x15,0x8c,0x58, - 0x7e,0x18,0xd0,0x2e,0x02,0x5c,0x38,0x4a,0x64,0x94,0x72,0x88,0x70,0xfe,0x21,0xf6, - 0x8b,0xd6,0xf6,0x53,0xe2,0xa8,0x70,0xe4,0x17,0x6a,0x4e,0xed,0x16,0xdf,0xc5,0x19, - 0x72,0xa6,0x17,0x10,0x1f,0x06,0x67,0x6f,0xc3,0xb7,0x80,0xff,0xb2,0x09,0x4c,0x60, - 0xe0,0xfe,0xff,0x2e,0x9c,0x9c,0x0d,0x27,0xe1,0x5e,0xad,0x61,0xe8,0x1a,0xc6,0xe1, - 0x7b,0xc0,0x7f,0xd9,0x10,0x1f,0x51,0x77,0xdb,0x3a,0x0e,0x47,0x67,0xc3,0xf7,0xe1, - 0xf0,0x5e,0xdb,0xd0,0xb5,0xd1,0xa2,0xbb,0xc8,0x30,0xfc,0x40,0x97,0x1c,0xa2,0x94, - 0x29,0x75,0x18,0x50,0xa5,0x31,0xbd,0x64,0x31,0x84,0x24,0xc6,0xdf,0xfd,0x8c,0x2d, - 0x79,0x50,0xbe,0xe5,0x80,0xac,0x1f,0xba,0x11,0xb6,0x59,0x15,0xb3,0x60,0x1a,0x89, - 0x0c,0x39,0xa2,0x51,0x56,0xaf,0x16,0xe4,0xb2,0x1c,0x7c,0xdc,0xc5,0x2e,0xd8,0xd1, - 0x7d,0x50,0x5d,0x86,0x5b,0x82,0x4a,0x4d,0xc1,0x24,0x14,0x02,0x37,0x07,0x3d,0x09, - 0xa6,0x48,0x0e,0x76,0xc3,0xde,0xa4,0xee,0x65,0x7f,0x2a,0x7a,0xad,0xf5,0x8f,0x28, - 0x36,0xc6,0x9f,0x54,0x9d,0x17,0xd8,0xee,0x01,0x88,0x0c,0x95,0x33,0xba,0x3d,0x0c, - 0xc8,0x0d,0x39,0xb1,0x9d,0x7a,0x3b,0xc1,0x4f,0x3a,0xd1,0x29,0xf6,0x73,0x4f,0xa0, - 0xdf,0x07,0x75,0x9b,0xe4,0x40,0xd5,0xae,0xc0,0xb2,0x18,0x72,0xa6,0x34,0x07,0x06, - 0xb9,0xe4,0xe6,0x46,0x28,0x86,0x88,0xde,0xe5,0x08,0x7e,0x62,0x32,0x61,0x7d,0xaa, - 0x62,0x3c,0x0c,0x2e,0x72,0x9e,0x81,0x5f,0x7a,0xfa,0xea,0x46,0x1f,0xfc,0xfb,0xc7, - 0x5d,0xbb,0x36,0xa9,0xa4,0x57,0xc2,0x25,0x4b,0xcc,0x03,0x65,0xe3,0x6c,0x22,0xf9, - 0x7b,0x3f,0x15,0x78,0xd6,0x02,0xbf,0x25,0xda,0x4c,0x9d,0xf1,0x26,0x19,0x4e,0x7c, - 0x1f,0x4d,0x8f,0x62,0x74,0x5b,0x80,0x46,0xe0,0xb4,0x23,0xa3,0x1c,0x40,0x9a,0x7f, - 0x18,0x34,0x12,0x53,0x2d,0xa7,0xda,0x99,0x18,0x3a,0xc3,0xc1,0xf4,0x93,0xe1,0x07, - 0xe8,0x45,0xa2,0x20,0x13,0x31,0x7f,0xad,0x80,0xd1,0x12,0xbe,0xfe,0x11,0x7a,0x7a, - 0xc1,0x41,0xa1,0xa0,0x91,0x87,0x1c,0x0a,0x85,0x1c,0x98,0x0b,0x09,0x92,0x2f,0x85, - 0xe6,0x70,0xf2,0xfb,0x2f,0x76,0xc0,0x4e,0xf8,0x71,0x37,0x47,0x72,0xb0,0x6d,0x49, - 0xfb,0x22,0x1a,0xfb,0xe6,0xe7,0xbd,0xdd,0xcc,0x51,0x9a,0xc4,0x36,0x33,0x8f,0xef, - 0x97,0xaf,0x70,0x87,0x97,0x6e,0xcd,0x8f,0xbb,0xd4,0x8e,0xc3,0xa8,0x7a,0xc3,0x89, - 0xd2,0x53,0x64,0x25,0x5d,0x0d,0xa3,0x92,0xe2,0x48,0x2c,0xf3,0x94,0x6b,0xec,0x86, - 0x98,0x27,0x39,0x72,0xc2,0x75,0x77,0xed,0xe4,0x65,0x4d,0x49,0xe5,0x1a,0x4a,0x84, - 0xd6,0xc5,0xab,0x0b,0x6a,0xec,0x32,0xd1,0x9b,0x2b,0x98,0xc6,0xe9,0x15,0xfa,0xb1, - 0x90,0x64,0x5e,0xa4,0xf5,0xfd,0xb8,0xec,0x62,0x6d,0x14,0x3e,0x0b,0xca,0xd5,0x76, - 0x0d,0x13,0xf0,0xd3,0xff,0x74,0xd2,0x6f,0xe8,0xc1,0x2a,0xf9,0x13,0x05,0xbd,0x4d, - 0x11,0x32,0xa1,0x9d,0xa2,0x47,0x19,0xeb,0xd3,0xaf,0xe9,0x2f,0x19,0x18,0x09,0xfd, - 0x2d,0xf9,0x9c,0x80,0x22,0x7f,0x1b,0x85,0x27,0xf2,0x22,0xff,0x19,0x7e,0xd1,0x38, - 0x50,0x28,0xae,0x20,0x99,0xc3,0x5a,0x14,0x12,0xf2,0x85,0x11,0xa2,0x4a,0x39,0xcf, - 0x55,0xf8,0xd3,0x47,0x06,0x0b,0xc9,0xe7,0x87,0xc1,0xbf,0x6c,0x1c,0x10,0x1c,0x7b, - 0x51,0xe8,0xde,0xce,0x81,0xe4,0xba,0x90,0x19,0xcc,0x59,0xaa,0x78,0xe0,0x95,0xac, - 0x19,0x6b,0x04,0x53,0x52,0xfe,0x24,0xb3,0x2b,0xcc,0xa4,0x58,0x29,0x2e,0x3f,0xee, - 0xb2,0x29,0x68,0x01,0xb7,0xb8,0x92,0x5b,0x5a,0x8a,0x1b,0xc9,0x95,0x0a,0x89,0x0f, - 0xf5,0x7d,0xd1,0x65,0x02,0x32,0x2c,0xa1,0xbd,0x29,0x9d,0x0f,0x4b,0x2e,0x88,0xcc, - 0x30,0x32,0xd9,0x68,0x1b,0xdd,0x7f,0xb0,0x77,0xff,0xc1,0xd8,0x3d,0xa8,0x16,0xa2, - 0x96,0xd5,0x9f,0xc3,0xf6,0x83,0x75,0x85,0x24,0xc0,0x10,0x5e,0x2d,0x93,0x38,0x16, - 0xfa,0x80,0xf8,0xf9,0x22,0x27,0xcc,0x2d,0x8d,0xd2,0x9d,0x27,0x88,0x4e,0xf9,0x3a, - 0x98,0x9e,0x58,0x48,0xac,0x4e,0x9d,0xe1,0x14,0x31,0x89,0xa4,0x98,0x71,0x8d,0x8a, - 0x7b,0x0b,0x4a,0x40,0x82,0x12,0x64,0x19,0x48,0xce,0xa2,0x05,0x89,0xf9,0xec,0xdf, - 0xae,0xaf,0x01,0xf9,0x8b,0x1e,0xb3,0xe1,0x64,0xde,0xd4,0x0f,0xdc,0xfb,0x6c,0x7a, - 0x49,0x60,0x85,0x98,0xbb,0x79,0x56,0x63,0x9e,0xa7,0x62,0xbd,0xe4,0x99,0xfe,0x19, - 0x35,0x79,0x0a,0xd7,0x66,0x79,0xab,0x74,0xa0,0xb9,0xd2,0xaa,0x52,0x24,0x9b,0x2e, - 0xc1,0x81,0x33,0x21,0xb4,0x45,0xe8,0x98,0x69,0xd6,0x27,0xcb,0xb6,0x37,0x7a,0x3b, - 0xc1,0xd7,0xe9,0xa0,0xc8,0x52,0xae,0x94,0x21,0x1c,0x58,0xaa,0x84,0x79,0xdf,0x2e, - 0xbb,0xe1,0x34,0x89,0x5a,0x10,0x54,0x7e,0xba,0xba,0xec,0x9f,0x5f,0xfc,0x8d,0x5a, - 0x32,0x9e,0x3a,0x10,0x0f,0xe1,0x97,0x39,0xf5,0xaa,0x08,0x2a,0xf7,0x4c,0x0c,0xd1, - 0xc0,0xbe,0xb3,0x24,0x35,0xfe,0x0c,0x2c,0xb8,0xe4,0x6f,0x0c,0xec,0xc0,0x5f,0xae, - 0x8e,0xcd,0xce,0x13,0x96,0x02,0xd3,0x80,0x9b,0xb4,0x40,0x1c,0x2e,0xb9,0x5a,0x44, - 0x48,0x6d,0x98,0x08,0xb3,0x2d,0x02,0x6d,0x59,0x64,0xa6,0x87,0x09,0x6f,0x0d,0xdf, - 0x43,0xa5,0x92,0x18,0xc2,0x30,0xf4,0x1d,0x6a,0x8d,0xf9,0xaa,0x6c,0x0b,0x91,0x29, - 0xdc,0x8a,0xc4,0x94,0x97,0x10,0x47,0x96,0xd8,0x4b,0x2f,0x4c,0xc6,0xa6,0x32,0x65, - 0x76,0x11,0xae,0x65,0x82,0x7d,0xd8,0x5c,0x73,0xb9,0xb1,0x19,0xab,0xe1,0x2d,0xa0, - 0x37,0x3d,0x77,0x3b,0x35,0xb6,0x13,0x7a,0x57,0x57,0xbf,0x9c,0xee,0x38,0xbc,0xab, - 0x8f,0xc0,0x73,0x54,0x9e,0x3a,0xe7,0xed,0x06,0xf7,0x10,0xd1,0xa2,0x0e,0x09,0x06, - 0x0f,0x6e,0xb9,0xd1,0x52,0xe5,0xe8,0x87,0x85,0x47,0x96,0x27,0x9a,0xa5,0xa8,0xba, - 0x78,0xa2,0xe6,0x73,0x8f,0x99,0xd2,0x24,0x7c,0xdd,0x13,0xb7,0x94,0x0d,0x8e,0x83, - 0x87,0x40,0x12,0x14,0x8f,0xaa,0xb9,0x23,0x46,0xe0,0x78,0xdf,0xd0,0x92,0x55,0x34, - 0x69,0x36,0x29,0x52,0x1c,0x46,0xdd,0xe8,0x8e,0xd3,0x35,0xf1,0x3b,0xfc,0x15,0x73, - 0x9c,0xc4,0x01,0x8b,0xc8,0x96,0xc2,0x58,0x15,0xb1,0xca,0x0e,0x03,0xba,0x58,0x0b, - 0x73,0x49,0x9f,0xa7,0xe4,0xb6,0x22,0x14,0x6d,0xa0,0x93,0xc8,0x79,0x76,0x85,0x73, - 0xf6,0x5e,0xbb,0xfd,0xbd,0xde,0x09,0xa6,0xf8,0x60,0x13,0x9b,0x89,0xfb,0xdb,0x64, - 0xd0,0x30,0x34,0xb5,0x6e,0x54,0xde,0x1a,0xb4,0x1a,0x1f,0xcf,0x6e,0xaf,0x3a,0xf5, - 0x03,0x4e,0x0f,0x30,0x83,0x96,0xf2,0xec,0xc6,0x38,0x86,0x93,0x71,0xdd,0x3e,0x11, - 0xb3,0x5b,0xb9,0x0b,0x6a,0x09,0xb6,0xac,0xf6,0x41,0xb6,0xe6,0x06,0x3f,0x4b,0xd6, - 0x35,0x78,0x5d,0xa3,0xa1,0xe4,0x98,0x16,0x37,0x37,0x29,0x37,0xa7,0xda,0xef,0xba, - 0x67,0x70,0xc7,0xb0,0x0d,0xd7,0xb9,0xcf,0xb6,0xba,0xc3,0x97,0x64,0x3a,0x98,0xfe, - 0xce,0xf1,0x24,0xc0,0x2c,0x65,0xd9,0x2d,0xa1,0x09,0xcb,0xc0,0x48,0xc1,0x1f,0xd9, - 0x10,0x2a,0x7c,0x28,0xd7,0xef,0x9b,0xa1,0xc4,0xe6,0x7c,0x21,0x99,0xe2,0x0a,0x79, - 0xb2,0x86,0x19,0x87,0x22,0x37,0x58,0x37,0xd9,0xa3,0x97,0x73,0x59,0xa4,0xb9,0x54, - 0x07,0xc0,0x60,0x32,0xee,0x97,0x0f,0x00,0x6f,0xf6,0x60,0x59,0x28,0x6d,0xfa,0x2f, - 0xf8,0x1d,0x8b,0x79,0x94,0x2c,0x59,0x1a,0x3a,0xf8,0x80,0x51,0x38,0x7e,0xa5,0x71, - 0x01,0x95,0x1f,0x7c,0xf9,0xfa,0xa7,0xa7,0x43,0xe1,0x96,0xd3,0x75,0xb8,0x45,0xfa, - 0x4d,0x08,0x73,0xea,0xe0,0x61,0x6a,0x97,0xc0,0xcf,0xa3,0xd5,0xc3,0x5e,0x88,0x7d, - 0x05,0xa4,0x52,0x03,0xae,0x72,0xb4,0x83,0xa1,0x1b,0x83,0xb2,0x4f,0x50,0x8d,0x87, - 0xa4,0x03,0xf8,0xb9,0x67,0xce,0x15,0xcf,0xe9,0x89,0x3b,0x60,0xd5,0x7d,0xf1,0x70, - 0x34,0xa0,0x33,0xdd,0x64,0xf9,0x99,0xd9,0xfd,0x92,0x69,0x07,0xfa,0xf7,0x36,0x2c, - 0x45,0x81,0x6c,0x22,0x08,0xe2,0x68,0x07,0xd6,0x1e,0x66,0x09,0xb7,0x42,0x30,0xa7, - 0x21,0x23,0xe8,0x4f,0xd2,0x94,0x10,0xcc,0x8d,0x78,0xad,0xfc,0xd6,0x42,0xf8,0x8b, - 0xe2,0xc4,0x2f,0x60,0xfe,0x19,0xe4,0x5c,0x2e,0x13,0xad,0x79,0x0c,0x29,0xe2,0x45, - 0x8a,0xbc,0x84,0xa3,0x12,0xd3,0xd9,0x2d,0x57,0xc0,0xe7,0x73,0x1e,0x69,0x87,0x77, - 0xd6,0x36,0xbc,0x01,0x25,0x2c,0xd7,0x12,0x05,0xff,0x10,0x49,0xc6,0x63,0xd7,0x4e, - 0xeb,0x52,0x1f,0xd0,0x42,0x84,0x1d,0x4e,0xe5,0x39,0x92,0x4f,0xb0,0xd8,0xe4,0x7c, - 0x13,0xed,0x4c,0xbf,0xda,0x49,0xdb,0x1b,0x3e,0xc4,0x4a,0x7f,0x38,0x4d,0x77,0x52, - 0x4a,0xab,0xf6,0x19,0x08,0xeb,0x36,0x19,0xe3,0x41,0x9c,0x4c,0x32,0x67,0x5b,0x35, - 0xd3,0x85,0x32,0xcf,0x15,0xbb,0xe1,0xaa,0x4e,0x77,0xbb,0xff,0xe8,0xcf,0x9b,0x59, - 0xec,0x8b,0xe8,0x8d,0xf0,0x78,0x9d,0x23,0xbd,0x1f,0xe0,0x1b,0x8b,0x13,0xf1,0xe0, - 0x29,0x73,0xa4,0x8d,0x3a,0x7a,0xfe,0xe4,0xa0,0x8c,0x2a,0x07,0x85,0x26,0x7e,0x11, - 0x0f,0x85,0x18,0x6f,0x8f,0x0f,0x2c,0x38,0x93,0x40,0xde,0x86,0x40,0xf6,0x48,0x20, - 0xe7,0x94,0x67,0x54,0x36,0x0b,0xd2,0x2c,0x69,0x42,0x23,0x63,0x02,0x55,0x08,0x97, - 0xb8,0x61,0xe2,0xa2,0x01,0x26,0xae,0xc9,0x85,0xb1,0xca,0x63,0xf9,0x5a,0x28,0x62, - 0x60,0xde,0x26,0x70,0xbc,0xd5,0x4c,0x44,0xe6,0x46,0x57,0x42,0xb7,0xaf,0xf5,0x78, - 0xc9,0xc9,0x9c,0x98,0x4b,0x7a,0x68,0x1e,0xd0,0xbe,0xaf,0x78,0xea,0x50,0x0c,0x45, - 0x63,0xfb,0x6f,0x11,0xbe,0xcc,0xfb,0x51,0x81,0x0e,0x79,0x07,0x1d,0xbc,0xfe,0x3b, - 0xe4,0x62,0xc5,0x25,0xf4,0xe2,0xe3,0xe5,0x4e,0x37,0x08,0xd0,0x77,0xee,0xd8,0xf7, - 0xdf,0xbb,0x73,0xbf,0x37,0x78,0xdc,0x71,0xb7,0x7f,0x53,0x00,0x52,0x7e,0xc3,0x52, - 0xb7,0xfe,0x77,0x46,0xbe,0xc5,0x6c,0x0d,0x92,0xb8,0x84,0x82,0x8f,0x99,0x5a,0x1c, - 0x00,0x95,0xb2,0x3b,0x2e,0xcb,0x22,0x6d,0xa8,0x68,0xc3,0x1d,0x3c,0xe7,0x3c,0x2e, - 0x85,0x86,0xe2,0x62,0x1a,0x4c,0x65,0xe3,0x6b,0x0d,0xa6,0xde,0x88,0xc7,0x3f,0xc3, - 0xc9,0x42,0x08,0xc5,0x8d,0x4f,0xf4,0x9b,0x71,0xd7,0x5d,0x04,0x55,0x8e,0x31,0x8e, - 0xd1,0x1b,0x30,0xd5,0x18,0x6a,0x61,0x03,0xe3,0x37,0x46,0xea,0x99,0x79,0xc4,0xfb, - 0xba,0xc8,0x38,0x24,0xf6,0x34,0x35,0x03,0x0a,0x1f,0x71,0x1f,0xe5,0xf9,0xfd,0x90, - 0x02,0x63,0xd9,0xef,0x2c,0x8b,0x90,0x38,0x1e,0x27,0x5a,0x50,0xc8,0x10,0xd6,0x0e, - 0x5a,0xe3,0x28,0x94,0x51,0x69,0xbf,0x11,0x12,0xfb,0x96,0x97,0x39,0x11,0xdf,0x38, - 0x25,0xdb,0x2d,0x7a,0xce,0x59,0x84,0xe4,0xad,0xcb,0x25,0x42,0x13,0x58,0x25,0xca, - 0xc6,0xc2,0x5a,0x80,0xb2,0xd1,0x21,0xb9,0xaa,0x90,0x32,0x8f,0xcd,0x5a,0xd8,0xc8, - 0x38,0x51,0x0e,0x0e,0x09,0x9f,0x9d,0x33,0x8e,0x47,0xcd,0x64,0xbd,0x4b,0x0c,0xda, - 0x76,0x4c,0xce,0xf9,0x0a,0xf2,0x8e,0xa1,0xb1,0xd7,0x49,0xff,0xa4,0x06,0x91,0xc3, - 0xfd,0xfb,0xce,0x48,0xc6,0x57,0x65,0xa0,0xbc,0x55,0x35,0x87,0xfb,0x1b,0x16,0xbb, - 0x0b,0x98,0xd3,0x5f,0xbc,0x90,0xcb,0xc7,0x11,0x8e,0xf9,0xcc,0x27,0x92,0xde,0xae, - 0x37,0xe4,0xcc,0xb5,0x7a,0xb3,0x75,0xd8,0x1e,0x22,0x9e,0x1c,0x63,0x0a,0xd2,0xe3, - 0x75,0xdb,0x38,0x97,0x71,0xaa,0xbb,0xcc,0x1e,0x6d,0x08,0x25,0xfb,0x26,0x8b,0x54, - 0x9b,0xfe,0x0a,0x1f,0x10,0x76,0xf5,0x70,0x11,0xf3,0x03,0xa8,0xe3,0xb6,0xa5,0xb6, - 0xaf,0x90,0xa1,0x7d,0xa9,0xad,0x80,0x36,0xdd,0x2d,0xe0,0x8c,0x0f,0x59,0xb4,0x86, - 0xed,0x69,0x9a,0xa0,0xbd,0xc7,0x98,0xa0,0xbd,0xd2,0x04,0xb9,0xe9,0xb1,0xa1,0x45, - 0x07,0x2e,0x66,0x36,0x52,0x75,0xb1,0x8e,0x90,0x09,0x1e,0xb4,0x9d,0x2e,0xd6,0x7d, - 0xf9,0x87,0xd6,0xa1,0xed,0xff,0x60,0x00,0xf3,0xa0,0xae,0x7e,0x15,0x2b,0x1b,0x52, - 0x0b,0xb7,0xae,0x33,0x5d,0x73,0x03,0xa4,0x89,0x56,0x3c,0x9d,0x83,0x41,0x8a,0x62, - 0x96,0x22,0x92,0xf1,0xd8,0xd9,0xfa,0xdd,0x1c,0x25,0xce,0x75,0x65,0xf2,0xe1,0x97, - 0x6c,0x2e,0xa4,0x2d,0x49,0x63,0x29,0xd9,0xc5,0x12,0x7d,0x33,0xa1,0xab,0x1c,0x98, - 0x16,0x79,0x12,0xe1,0x72,0xd2,0x90,0xb8,0x20,0x2b,0x49,0x83,0xd0,0x32,0x4a,0x6e, - 0xbc,0x2f,0x1e,0x53,0xec,0x58,0x1e,0x7e,0x62,0x44,0x97,0xd3,0xf3,0xcb,0xd1,0xf5, - 0x91,0x07,0xfe,0x08,0x07,0x76,0xe6,0x59,0x82,0x3f,0xea,0x6e,0x51,0x93,0x7f,0xd5, - 0x41,0x2e,0x15,0xac,0xb5,0xc0,0xb5,0x8b,0xf9,0x3a,0xe7,0x4c,0x72,0xa5,0x81,0x25, - 0xd2,0x94,0x7d,0x11,0xc1,0x6f,0x80,0x87,0x37,0xa1,0x31,0x29,0xa7,0x9f,0xce,0x6d, - 0x64,0x8d,0xea,0x49,0x6e,0x16,0x71,0x0d,0x4c,0x4e,0xbb,0x13,0x90,0x5c,0xac,0x32, - 0x2e,0xad,0xd0,0x22,0x13,0x1a,0x74,0x57,0x1f,0x33,0xb0,0x19,0x8c,0x75,0x8a,0x86, - 0x6b,0x58,0xd3,0xae,0x71,0x17,0xb9,0xd3,0x11,0xaf,0x1e,0x2e,0x8e,0x31,0x61,0xcb, - 0x06,0xc9,0x20,0x5c,0xfa,0xcd,0xcc,0xc8,0x32,0x1c,0xe2,0x5c,0xf5,0x5f,0xf0,0xf0, - 0x16,0x31,0xb1,0x85,0x54,0x08,0x7e,0xfd,0xdb,0xb5,0x02,0x25,0x28,0xc3,0x93,0x44, - 0xdc,0x99,0x6b,0x55,0xe4,0xc4,0x58,0x97,0x0d,0x4a,0xad,0xab,0x65,0x48,0x49,0x96, - 0x55,0x12,0xa9,0x3b,0x33,0xe9,0x9d,0xf5,0x87,0xf9,0x48,0x4d,0xf7,0x18,0x49,0xcf, - 0x1a,0x9c,0xeb,0xce,0x14,0x4a,0x0e,0x25,0x0f,0x6d,0x95,0x4e,0x11,0x6d,0x03,0xfd, - 0x8c,0x6a,0x27,0xc6,0xeb,0x54,0x62,0xc9,0x4b,0x36,0xd4,0xb7,0x46,0x50,0x64,0x53, - 0x60,0x15,0xfa,0x94,0x79,0x89,0x54,0x68,0xf5,0x52,0xf6,0x60,0xd4,0xd1,0x1e,0xdc, - 0x03,0xea,0x06,0xee,0x9f,0x21,0x1b,0x3d,0xec,0x7b,0x50,0xee,0x8e,0xfa,0x75,0x88, - 0xf7,0x73,0x7d,0xe3,0xe6,0xda,0xaa,0x03,0xba,0x8f,0xbb,0xa1,0x7b,0x69,0x5c,0x68, - 0xde,0x3e,0xdd,0x8b,0x04,0x16,0xf2,0xc7,0x15,0xe4,0xdb,0x55,0xe1,0x15,0x5b,0xe6, - 0x07,0x94,0x22,0x6b,0x48,0xc0,0x4d,0xd0,0x2e,0x02,0xef,0x97,0x5e,0xb1,0xef,0x24, - 0xf5,0x32,0xf3,0x68,0xfd,0x78,0x1e,0x53,0x3c,0xf9,0x06,0x4c,0x1a,0x84,0x1a,0xfc, - 0xc5,0x04,0x5a,0xfc,0x32,0x4f,0xc8,0xe2,0xd8,0x24,0x43,0xac,0x23,0xea,0xe2,0x4c, - 0x05,0xa8,0x7f,0x02,0x6c,0x7d,0x8d,0xc9,0x51,0x48,0x87,0xc6,0xd7,0x2e,0x0f,0x4d, - 0xa1,0x0a,0x42,0x7c,0x99,0x5e,0x74,0xee,0xda,0x9b,0x5a,0xbe,0x90,0xcf,0x8a,0x04, - 0x79,0x4e,0xa0,0xf5,0x68,0xfd,0xa9,0x33,0xd1,0x5c,0x67,0xde,0xd7,0xa9,0x3d,0xa7, - 0x53,0x4f,0x31,0xfc,0x86,0xe1,0x9b,0xf3,0x51,0xee,0x16,0xf9,0xc8,0x49,0xb9,0xf0, - 0xd3,0x09,0xc6,0xf2,0xa3,0xa9,0x1b,0x2d,0xb7,0x16,0x34,0x37,0x3e,0x68,0xc8,0xac, - 0xf4,0xa2,0x9b,0x65,0xe4,0xd5,0x0d,0x31,0x15,0x74,0xe2,0xd0,0xc7,0xf8,0xfe,0x0f, - 0x79,0xe7,0xf9,0xdd,0x83,0x21,0x01,0x39,0xc6,0xed,0x97,0x26,0x2c,0xcf,0xb7,0xe9, - 0xb7,0x66,0x33,0x65,0xb7,0x48,0xdf,0x2a,0x66,0x13,0xc2,0x21,0xda,0x93,0x2f,0x55, - 0xbb,0x6d,0xa8,0x45,0xec,0x8d,0x01,0x04,0x89,0xc1,0x94,0x0e,0x71,0x5b,0x1f,0xca, - 0x0d,0x06,0x53,0xa3,0xc6,0xed,0x7d,0x8c,0xf3,0xa1,0x50,0x6a,0xe6,0xa3,0xbd,0x57, - 0x94,0xe2,0x44,0x78,0xc9,0xd6,0x9e,0x41,0xd0,0xd6,0x1d,0x6c,0x3d,0xd7,0x14,0xdd, - 0x6f,0xf3,0xd2,0xce,0x37,0x32,0x2e,0x8f,0x4c,0xb8,0xfc,0x30,0xcf,0x36,0x9c,0xec, - 0xbd,0x1b,0x97,0x2b,0x1d,0xa7,0x05,0xd7,0x42,0xe8,0x45,0xe7,0x2c,0xcf,0xcc,0x8f, - 0x08,0x1f,0x5a,0x1e,0x36,0x2a,0xa2,0x0e,0x03,0x93,0xd2,0xf2,0x57,0xd1,0xfd,0x57, - 0xa9,0x3e,0x28,0x3d,0x2e,0x73,0x1f,0xbb,0xdd,0x54,0x79,0x53,0x0f,0x15,0x89,0xf4, - 0x77,0x00,0x9d,0xc7,0x06,0x9b,0x39,0x50,0x2d,0x60,0x2e,0xd2,0x54,0xac,0xba,0xb8, - 0x75,0x0d,0x8e,0x4c,0xf6,0xf7,0xf7,0x26,0x4d,0x8e,0x78,0x40,0x7b,0x1c,0x53,0x96, - 0x2c,0xaa,0xf1,0x64,0x34,0x6e,0xf2,0xc4,0x87,0xaf,0x7e,0x85,0x07,0x19,0x61,0xfa, - 0x9d,0x8c,0xf0,0x35,0x3b,0x7c,0xb9,0xe3,0xc3,0xde,0xde,0x87,0xf1,0xf8,0xc3,0xfe, - 0x3e,0xc2,0x22,0xcb,0x62,0xb1,0xf4,0x9f,0x7d,0xca,0x36,0xf6,0x6d,0xda,0x4f,0x48, - 0xff,0x94,0xd2,0x7d,0x7d,0x77,0x37,0x12,0xc2,0x49,0xca,0x19,0xb6,0x71,0x85,0x8b, - 0x92,0x03,0xd3,0xa0,0x20,0xb4,0x37,0x4f,0xb1,0xe0,0x74,0xd9,0x53,0xbb,0x37,0xd2, - 0x9c,0xa5,0xc8,0x8d,0x79,0xca,0x6e,0x3a,0x32,0x14,0xeb,0x03,0x07,0x6f,0x47,0x4d, - 0x8e,0xfa,0xb9,0x1a,0x79,0xa5,0x26,0x1b,0x5d,0x4f,0x9c,0x43,0x90,0x42,0xc0,0x77, - 0x86,0x6d,0xce,0xc3,0xb9,0x98,0xcf,0x3f,0xee,0xda,0xe7,0x8d,0xf6,0x0c,0x9b,0xb3, - 0xaa,0xb5,0x3d,0x13,0x85,0xb7,0xb4,0x31,0xcf,0x39,0x15,0x5a,0x81,0xa0,0xdb,0x2f, - 0xcf,0x0d,0x9f,0x66,0x09,0xe1,0x28,0xa6,0x17,0xd4,0x15,0x77,0x26,0x2c,0x5d,0x43, - 0x91,0xe9,0x24,0x05,0xfa,0xd3,0x76,0x90,0xb3,0x44,0x62,0x3f,0x67,0xf2,0x58,0x14, - 0xf1,0x5c,0xdb,0xe0,0x84,0x9c,0xc4,0x99,0xc0,0xd9,0x63,0xc8,0x39,0x97,0x38,0x55, - 0x56,0x4e,0x2f,0x85,0x66,0x44,0xb4,0xe4,0x02,0x29,0x50,0x7e,0x1e,0x94,0x14,0xf1, - 0x5d,0x61,0xc3,0x1f,0x45,0x22,0x39,0x30,0x67,0x37,0xda,0x18,0x4f,0xb6,0xaf,0xc6, - 0xfa,0xa0,0x0d,0x53,0x7e,0xc7,0x25,0x75,0x51,0xc5,0x2d,0x5b,0xf3,0x67,0x29,0xd3, - 0x3e,0x4d,0xce,0xb2,0xb5,0x03,0x95,0xd6,0x99,0x45,0x76,0xf3,0x88,0xa9,0x45,0xf6, - 0xd0,0xd4,0x2f,0x95,0x65,0x6a,0xfa,0x34,0x68,0x21,0x55,0x99,0x0b,0xc2,0xf3,0xb1, - 0x19,0x19,0x72,0xe5,0x6f,0x62,0x19,0x4d,0x86,0xa0,0xb3,0xc4,0x2e,0xaa,0x9e,0x09, - 0x6a,0x80,0x4d,0xe9,0xba,0xf8,0xbc,0x5c,0x95,0x87,0xda,0x96,0x9d,0xf9,0x6f,0x4e, - 0x26,0xfd,0x2f,0xc9,0x0e,0x55,0x12,0x46,0xcd,0xfa,0xc6,0x5c,0x8a,0xbb,0x56,0x93, - 0x64,0x4a,0xd0,0x80,0x4b,0xb9,0x51,0x66,0x44,0xbd,0xe8,0x65,0xf0,0x60,0x5a,0xde, - 0x71,0x00,0xcb,0xf3,0x74,0xed,0x2e,0xa9,0xda,0x14,0xe4,0xb3,0x39,0x6c,0x3c,0x8b, - 0xd6,0x6f,0x60,0x86,0xb2,0x77,0x7f,0x65,0xf6,0xea,0x33,0xe9,0xca,0xc9,0x37,0x58, - 0x56,0x37,0x3f,0x14,0x31,0x52,0x1e,0x9d,0xdf,0xa1,0x64,0x37,0x92,0x10,0x0c,0x56, - 0x12,0x8f,0x01,0xc1,0x90,0xbb,0x9b,0xd9,0x0c,0x9e,0xe6,0x0e,0x5f,0x12,0x59,0xe2, - 0xc7,0x1d,0x8f,0x49,0xcb,0xdc,0x05,0x7a,0xab,0x5f,0xdb,0x22,0xae,0x92,0x6a,0xe8, - 0x9d,0x7d,0xfd,0x73,0xe7,0xc7,0x47,0x4f,0xde,0xe0,0x70,0x1c,0xe4,0x0f,0xdf,0x20, - 0x1c,0x0c,0x86,0xfe,0x72,0x6c,0x7f,0xe0,0xd2,0xe4,0x23,0x2c,0xc5,0xff,0x81,0xa2, - 0x1c,0x7b,0x26,0x41,0xef,0xb6,0xf3,0xca,0xb3,0x55,0xb5,0x6e,0xb9,0xec,0x5b,0xb7, - 0x68,0x6d,0xcd,0xc7,0xb1,0xe1,0x2a,0x97,0x9c,0x99,0xaa,0x43,0x67,0xd1,0x9a,0xa6, - 0xc5,0x53,0xa0,0xcc,0x20,0x67,0x16,0xf6,0xef,0x9b,0x8f,0xe9,0xa4,0xf1,0xe4,0x6d, - 0xe3,0xc9,0xbb,0xc6,0x93,0xf7,0x8d,0x27,0xc3,0x41,0xf3,0xd1,0xb0,0xf9,0x68,0xd4, - 0xb0,0x50,0x3f,0x3a,0x9c,0xb4,0x47,0xc9,0x34,0x6f,0xdf,0x61,0x24,0x9f,0xbd,0xc3, - 0x76,0xb2,0x1e,0x7f,0x43,0xf3,0x82,0x17,0x34,0xdb,0xc1,0x62,0x03,0x05,0x5c,0x55, - 0x6c,0xdf,0xdf,0x93,0x38,0x1c,0x39,0xb5,0x8f,0x09,0x01,0x3a,0xab,0xd6,0x45,0x86, - 0x78,0xa0,0x35,0x97,0x65,0x7e,0xeb,0xbe,0xbb,0xe2,0x56,0x0b,0x97,0x22,0xe6,0xcf, - 0xf2,0x54,0x9a,0xad,0xae,0xc8,0x60,0x7a,0x4c,0x9f,0x6d,0xbd,0x9c,0xdf,0x60,0xca, - 0xf4,0xe8,0x0b,0xf9,0x1e,0xdb,0xa7,0xec,0xbb,0x31,0x7e,0x6a,0xf8,0x57,0x70,0x4f, - 0xda,0xc6,0x19,0x14,0x37,0x99,0xd7,0x08,0x63,0x41,0xff,0xf5,0x91,0xea,0x7b,0x9d, - 0x2c,0xb9,0xa9,0xd6,0xe9,0x29,0x1e,0x89,0x2c,0x56,0xdd,0x74,0xc4,0xb3,0x57,0xdb, - 0xd1,0xf7,0x2e,0xf2,0xf1,0x65,0xe2,0x41,0x79,0x95,0xff,0x54,0xf8,0xb8,0xc8,0xa8, - 0x86,0x89,0xb4,0xf7,0x47,0x52,0x2e,0xd4,0xec,0xa5,0x25,0xfd,0x4f,0x49,0x37,0x58, - 0xfc,0x5c,0x69,0x93,0x6f,0x5f,0x91,0xef,0x52,0x56,0x4a,0x33,0xe9,0xab,0x87,0xfd, - 0xa5,0x02,0x60,0xe1,0x64,0xca,0xad,0x5d,0xce,0x73,0x48,0x14,0x20,0x19,0x2e,0x66, - 0xe2,0x31,0xfa,0xe2,0x55,0x69,0x19,0x39,0x7e,0x8a,0xba,0x3a,0x52,0x8d,0xc5,0x77, - 0x79,0x01,0x21,0x3d,0x5f,0x81,0x6c,0xb2,0xb2,0x29,0xe1,0x15,0xfa,0x00,0x90,0xe8, - 0xb0,0x52,0x30,0x88,0xb9,0x76,0x89,0x12,0x1b,0x79,0x28,0x5f,0xf2,0x30,0x13,0x08, - 0x63,0x61,0x27,0x97,0xc8,0xa7,0x63,0x5a,0xb0,0xac,0x3d,0x28,0xab,0xe2,0xb1,0xa3, - 0x44,0x1a,0x26,0x3b,0x8b,0xd9,0x49,0x40,0x6c,0x5e,0x99,0x6f,0x6f,0xbd,0x07,0xad, - 0xc5,0x1d,0x6c,0xde,0x8f,0x51,0x87,0xba,0x05,0x8b,0xe3,0xaa,0xf6,0xe0,0xef,0xc8, - 0x17,0xe4,0x2d,0xc2,0xae,0xea,0x16,0x4b,0xc8,0x3b,0x1a,0xd0,0xa4,0xad,0x74,0x67, - 0x5a,0x1d,0x8b,0x06,0x1d,0xfb,0xc3,0x51,0xa5,0xc5,0x8e,0x92,0xc7,0xb0,0x48,0xff, - 0x90,0x96,0x6d,0xf6,0xad,0x41,0x9b,0xaa,0x85,0x75,0xa6,0x30,0xca,0x3a,0xb1,0xb3, - 0xe9,0xc9,0xd1,0x29,0xf4,0xa8,0x4e,0x20,0xf3,0x45,0xa1,0x74,0x4d,0xb4,0x4c,0x34, - 0x9e,0xb6,0x19,0x52,0x39,0x3d,0x71,0xf5,0x43,0x48,0x7d,0xf2,0x3d,0xd1,0xeb,0x4a, - 0xf3,0x6c,0x11,0x2e,0x4d,0x55,0x2f,0xf3,0xd7,0x37,0x69,0x50,0xdf,0x20,0x55,0x35, - 0xcc,0xc4,0x5d,0xb5,0xc5,0x88,0x19,0xc7,0xbd,0xc0,0x09,0x0a,0x37,0xc9,0x8f,0x29, - 0x1f,0x4e,0x2a,0xd2,0x8d,0x84,0x67,0x42,0x20,0xe5,0x31,0xdc,0xb0,0x24,0x73,0xd4, - 0x5e,0xfd,0x7d,0x38,0x9a,0xdc,0x81,0xe4,0x11,0x4f,0xcc,0x0d,0x02,0x61,0xdb,0xb3, - 0x08,0xa5,0x60,0x20,0x94,0x77,0x66,0x91,0x47,0x53,0x3c,0x1a,0x8c,0x37,0xd9,0xfd, - 0xf9,0xd3,0x19,0x78,0xba,0x1d,0xc1,0x9f,0xee,0x34,0x97,0x26,0x47,0x35,0x97,0x26, - 0x59,0xca,0xb3,0xb8,0x8f,0x86,0xa1,0x48,0x39,0xfc,0x7e,0x7e,0xf4,0x02,0x84,0xcf, - 0xf9,0xf2,0xa9,0xc4,0xbf,0x1b,0xbe,0x1f,0x6d,0x10,0x7f,0x4a,0x19,0x33,0x07,0x3f, - 0x8a,0xb2,0xfb,0x6e,0x0f,0xdf,0x78,0x5c,0x44,0xdc,0xa5,0xd4,0x08,0x17,0xbf,0x5c, - 0x5e,0x41,0x12,0xa7,0xae,0xf7,0xb3,0xb6,0x41,0x33,0xd8,0xe5,0xb6,0xed,0x60,0x03, - 0x04,0x06,0xef,0x27,0x2e,0x8e,0xbb,0xcb,0x55,0x9f,0x8a,0xd8,0x1b,0xdb,0xac,0xe9, - 0xd1,0x03,0x5b,0x3a,0x2d,0xf4,0xba,0x1f,0xad,0x23,0x07,0xea,0x14,0x3c,0x7a,0xa5, - 0x3a,0xa0,0x18,0xcc,0xc4,0xed,0x0a,0x4c,0x79,0x66,0x92,0x15,0xa2,0x50,0xbe,0xf9, - 0xe9,0x9b,0x35,0xe4,0x9a,0x9c,0xba,0xb9,0xb9,0xe8,0x70,0x38,0x08,0xa4,0xab,0x7d, - 0x5a,0xd3,0xaa,0xda,0xdc,0x13,0xdc,0x27,0xca,0x24,0xe5,0xdf,0x79,0xda,0xe2,0xf5, - 0xd3,0xea,0xd4,0xa1,0xe1,0x95,0xa0,0x95,0x1c,0x42,0x0f,0xf7,0x6a,0x6e,0xec,0xe8, - 0x65,0xf5,0x9d,0x36,0xbb,0x8f,0x1a,0x33,0x6a,0x6b,0xc3,0x4a,0xfe,0xbd,0xb6,0x36, - 0x84,0xee,0x71,0x5b,0xdb,0x7e,0x30,0xdd,0x87,0xde,0x8c,0xa5,0x64,0xad,0x5a,0x97, - 0x46,0x74,0x98,0xb4,0xb5,0xbd,0x0d,0xa6,0x6f,0xdb,0xda,0xf0,0x84,0xbe,0x6b,0x6b, - 0x7b,0x1f,0x34,0x03,0xb3,0x92,0x2b,0x03,0x64,0xcb,0xa0,0xad,0x75,0xc9,0xb2,0x82, - 0x21,0x2b,0xcf,0xe8,0x13,0x34,0x5d,0x82,0xaa,0xa6,0x0b,0x54,0xcf,0x89,0xd8,0x57, - 0xc1,0x9b,0xe8,0x93,0xab,0x96,0x48,0xba,0x52,0x00,0x13,0xbd,0x2e,0x51,0x75,0xfa, - 0xf3,0x84,0xa7,0x71,0x55,0x0c,0xed,0x1e,0x6f,0x93,0xba,0x1f,0xda,0x10,0xfc,0xc0, - 0xba,0x3f,0x06,0x9c,0x96,0xa0,0x1a,0xf1,0x71,0x0b,0x5f,0x26,0xc8,0x97,0x09,0xa8, - 0xf5,0x72,0x26,0x52,0xd5,0xaa,0x0c,0x23,0xd4,0x86,0x91,0xef,0xd5,0x3d,0x58,0x24, - 0xbd,0xf7,0x61,0x9a,0xdf,0xbb,0x63,0x76,0xab,0xee,0xdb,0xa3,0x09,0xab,0x24,0x8b, - 0x71,0x70,0x0f,0xef,0x3b,0x23,0x29,0x0e,0x3a,0x78,0x94,0x8e,0x41,0xd2,0x87,0x98, - 0xc3,0xc1,0x60,0x50,0x06,0x99,0xf4,0xbf,0xa6,0x2b,0xd9,0x96,0x5e,0x48,0x39,0xcf, - 0x9f,0x4e,0x82,0x32,0xc3,0xbb,0x53,0xd1,0xee,0xd0,0x56,0x5c,0xa3,0x9f,0x8d,0xee, - 0x2d,0xe6,0x80,0x04,0x56,0xa1,0x26,0xcf,0x39,0xf3,0x36,0xec,0xb3,0x90,0x2b,0x26, - 0x63,0x9b,0xcd,0xd2,0x92,0xcd,0xe7,0x49,0x14,0x02,0x46,0x31,0x70,0x08,0xd6,0xb9, - 0xe8,0x53,0x22,0xbb,0xa7,0x74,0x92,0xa6,0xbe,0x7e,0x47,0x91,0xa5,0xf0,0xe5,0x3a, - 0x6a,0x27,0x7c,0x9e,0xb5,0x23,0x82,0xba,0xa2,0xa6,0x77,0x9e,0xaa,0x5b,0x4e,0xbc, - 0xe4,0xac,0xdd,0xe3,0x8c,0xdb,0x93,0xdf,0x54,0x9b,0xc9,0x28,0x9b,0x0f,0x3d,0x94, - 0x47,0xb7,0xb8,0xc4,0x0e,0x08,0x91,0xe5,0x06,0x43,0xd3,0xfb,0x0e,0xdd,0xf8,0x41, - 0x17,0x78,0x3a,0x80,0x43,0x63,0x6d,0x3a,0xd4,0x7e,0x7c,0x4e,0x85,0x88,0x4b,0xb2, - 0x16,0xb2,0x63,0xb8,0x34,0x37,0xc3,0xc2,0xed,0xc4,0x0d,0x27,0xef,0xb6,0x11,0xf7, - 0x06,0x78,0xaa,0x38,0xec,0xbd,0xca,0x28,0x7f,0x89,0xbd,0x89,0xd0,0x6e,0xd9,0xf8, - 0xcd,0x8c,0x2b,0xd1,0xb2,0x99,0x95,0xa7,0x3d,0x21,0xe0,0xb8,0x7b,0x6f,0xfc,0x95, - 0xab,0xb6,0xd4,0xeb,0x57,0x91,0x43,0x8a,0x20,0xab,0x6d,0xd9,0x09,0xcd,0xe5,0x95, - 0x71,0x23,0x7d,0x3a,0xb7,0xba,0xaa,0x30,0x0f,0x4f,0x56,0x9f,0xd0,0xc8,0xda,0x71, - 0x96,0x64,0xd8,0x27,0x51,0x6b,0xc8,0xcc,0xdb,0xc3,0x33,0x51,0x98,0xb7,0x17,0xb4, - 0x10,0xb8,0xf0,0xca,0xe5,0x61,0x73,0x26,0xb5,0xf2,0x57,0x3c,0xa4,0xef,0xa2,0xd0, - 0xe6,0x37,0xbd,0xc3,0x15,0x76,0xb8,0x54,0x19,0xbd,0x6b,0xd5,0x2c,0xcc,0xf7,0x3b, - 0xba,0x17,0xb4,0xd1,0xce,0xe2,0x43,0x29,0xd5,0x45,0xe6,0xf4,0xb7,0x29,0x31,0x27, - 0xa3,0xc9,0x38,0x04,0xf7,0xfe,0x0d,0xe0,0xf7,0x0e,0xea,0x85,0xb4,0x39,0xe5,0x7a, - 0x02,0x71,0x4e,0xbf,0x9e,0x4e,0xe3,0x3b,0x47,0x62,0xa7,0xf8,0x8b,0x98,0x5c,0x23, - 0xbc,0xc8,0x54,0x24,0x72,0x1e,0x3f,0x99,0xbb,0xa1,0x9f,0xa1,0xb9,0x85,0xc7,0x54, - 0x82,0x1f,0xe5,0x79,0x9a,0x70,0x05,0x5a,0x80,0xad,0x4a,0x54,0xb6,0x80,0x30,0x13, - 0xbe,0x1a,0x90,0x56,0x09,0xc1,0xf3,0x60,0xab,0x6c,0x3a,0xc0,0xd8,0x68,0x7f,0xb2, - 0x81,0x5b,0x22,0xaf,0x82,0xb7,0xd6,0x7b,0x53,0x73,0xc8,0x42,0xdb,0xed,0xd1,0xd9, - 0x29,0xe4,0x4d,0xb2,0x24,0xa7,0xc7,0x7e,0x69,0xed,0x27,0x62,0x6e,0xf2,0xcf,0xd8, - 0xd1,0x7d,0x6b,0xeb,0xa9,0xb4,0x4c,0x0c,0x21,0x57,0xf4,0xd9,0xe9,0x2e,0xf6,0x54, - 0xa2,0x78,0x9d,0xa4,0x1d,0x97,0x5d,0x59,0x7c,0x6a,0xfc,0x97,0x35,0x20,0xc0,0xc8, - 0x75,0xed,0x9d,0xe8,0x05,0xf2,0x3a,0x04,0xbb,0x06,0x97,0x70,0x08,0x73,0x6e,0xb0, - 0xc1,0xda,0x14,0x23,0xae,0x94,0x88,0x8c,0x7d,0x8c,0x1c,0xe3,0x12,0x39,0xe2,0xd2, - 0xc3,0x5a,0xd9,0xa8,0xe0,0xa0,0x9a,0x92,0x6e,0x35,0xb8,0xf4,0x92,0x8a,0x4d,0x1c, - 0x91,0x3b,0xbf,0xad,0xb2,0x63,0xbb,0x45,0x74,0xc5,0x7d,0x3e,0x9a,0x80,0x4f,0xf4, - 0x0d,0xcc,0x02,0xa5,0xec,0x9b,0xcc,0xbb,0x2e,0x64,0x66,0xaf,0x98,0x44,0x95,0xc2, - 0x32,0xac,0x4b,0x61,0x26,0xc5,0x2d,0x97,0x2e,0xd5,0x45,0xe1,0x8f,0xad,0xea,0xe3, - 0x89,0xac,0x5e,0x1a,0x69,0x32,0xa4,0x75,0xab,0xbf,0x50,0xf5,0xae,0x5e,0x3f,0xbd, - 0xc4,0xf8,0xbf,0xbd,0xc2,0xd8,0xa7,0xff,0x0e,0x20,0x69,0xd4,0x14,0x87,0x70,0x4c, - 0x57,0xbc,0x87,0x2f,0x53,0x1a,0xfc,0xdf,0x5d,0x19,0xfc,0xb4,0x2a,0xde,0xff,0xb4, - 0x22,0xde,0x16,0x09,0xb6,0x16,0xe8,0x92,0xbd,0xa6,0xd5,0x5e,0xab,0x7a,0x9d,0xae, - 0x51,0x2b,0x57,0x27,0xb4,0xf3,0xc4,0x1a,0xdb,0x8e,0x25,0xb6,0xdd,0x8e,0xc5,0xa5, - 0xd5,0x2e,0x3c,0x4d,0x6d,0x9e,0xce,0xb5,0x47,0x2e,0xd2,0x33,0x7a,0x49,0xd0,0x54, - 0x37,0x16,0x79,0x2a,0x58,0x4c,0xaf,0xf3,0x98,0xd3,0x4b,0x48,0xd2,0x07,0x1c,0x62, - 0xe6,0xb2,0x11,0x1c,0x73,0x87,0x18,0x70,0x82,0x24,0xfb,0x07,0x25,0xa7,0xa9,0xaa, - 0xb2,0x74,0x67,0x1c,0x07,0x5a,0xd3,0x25,0x54,0x6e,0xe6,0x2a,0xeb,0x9d,0xf7,0x7f, - 0xc9,0x65,0x22,0x62,0xe4,0xf4,0x82,0xca,0x6c,0x76,0x4d,0xa3,0x02,0x9a,0xd3,0xf7, - 0xb4,0x45,0xe1,0xcf,0xf2,0xef,0x89,0x8f,0x76,0xb6,0x16,0x27,0xbf,0x95,0x64,0xc7, - 0x51,0x67,0x0c,0x3c,0xd9,0x67,0x8c,0x5e,0xdc,0x51,0x68,0x80,0xa3,0x05,0xb9,0x8c, - 0x08,0x72,0xae,0x4f,0xe9,0x37,0xa2,0x74,0xc5,0xea,0xf9,0x74,0xbb,0x95,0x1f,0x4b, - 0xf8,0x51,0x1c,0x83,0x64,0x2b,0xa0,0x3f,0x84,0xeb,0xe9,0x3e,0x4a,0xa9,0x80,0x3c, - 0x8b,0x6d,0xed,0x55,0x91,0xa6,0xa4,0xed,0xd4,0xc7,0x71,0x9d,0x06,0xbd,0x10,0xcb, - 0x71,0xaa,0xc7,0x92,0xed,0xa2,0xed,0xb8,0xce,0x70,0x7c,0x4c,0x55,0xee,0xee,0x21, - 0xbd,0x8a,0xe8,0xaa,0x16,0x5c,0x39,0xc3,0x0b,0x10,0x7b,0xf7,0x54,0xdd,0x70,0x1e, - 0xbf,0x6c,0x28,0xb5,0x6f,0x00,0x4d,0xe6,0x93,0x65,0xb1,0xf5,0xd1,0x14,0xf4,0x2e, - 0xaf,0xbe,0x1d,0x9d,0xd9,0xfb,0x16,0x9b,0x67,0xde,0x79,0xfe,0x0e,0x4a,0x3a,0x9e, - 0x17,0xc9,0xb6,0x5e,0xa9,0xb9,0xe4,0xbe,0xae,0xa4,0xd3,0xea,0x08,0x12,0x3d,0xfa, - 0xee,0x49,0x57,0x94,0x47,0x69,0x0a,0xd7,0x7f,0x6f,0xeb,0xe1,0xa2,0x01,0x03,0xa5, - 0x60,0xbf,0x5b,0xfe,0x75,0x72,0xef,0xea,0x6a,0x54,0xb9,0x71,0x74,0x26,0x54,0x17, - 0x04,0xbf,0xb2,0x98,0xe4,0x83,0xdd,0xce,0x31,0xbc,0x63,0x89,0x1f,0x77,0xef,0x56, - 0x71,0xd2,0xb8,0x1e,0x7a,0xa6,0xac,0xce,0x9d,0x2a,0x6c,0x52,0xba,0x10,0x45,0x97, - 0xc0,0xbe,0xa9,0x4e,0x0d,0xaa,0x47,0x3e,0x7f,0xb4,0x37,0x69,0xf5,0x85,0xc4,0x5c, - 0xf3,0x8c,0x82,0x95,0xff,0x68,0xef,0xdd,0xdb,0xdb,0xb6,0x91,0xbe,0xe1,0xff,0xfd, - 0x29,0x18,0x6e,0x1f,0x87,0xac,0x28,0x59,0xb6,0x93,0xb4,0x95,0xc2,0xf8,0x72,0xdd, - 0xb4,0xcd,0xdd,0x9c,0xee,0xd8,0xdd,0xee,0x3e,0x8e,0x37,0x8f,0x64,0xc9,0xb6,0x6a, - 0x9d,0x56,0x94,0x0f,0x59,0xc9,0xef,0x67,0x7f,0x7f,0x33,0x18,0x0e,0x01,0x82,0x92, - 0xdd,0xe6,0x3e,0xbd,0x87,0xf6,0x8a,0x45,0x82,0x83,0xc1,0x60,0x00,0x0c,0x80,0xc1, - 0x60,0x46,0x46,0x09,0x06,0x6a,0x79,0x40,0x20,0x7c,0x5e,0x1d,0x38,0x92,0x40,0xbc, - 0x90,0xc1,0xbb,0x56,0xdc,0xf8,0x23,0xfb,0xff,0x75,0x17,0x3e,0x70,0x96,0xea,0xde, - 0xf8,0x58,0x8f,0x85,0x4f,0x8c,0x45,0x57,0x70,0xf8,0xf6,0xcd,0xfb,0xb5,0x66,0xd1, - 0x47,0xef,0xc5,0xd1,0xca,0x43,0xd7,0x2a,0xe3,0xf9,0xb4,0x7a,0x69,0xe2,0xda,0xe4, - 0x4e,0x27,0x93,0x21,0xc1,0x62,0xf5,0x79,0x5e,0xc5,0x59,0x71,0xc9,0x04,0xd9,0x43, - 0x0e,0xc0,0x64,0xb6,0x06,0x04,0xc4,0xe1,0x7a,0xcb,0xcc,0x75,0xc7,0xe4,0xff,0x02, - 0x2a,0x08,0xa4,0x77,0x87,0xaf,0xfe,0xf6,0x90,0xd5,0xf1,0x5c,0xb2,0x3c,0xa4,0x3e, - 0x6f,0x0e,0x8f,0xbe,0x79,0xf3,0xc3,0x51,0xf2,0x66,0xb7,0xb1,0xd3,0x68,0x26,0x6f, - 0x10,0xab,0x63,0xbb,0xb1,0xc2,0xae,0xab,0x6a,0x33,0x4c,0xbe,0x12,0x95,0xd6,0x5f, - 0x8f,0x0e,0x68,0x77,0x81,0xed,0xc2,0x43,0xfa,0xb0,0xd2,0xd9,0x30,0x79,0x72,0x33, - 0x1f,0xed,0xbc,0xdb,0x4f,0x94,0x8e,0xfb,0x04,0x3d,0xf5,0x87,0x00,0x6b,0xf5,0xf1, - 0x5c,0xa7,0x23,0x3e,0xc8,0xcf,0xcd,0x63,0x7b,0x5f,0x24,0xbb,0xb3,0xf1,0x68,0xba, - 0x5e,0x62,0xbb,0x8d,0xc6,0xe4,0xb0,0x85,0xe8,0x15,0x9c,0xe0,0xdf,0xbb,0x5c,0x96, - 0x12,0x1a,0x9a,0xa1,0xba,0xe1,0xee,0xdb,0x88,0xb2,0xff,0x8e,0x07,0x6e,0x44,0x8d, - 0xab,0x0c,0xdd,0x88,0xae,0x5a,0x8b,0xb2,0x91,0x31,0xad,0x2f,0x19,0x7e,0xc6,0x3c, - 0x95,0xfb,0x3e,0x9a,0x59,0x2f,0xb7,0x1b,0x61,0xcd,0x57,0x74,0x6e,0xa0,0x08,0xe6, - 0x6d,0x34,0xcf,0xa8,0xd6,0xed,0x69,0x0c,0x79,0x8c,0x04,0xb5,0x66,0xb0,0x2e,0x05, - 0x35,0x82,0x1f,0x07,0x80,0xc5,0x3e,0x8c,0x53,0x5f,0xbd,0xe7,0x35,0xad,0xb1,0xa3, - 0x14,0x9f,0x19,0x93,0x19,0x67,0x12,0x37,0x42,0xe2,0xb0,0xed,0x7f,0x86,0xbf,0x1e, - 0xd4,0xeb,0x3f,0xcf,0x61,0x0f,0x90,0xff,0xf7,0x7b,0xec,0x01,0x11,0xff,0x93,0x5c, - 0xf6,0x80,0x9c,0xff,0x76,0x9f,0x3d,0x42,0xc4,0xff,0xfb,0x9d,0xf6,0xfc,0xbf,0xc1, - 0x2d,0x8f,0x5a,0xba,0x6c,0xd7,0xb7,0x77,0x83,0x1b,0x36,0xf1,0x17,0x57,0x39,0x85, - 0xf3,0x1c,0xf6,0x20,0xb6,0xde,0x45,0x8f,0x65,0xe4,0x0d,0x9d,0x62,0x7f,0x98,0xbb, - 0x14,0xc3,0xbe,0x81,0xf0,0xf7,0xf2,0x46,0x12,0x07,0x3e,0x24,0xcf,0xa4,0x1e,0x6d, - 0x7e,0x78,0xf8,0x9d,0x0d,0x5f,0xef,0xdd,0xdc,0x79,0x52,0x0c,0xa9,0xdc,0xaa,0xc1, - 0x3f,0xfa,0x75,0x47,0x0c,0xc1,0x11,0x58,0x58,0xa1,0xce,0x15,0x55,0xee,0xd5,0xa8, - 0x7a,0x2d,0x2f,0x5e,0x4c,0x5f,0xbc,0xe5,0xf5,0xc7,0x10,0x98,0xb2,0x39,0x5f,0xba, - 0x84,0x31,0x79,0x5c,0x9d,0x85,0xdb,0xa2,0xf0,0x3c,0x11,0x89,0x5d,0x6c,0xfc,0xf0, - 0x13,0x60,0x57,0x61,0x8a,0x53,0x1b,0x14,0x47,0x96,0x01,0xd5,0x66,0x6c,0x7f,0xfc, - 0x52,0x6f,0x6f,0xf2,0x81,0x99,0xce,0xd7,0x70,0xf9,0x89,0xdb,0xf5,0x0f,0xdf,0x12, - 0x16,0x7f,0x91,0xe8,0x2b,0x2c,0x97,0xed,0x02,0x5e,0x73,0x72,0x14,0x8b,0xef,0x49, - 0x3c,0x5b,0xd8,0xef,0x99,0xc4,0x59,0xbf,0xf2,0xc0,0x59,0x5c,0x6c,0x76,0x58,0x1a, - 0x70,0x76,0xce,0x5c,0xc7,0x0c,0x6c,0x51,0x3b,0xe9,0xcc,0x25,0x26,0x8c,0xeb,0x47, - 0xdf,0x0b,0x8c,0x85,0xb6,0xf6,0x62,0x62,0x61,0x25,0xb8,0xf2,0x4e,0x04,0x87,0xd1, - 0x63,0x3e,0xc8,0xe3,0xc3,0x9a,0x14,0xd7,0x11,0x48,0xc8,0x74,0xa6,0x41,0xf4,0xcb, - 0xf7,0x31,0xa3,0x7d,0x6e,0x02,0xc1,0x31,0x2a,0x14,0x36,0xbb,0xac,0xd3,0xf7,0xc2, - 0xcd,0x2f,0x1f,0x73,0x6c,0x19,0xa0,0xfc,0x5a,0xe4,0x20,0xeb,0xf3,0x29,0x80,0x9a, - 0x92,0x57,0xe2,0x19,0x13,0x5c,0x35,0xa2,0xb5,0x67,0x96,0xbc,0x29,0x90,0xc6,0xa8, - 0x97,0x15,0xf8,0x59,0xe5,0x6e,0x86,0x60,0x65,0x3b,0xf3,0x60,0xf7,0x35,0x34,0xb4, - 0x78,0xb8,0x06,0x9f,0xfb,0xf3,0xc6,0x7d,0x5d,0x03,0xfd,0xeb,0xbe,0x8e,0xa1,0x45, - 0xdb,0x51,0x31,0x4b,0x70,0xe4,0x7c,0x9a,0xeb,0xc8,0x4f,0xde,0x47,0x8e,0x35,0x12, - 0xba,0xab,0x64,0x70,0xd3,0xf3,0xe2,0xeb,0xce,0x97,0x0e,0x5d,0x8a,0xbc,0xce,0x0e, - 0x87,0x1e,0xb6,0xe8,0xd8,0xd0,0x01,0x44,0xd3,0xf1,0x6f,0x7c,0x3b,0x9a,0x86,0xd0, - 0xe6,0x10,0x07,0x3a,0xed,0x80,0x31,0xe9,0x30,0xaa,0x24,0xe2,0x8f,0x2e,0x6e,0xf0, - 0xf3,0x73,0x7f,0x38,0xa5,0x42,0x2e,0xf0,0xeb,0x20,0x7f,0x70,0x0d,0x8b,0x63,0x94, - 0x3f,0x5a,0xcd,0xc1,0x59,0xf4,0x08,0x8f,0x8d,0xee,0x55,0xf6,0x39,0xc6,0xc3,0x87, - 0xab,0x71,0x74,0xfc,0xb8,0xc0,0xf7,0xf8,0x04,0x84,0x15,0xaf,0xff,0xe1,0x75,0xe7, - 0xbb,0x9e,0x54,0x79,0xde,0x9d,0xae,0x5d,0x96,0xe4,0x61,0x4f,0xb8,0xde,0xfa,0x56, - 0xb9,0x4b,0xb4,0x82,0xa0,0xe0,0xbb,0xfb,0x81,0x03,0x9c,0x04,0xca,0x40,0x4d,0x5a, - 0x63,0x00,0xac,0xc1,0x29,0xca,0x3d,0x52,0xa2,0x46,0x18,0x7f,0xcd,0xda,0x35,0xfd, - 0x05,0xbb,0x96,0x33,0x18,0x7b,0x0b,0xc3,0xaa,0xa5,0x79,0xf5,0x0a,0x7e,0x23,0x9b, - 0xc2,0xfd,0x35,0xef,0x0c,0x75,0x31,0xc8,0xd7,0xe3,0xb1,0x72,0xa2,0xe5,0x05,0x76, - 0x0d,0x93,0xd2,0xce,0x9a,0x88,0x08,0x3a,0xf9,0x3d,0x41,0x7f,0xa2,0x62,0xa2,0x90, - 0xeb,0x4f,0x34,0xe3,0x86,0xdd,0x8c,0x87,0xec,0xf5,0x98,0xda,0x71,0x76,0xe5,0xad, - 0xca,0xab,0x1a,0x53,0x1c,0xbd,0x33,0x43,0x59,0xb2,0xc3,0xe3,0xfb,0x8b,0xa3,0x4e, - 0xf7,0xf9,0x16,0x3d,0xe8,0x6d,0x6a,0xe1,0xa9,0x05,0xb3,0x79,0x45,0x23,0x91,0xc1, - 0x24,0xa1,0x57,0x24,0xa0,0x59,0x33,0xba,0x27,0x2c,0xd9,0x6c,0xdc,0x2f,0xb3,0x53, - 0x81,0x41,0x6f,0x1e,0x0d,0xb2,0xcc,0x41,0x6d,0x5c,0x74,0x8f,0x50,0xb3,0x01,0xca, - 0xe5,0x00,0x72,0x7c,0xbe,0x80,0xda,0xd0,0xaa,0xca,0xdc,0x5d,0x13,0x6a,0xbc,0x6a, - 0xf9,0x5e,0x99,0xb7,0xd8,0x4b,0xb7,0x53,0x61,0x89,0x35,0x4c,0x7d,0x41,0x5f,0xb8, - 0x3d,0x34,0xa1,0x8e,0x95,0x10,0x2b,0x0e,0xee,0x91,0x79,0xfe,0xee,0xc1,0x1a,0x52, - 0xd4,0x4a,0xb3,0x39,0x74,0xa3,0xbc,0xb2,0xe0,0x97,0xf5,0x8b,0x8a,0x51,0x41,0x91, - 0xb3,0x84,0xe0,0x8d,0x85,0xe3,0x18,0x42,0x16,0x8e,0x6b,0xc7,0xa8,0xc6,0xa3,0xd4, - 0x01,0xe6,0x6e,0x07,0x67,0x13,0x9a,0x17,0xf8,0xec,0x11,0x45,0xd9,0xfe,0xcf,0xc9, - 0x05,0x50,0xf7,0xb3,0xe3,0xbe,0x38,0x13,0x08,0x63,0xb0,0x88,0xce,0x3a,0xbb,0x2a, - 0x4f,0x37,0x12,0xa5,0x33,0x7c,0x61,0xb2,0x6b,0x4e,0xe6,0xa1,0xbb,0x58,0x7a,0x10, - 0x1f,0xbf,0x44,0x9a,0xb1,0x5e,0x82,0xf7,0xa9,0x44,0x28,0xb3,0x3f,0x73,0xf7,0xa8, - 0xff,0x39,0xe5,0xb2,0x83,0x6e,0x2e,0x17,0x65,0x1e,0xd0,0x8b,0x16,0x59,0x9e,0xbe, - 0x35,0x46,0x68,0xce,0x7b,0x9c,0xa1,0x90,0x3a,0x71,0x08,0x97,0xdc,0x92,0x44,0x13, - 0x41,0xce,0x6a,0xce,0xb7,0xd2,0x7f,0x87,0xce,0xee,0xac,0xa7,0x28,0xf5,0xda,0xc1, - 0x58,0xf9,0x7d,0xdf,0x79,0x3d,0x47,0xbb,0xe4,0xae,0xc2,0x8f,0xd5,0x12,0x5d,0x82, - 0x4c,0x1a,0xb0,0xfe,0x2d,0x47,0x03,0x93,0xbe,0xe0,0xef,0xbf,0x9e,0xd0,0xfe,0xab, - 0x1c,0xf6,0x56,0xc2,0x0e,0x08,0xb0,0xef,0xb2,0xcf,0x0f,0x74,0x09,0x6e,0x1a,0xd3, - 0xeb,0xbe,0xef,0x9b,0x9c,0xe3,0x14,0x4c,0x86,0x15,0x8b,0xac,0xa7,0x5e,0xa4,0xbc, - 0xef,0xda,0x4e,0xf8,0x94,0x9d,0x72,0xbc,0x8c,0xb3,0xf3,0x98,0x88,0x1b,0x0e,0x20, - 0x00,0xa7,0xec,0xf0,0x4a,0xb4,0xb6,0x64,0x8d,0x40,0xef,0x07,0xb4,0xf5,0x18,0x52, - 0x4a,0x9c,0xfb,0x49,0xc4,0x6c,0x41,0x67,0xc4,0x7c,0xea,0x3c,0xc8,0xc4,0xe4,0xb3, - 0xf1,0xbc,0x3b,0x13,0xa1,0x57,0xb5,0xfa,0xab,0x5c,0xfb,0xc1,0x91,0x76,0x27,0xbb, - 0xec,0xf7,0x92,0xe0,0x54,0x7d,0x38,0x92,0x2f,0x87,0xdf,0xc4,0x63,0xf5,0x2b,0xe2, - 0x04,0x86,0x15,0xd3,0xb3,0x45,0x5f,0x0f,0xe7,0xd8,0xd3,0xeb,0xc5,0x23,0x4a,0x2f, - 0xb6,0xe8,0xa8,0x03,0x57,0x84,0x1d,0xba,0x1f,0x76,0xce,0xd0,0xa5,0x48,0x63,0x76, - 0x70,0x31,0x9b,0xb0,0xfb,0x7f,0xa6,0x56,0xac,0xf8,0x1b,0x05,0xf8,0x4f,0x13,0x08, - 0x5b,0xe0,0xae,0xa0,0xfa,0x9b,0xe9,0xad,0xd5,0xe8,0x57,0xb3,0x21,0xd6,0x49,0xf3, - 0xf9,0xb4,0xb5,0xb5,0x85,0xab,0x03,0x0d,0x18,0x02,0x36,0x9e,0x34,0xb6,0x89,0x08, - 0xc1,0xb6,0x35,0x19,0xfa,0x4a,0xc4,0xaa,0x73,0x91,0xed,0x27,0xc0,0x5c,0xaa,0x0c, - 0xa8,0xb0,0x29,0x7c,0x9c,0x51,0x7d,0x79,0xd1,0xc7,0x82,0x89,0x79,0xa0,0xfa,0x8f, - 0xbf,0xdb,0x3e,0xe9,0xcd,0x75,0xfd,0x41,0x06,0xa7,0x98,0x6c,0xfc,0x33,0x90,0xeb, - 0xd2,0x96,0x5e,0xb2,0x1f,0x18,0x4c,0xaa,0xc1,0x94,0xa6,0x94,0x3e,0x95,0x88,0x3e, - 0x60,0x40,0xde,0xba,0xe0,0xb4,0x4a,0x7c,0x87,0x63,0x4b,0x3f,0xeb,0x83,0x99,0x14, - 0xb3,0x54,0xcd,0x81,0x1e,0xee,0x58,0xa7,0xb9,0xd2,0xb1,0x4e,0x0f,0xf1,0x0c,0xd8, - 0xd7,0xf8,0x79,0x7f,0xfe,0x72,0xd8,0xa7,0xc7,0xef,0x3f,0xbf,0xea,0x45,0x8f,0x65, - 0x74,0x3d,0x8e,0x1b,0xcc,0xc1,0xd7,0x10,0x17,0x0d,0xf2,0x3a,0x80,0xa9,0xe0,0x31, - 0xad,0x8a,0x1f,0x3f,0xd0,0x13,0x0f,0x1a,0x95,0xbc,0x17,0xa9,0x07,0x1e,0xa1,0xfc, - 0xbe,0xc1,0xcd,0xda,0x08,0x1d,0xde,0x04,0xea,0x89,0x16,0x2d,0xd2,0x0c,0xf7,0xdd, - 0x27,0x1a,0x59,0x96,0x9f,0x55,0xf2,0xf8,0x03,0x9e,0x3d,0x0d,0x05,0x1c,0xfa,0xd8, - 0x29,0x4d,0x7c,0x55,0xf1,0x56,0xdc,0x0d,0x34,0xc2,0x03,0x7d,0x6a,0xc3,0x8e,0xb2, - 0x73,0x25,0xc0,0x77,0x05,0xea,0x0a,0xa1,0x50,0xaa,0x3e,0xf5,0x17,0xee,0x82,0x6d, - 0x30,0x5d,0xdd,0x39,0xdf,0xfa,0xee,0xaa,0x5a,0x18,0xe2,0x68,0x4f,0x17,0x03,0xad, - 0x4d,0x2f,0x43,0x6d,0x63,0xbf,0x41,0x40,0x8a,0x17,0x92,0x9a,0x48,0xeb,0x28,0x79, - 0xd5,0x24,0xb4,0x2d,0x14,0xcf,0x7c,0x14,0x4e,0x45,0x4e,0x27,0x70,0x15,0x10,0x56, - 0x36,0x35,0xba,0xf0,0x60,0x8a,0x93,0xd6,0x90,0x9c,0xf0,0x8b,0xb9,0x5d,0x7b,0x03, - 0x5c,0x0b,0x0e,0x5f,0xbe,0x3d,0x7a,0xf5,0xf6,0xe5,0xeb,0x34,0xfc,0x5a,0xfe,0x33, - 0x1f,0x00,0x95,0x2e,0xc8,0x84,0xaf,0x15,0x86,0x09,0x3b,0xc0,0xe8,0xb5,0xb8,0xb7, - 0x25,0xb0,0xa3,0x23,0xff,0x65,0xc5,0xdb,0xc1,0x70,0x20,0x2f,0xa4,0x6a,0x7a,0x9f, - 0x5d,0x3e,0x7b,0x22,0xef,0xb9,0xfa,0xf6,0xd0,0x38,0xbf,0x53,0x14,0x63,0xb8,0xb3, - 0xcd,0x72,0xad,0xa8,0xa4,0xb1,0x75,0x70,0xee,0xcc,0x47,0xd2,0xb2,0xdc,0xdf,0xa6, - 0xf5,0x6e,0x95,0x8d,0xe5,0x79,0xd6,0x6a,0x26,0xa7,0x67,0xe7,0xad,0x31,0x4c,0x24, - 0x12,0x32,0x05,0x6b,0x2d,0xee,0x92,0x1e,0xee,0x2b,0x7e,0xa6,0x07,0xe3,0x95,0x38, - 0x6b,0x1d,0x9f,0x24,0x63,0xde,0x93,0x03,0x9a,0x37,0xf3,0x74,0x9c,0x36,0xc3,0x0b, - 0xad,0x56,0x5b,0x0b,0x52,0x33,0x30,0x0c,0xa9,0x09,0xf0,0x70,0x97,0xd0,0x34,0x7d, - 0x84,0x96,0xe8,0xcf,0x51,0x7d,0x7e,0x93,0x1c,0xfc,0xfc,0x72,0x3a,0x39,0xbd,0xc0, - 0xb3,0x09,0x5e,0x90,0xbf,0x89,0x27,0x2f,0x7c,0x27,0xd9,0xab,0x75,0x35,0x40,0xaf, - 0x61,0xb5,0x73,0xd0,0x99,0x62,0xd0,0xf6,0x99,0x56,0xc3,0x2a,0xe1,0x00,0xdd,0xbe, - 0xe0,0x6d,0x58,0x9e,0xe9,0x0e,0x51,0xa9,0xae,0xc6,0xe6,0x58,0xe5,0xab,0x28,0x8b, - 0x17,0x32,0xdc,0x55,0x62,0x60,0x35,0x3c,0xfb,0x6c,0xd4,0x8e,0x93,0x19,0x00,0xee, - 0x2c,0x78,0x3b,0xc3,0xfe,0x6c,0x86,0x5b,0xb2,0x10,0x91,0xf3,0x09,0x2d,0x70,0x1a, - 0xd9,0x90,0xc4,0x3e,0xa9,0x3b,0xa3,0x6a,0x5c,0x58,0xb7,0x22,0xbb,0x8d,0x8f,0x57, - 0x04,0xd1,0x28,0x5e,0x50,0xa7,0x98,0xa7,0x5f,0x45,0xe1,0x5f,0x38,0x29,0x44,0xe4, - 0xb1,0x06,0x89,0x3e,0x9a,0xa2,0x81,0x27,0x1d,0xe1,0xbd,0x90,0x57,0x18,0x2d,0x11, - 0x6f,0xe1,0x01,0xc7,0x3b,0x4b,0xb9,0xe8,0x1b,0xcd,0x1b,0x9f,0x2e,0x90,0x15,0x7f, - 0x53,0xb4,0x4d,0x9e,0x9a,0x17,0x17,0xc5,0x8b,0xb9,0x2f,0xf5,0x04,0xd1,0x5d,0xb2, - 0x83,0x5b,0xbd,0x36,0x71,0x58,0xdf,0x59,0xb5,0x25,0xdb,0xce,0xf1,0x39,0x12,0x90, - 0x8f,0x37,0x61,0xd1,0xd6,0xf1,0xe6,0xf3,0x17,0xe1,0xc9,0xd6,0x79,0xa2,0x05,0x9c, - 0xe6,0xe0,0x8b,0x70,0x33,0x6c,0x85,0x7c,0x90,0x1c,0x26,0xe1,0x73,0x7a,0x1e,0xce, - 0xe9,0xf1,0x05,0x3d,0x9e,0xd3,0xe3,0xe3,0xf0,0x31,0x1e,0xff,0x79,0x35,0xc1,0xcb, - 0xdd,0xf1,0xe9,0xc9,0x9d,0xc3,0x18,0x5f,0xbf,0x8f,0x05,0x65,0xbc,0xe0,0xd1,0xc3, - 0x3b,0xd0,0xb4,0x5a,0xc2,0x33,0x1c,0x25,0xed,0xcf,0x41,0x30,0x16,0x8a,0xa8,0xa0, - 0x73,0xa4,0x10,0xc6,0x08,0x97,0x45,0x7a,0x01,0xc6,0x12,0x1b,0x72,0x65,0x54,0x82, - 0x11,0x29,0x27,0x37,0x78,0xc5,0x9a,0x5a,0x67,0x24,0xc8,0x53,0x7c,0x20,0xc0,0x3d, - 0xb3,0xf9,0x6d,0xd9,0x20,0x28,0xda,0x6e,0x35,0x81,0xfb,0x19,0x42,0x11,0x70,0x87, - 0x78,0x11,0x98,0xcc,0x27,0x4f,0x8e,0x41,0xc2,0xc4,0xe4,0xe1,0x15,0x6a,0x4b,0xb6, - 0xc1,0x71,0x65,0x2e,0xdd,0x5d,0x84,0x49,0xe4,0x17,0x14,0xd7,0x42,0xb3,0xdb,0x50, - 0xf2,0xe2,0xbc,0x0a,0x1c,0xea,0x27,0xc2,0xab,0xc5,0x6f,0x20,0x98,0xcd,0xff,0xda, - 0x9f,0x45,0xc2,0xe2,0xb3,0x9b,0x34,0x03,0xe4,0xcd,0x72,0x89,0x21,0x3a,0x4a,0xb7, - 0xfe,0x11,0x5d,0xef,0x7d,0xec,0xd5,0x3e,0x36,0xf2,0x3f,0xd1,0x5e,0x8b,0x7f,0xe3, - 0xbd,0x78,0xab,0xd1,0xbf,0xed,0x9f,0x46,0x67,0x37,0xb1,0xb0,0x31,0x1d,0xed,0x8d, - 0x8e,0xb7,0x4f,0x5a,0x11,0xe7,0xbf,0x1a,0x5f,0x8e,0xc9,0xa1,0x3c,0xe9,0xf3,0x68, - 0x5f,0x64,0xd8,0xbf,0x55,0xc7,0x22,0x24,0xaa,0x2f,0xbf,0x42,0x76,0xf2,0x70,0x48, - 0xd9,0xe3,0xac,0x96,0x86,0x94,0x1e,0xb6,0x03,0xeb,0xbf,0xad,0xad,0xe0,0xdd,0xd1, - 0xfe,0xa7,0x83,0x9f,0xf7,0xdf,0x42,0x96,0x7e,0x3a,0xda,0xff,0x29,0x45,0xbc,0xf0, - 0x0e,0x01,0x6e,0xf0,0xbd,0x09,0x46,0x47,0x49,0x55,0xf8,0xf8,0x03,0x23,0x64,0x4c, - 0x9d,0x80,0xf3,0xb2,0xdd,0x9f,0x1c,0x1a,0x24,0x40,0xc0,0xa7,0x10,0x1b,0xd2,0xd5, - 0x51,0x73,0xb8,0x38,0x1c,0xf6,0xf6,0x32,0x30,0x31,0x0a,0x6b,0xf9,0x7b,0x2d,0x8c, - 0xc3,0x56,0xe6,0xf0,0x0d,0x3a,0x8c,0x88,0x3c,0xb5,0x26,0x50,0xbd,0x67,0xe0,0x1d, - 0xfd,0xa4,0xf4,0x67,0xb9,0x5c,0xdc,0x99,0x7e,0x46,0x6f,0x90,0x0a,0x50,0x6c,0xc4, - 0xfa,0xc8,0x6a,0xff,0x3a,0x7b,0x00,0x03,0x69,0x20,0x6b,0xf0,0xee,0x30,0xe0,0x0f, - 0x19,0x69,0x38,0x30,0x47,0xfd,0x7c,0x04,0xf3,0x8a,0xfd,0xf7,0xaf,0x82,0x9f,0x5e, - 0xc2,0x0d,0x68,0x07,0x37,0x9d,0xd8,0x13,0x56,0x46,0x2c,0xcc,0x08,0x2f,0xe3,0x92, - 0xeb,0xf9,0x9b,0x9b,0xb2,0x42,0xde,0xef,0xa2,0x19,0x0f,0x4c,0x4f,0x87,0xc5,0xb5, - 0x34,0x26,0x7c,0xe3,0xa4,0x74,0xe0,0x5b,0xfa,0x8a,0x2e,0xc0,0x48,0xc8,0x3d,0x77, - 0x67,0x98,0x02,0x4a,0x1e,0xdb,0x1b,0xd5,0xc2,0x83,0x20,0x3a,0x84,0x23,0x82,0xb4, - 0xb0,0xcb,0xe7,0xbe,0x94,0xaf,0x9a,0xfa,0x38,0xb6,0xb1,0x78,0xd2,0x20,0xf7,0x4e, - 0x05,0x16,0xa2,0x09,0xd4,0xcf,0xc4,0x12,0x11,0x63,0xec,0x49,0x73,0x3b,0x5e,0x50, - 0x07,0x7e,0x4d,0x91,0xa1,0x40,0xd4,0xfc,0x82,0xee,0xa7,0x11,0xc1,0x2f,0x67,0x33, - 0x48,0xe0,0x90,0x66,0xc8,0x30,0xd6,0x12,0x66,0x8d,0xdf,0x33,0xa2,0x07,0x9c,0xa4, - 0xa2,0x14,0x75,0x8e,0x79,0x72,0x19,0x7b,0x28,0xae,0xc6,0x64,0xb9,0xce,0xf6,0x36, - 0x24,0xbe,0x3e,0xf3,0xc9,0xb7,0x9e,0x9a,0x53,0x9f,0x14,0xe4,0xd4,0x6a,0x77,0x65, - 0xa2,0x7f,0x37,0xa8,0x1f,0x11,0xee,0xcd,0xcd,0x9c,0xf6,0x47,0x69,0x8a,0x00,0xab, - 0xc2,0xe3,0x7e,0x5a,0x94,0xf6,0x7b,0xa3,0x4f,0xbf,0xcb,0x65,0x14,0x72,0x33,0x86, - 0xb5,0x3c,0x0b,0x64,0x4f,0x3f,0xaf,0x79,0x9e,0x86,0x14,0x1c,0x56,0x61,0xa9,0xf1, - 0xbb,0xf9,0xc5,0x3b,0x34,0x5e,0x78,0xc3,0x5f,0xe1,0x45,0xdf,0xe2,0xef,0xef,0x44, - 0x1f,0xff,0xb3,0xfb,0xe1,0x14,0xf7,0xa1,0x0d,0xd3,0x29,0xac,0x9f,0x0a,0x6d,0xed, - 0x9e,0x8b,0x51,0x1f,0x1b,0x9e,0x5e,0x2b,0x84,0x85,0xcb,0x51,0x98,0x98,0x78,0x6b, - 0x59,0x6b,0x11,0x8a,0xa8,0xaa,0x1f,0x41,0xae,0x41,0x76,0x90,0x8b,0x26,0x71,0xd2, - 0xbc,0x45,0x5c,0x0e,0xef,0x18,0x61,0xeb,0xdf,0x0e,0xdf,0xbd,0x6d,0x64,0x3c,0x05, - 0x20,0x7a,0x7f,0xc4,0x85,0x38,0x02,0x7b,0x74,0xf9,0xa1,0xff,0x4f,0x48,0x5f,0x61, - 0x47,0x87,0xd9,0xf1,0x2b,0xd4,0x76,0xdf,0xf2,0x34,0x19,0x7d,0x6b,0x86,0xbd,0xf4, - 0xd3,0xd3,0xd9,0xe7,0xe9,0x7c,0xb2,0xb9,0x69,0x7e,0x49,0x5c,0x7f,0x60,0x5f,0x79, - 0x7f,0xe5,0xbb,0x44,0x71,0x75,0x72,0xd4,0x01,0x0e,0x1e,0xf0,0x67,0x60,0x32,0x4f, - 0x04,0x69,0xb3,0x3d,0x78,0xfe,0x6d,0x7b,0x50,0xab,0xc5,0x9d,0xe3,0xc1,0x49,0xfa, - 0x06,0x75,0x6d,0xf0,0x91,0x45,0xc4,0x8f,0x33,0xce,0x1e,0xc5,0x5f,0xe3,0x1a,0x07, - 0x32,0xaf,0x98,0xb8,0x47,0x9d,0xa9,0x99,0xb6,0x3b,0xc5,0x4c,0xd6,0x45,0x45,0x18, - 0x1c,0x8f,0xcf,0xb7,0x9f,0xed,0x85,0x4d,0x70,0x07,0x52,0x15,0x2e,0x31,0x26,0x32, - 0x15,0x6e,0x03,0x25,0xf5,0x15,0x8a,0xea,0x11,0xe1,0x5b,0x49,0x30,0xa0,0x97,0xfd, - 0xd8,0xef,0x00,0x03,0x28,0x07,0x32,0x2c,0x1d,0x1e,0x1f,0xe7,0x07,0x8d,0x27,0xd8, - 0x7e,0xa0,0x12,0x2f,0x3b,0x76,0xff,0xed,0x0f,0x01,0xd6,0x1f,0x5a,0x33,0xb4,0x99, - 0x05,0x23,0xb3,0xac,0x4e,0x1e,0x45,0x48,0x42,0xe6,0x6c,0xf3,0x2d,0x1f,0xe6,0x46, - 0x80,0x25,0x84,0x59,0x9f,0x93,0xe3,0x98,0x28,0x10,0x19,0xcc,0x97,0x37,0x0e,0xb0, - 0x64,0xe2,0x35,0x85,0x77,0x39,0xcc,0x34,0x86,0x02,0xc5,0xfa,0xf4,0x80,0xc2,0x23, - 0xdc,0x0d,0x5a,0x82,0x9f,0x5c,0x1e,0x6a,0x15,0x36,0x5c,0x77,0x70,0x2b,0x6a,0xb6, - 0xae,0x62,0x48,0xf1,0x56,0xb3,0x31,0xaa,0xa2,0x4c,0x73,0xad,0x13,0x84,0x7b,0x95, - 0x65,0x60,0x87,0xf2,0xda,0x98,0x29,0x00,0xa9,0x2e,0x99,0xf7,0xb0,0x6a,0x7e,0xb6, - 0xab,0x18,0xfd,0x53,0xfd,0x75,0x0d,0xe2,0x4e,0xe9,0x16,0xd6,0x8d,0xbd,0x20,0xfc, - 0x0f,0xb6,0x06,0x08,0x37,0x5a,0x0f,0xc5,0xd9,0x08,0x4d,0x73,0x53,0x03,0xbb,0x5e, - 0xf5,0xe3,0xb5,0x9c,0x76,0xf6,0x02,0xa6,0x23,0x50,0xb2,0xd9,0x6b,0xe4,0x33,0xc6, - 0x70,0x00,0x6d,0x75,0x0a,0x5e,0xfd,0x85,0xdc,0xc2,0x8a,0x73,0x95,0x63,0xdb,0xe9, - 0x2a,0x38,0xd6,0x46,0x56,0x03,0x19,0x9b,0x9f,0x7c,0x49,0x29,0x54,0x99,0xe3,0xb4, - 0xd8,0x5d,0xb8,0x0a,0x29,0x3c,0x5a,0x90,0x1f,0x89,0xb2,0xe7,0x71,0x96,0x62,0x23, - 0x24,0xac,0xa3,0x80,0xbe,0xe7,0x24,0x08,0x6c,0x2c,0xbf,0x1e,0x11,0x0c,0x5b,0x4d, - 0x85,0xb2,0x6f,0x77,0x3d,0x00,0x07,0xd1,0x5b,0x0b,0x51,0x3e,0xcb,0x5c,0x0b,0xec, - 0x44,0xbb,0x8b,0x9d,0xfe,0x15,0xfe,0x91,0xd8,0x77,0x99,0xc4,0xda,0xbc,0x32,0x8e, - 0x9c,0x8d,0x61,0x18,0xb2,0x15,0xee,0x9b,0x91,0xc8,0x79,0x5f,0xef,0xbf,0x6d,0x84, - 0x5a,0xb8,0x06,0xfb,0x29,0x17,0xce,0xa1,0x7f,0xa8,0x40,0x0e,0x6e,0xc3,0xc5,0x67, - 0x76,0x24,0x20,0xc5,0x61,0xc5,0x58,0xf0,0x90,0x18,0x17,0xd8,0x0a,0xe9,0x38,0xcc, - 0x06,0xec,0x00,0xf5,0x9b,0xfd,0x7c,0xf4,0x06,0xbb,0x62,0x89,0x97,0xb0,0xda,0x79, - 0xb6,0x87,0x84,0x54,0x2e,0xc0,0x91,0xab,0x79,0xac,0xb9,0x5f,0xfc,0x91,0xdf,0x39, - 0x52,0x98,0x8d,0x10,0xd0,0xa7,0x69,0x1e,0x0c,0xb7,0xf0,0x77,0x4b,0x2e,0x40,0x94, - 0x67,0xf8,0x0c,0x40,0x68,0x29,0xda,0x93,0xa7,0x19,0xff,0xb4,0xf1,0x6a,0xb6,0xe6, - 0x48,0xa0,0x87,0x76,0xd1,0x55,0xd3,0x47,0x8f,0x00,0x84,0x87,0xb6,0x0e,0x1c,0x4e, - 0x02,0x51,0x6d,0x42,0x93,0xcd,0xc9,0x1d,0xc0,0x11,0x99,0xbc,0x60,0x8c,0xf1,0xa7, - 0xb9,0xbc,0x7c,0x32,0xdf,0x90,0x51,0x93,0x60,0xc8,0x91,0x5a,0x00,0x90,0x60,0x9f, - 0xe4,0x44,0x6b,0xb9,0x7c,0xfa,0x64,0x5b,0xba,0xb1,0x7b,0x10,0xba,0x6e,0x8c,0x7b, - 0x04,0xa0,0xd7,0xd9,0x62,0x8b,0xe8,0xe1,0xb7,0x4f,0x53,0x7a,0xe5,0x8f,0x9e,0xf8, - 0x25,0x20,0x4d,0xfd,0x94,0xe5,0xc9,0x44,0xb7,0xa3,0x60,0x60,0x38,0x4e,0xf9,0x94, - 0x43,0x33,0x42,0x47,0xca,0x30,0x10,0xa7,0x7c,0x9a,0x48,0x12,0x03,0x71,0xbe,0x43, - 0x52,0x1b,0x5a,0x68,0x32,0x7a,0x6f,0xcb,0x6c,0x93,0x66,0xf4,0xd3,0xe9,0x0e,0xa0, - 0xc3,0x1f,0xf4,0xb1,0xaa,0x6e,0x9a,0x8c,0xac,0x70,0x48,0x8b,0x16,0xd9,0xe3,0xe9, - 0x1e,0xb5,0x8d,0xb2,0x06,0xfb,0xd9,0xe9,0x7f,0x22,0x10,0x64,0x40,0xc1,0xe4,0xe4, - 0x71,0xa4,0x09,0xcd,0xc4,0x4b,0x2a,0xe7,0x69,0xc6,0xad,0x26,0x09,0x46,0x20,0xe3, - 0xd6,0x18,0xf5,0xb2,0x17,0xcd,0x18,0x5e,0xa6,0x3f,0xbd,0xd9,0xff,0x5b,0x5a,0x24, - 0x32,0x2d,0xb4,0x55,0x92,0x9d,0x52,0x3b,0xdf,0x29,0x20,0x85,0x7f,0x3f,0x41,0x5e, - 0xf5,0xf3,0x2f,0x7c,0x3a,0x94,0xd1,0x8f,0x26,0xf1,0xd5,0x07,0xa4,0xf1,0x2f,0x25, - 0xf2,0xd2,0xfb,0x7b,0x7a,0x3b,0x00,0xfe,0x48,0xbe,0x70,0x61,0x22,0x3b,0x24,0xa8, - 0xb0,0x33,0xe6,0x80,0x81,0x12,0x81,0x20,0xf7,0xef,0x2c,0x03,0x87,0x43,0x0c,0xbb, - 0xb0,0x42,0x01,0x76,0x36,0x5f,0x63,0x61,0x5a,0xec,0xfb,0x24,0x41,0x4a,0x34,0x52, - 0xb8,0x9b,0x32,0x12,0x89,0x31,0x8c,0x38,0xef,0x9e,0xf6,0x40,0xe5,0x9a,0x70,0x6b, - 0xd2,0xe3,0x6d,0xb3,0xb1,0x49,0x88,0x17,0xdd,0x92,0x78,0x79,0x79,0xf4,0xeb,0xfb, - 0x50,0xd1,0xa8,0x6c,0x14,0xf0,0x3b,0x5a,0xdc,0x95,0xf3,0x40,0x72,0x85,0x77,0x52, - 0x19,0xb1,0x47,0x5d,0x2d,0x5c,0x4b,0xab,0x2e,0x5d,0xf1,0x59,0x1d,0xa5,0x10,0x05, - 0xa2,0xc0,0x0a,0xbd,0x8d,0x84,0x2a,0x31,0x0a,0x15,0xd7,0xdd,0x5d,0xdc,0xb2,0x5e, - 0xab,0x36,0x09,0x53,0x23,0x42,0x04,0x28,0x9d,0xca,0x13,0xba,0xd3,0xf1,0x89,0x61, - 0xcf,0xdc,0xe3,0x8f,0x6d,0x86,0x71,0xa7,0x9b,0xd9,0x47,0x2a,0x7a,0xec,0x8d,0x91, - 0x00,0x2c,0xd4,0x65,0x3c,0x12,0xee,0x3c,0xda,0xfb,0x66,0xab,0xd2,0x6f,0xc8,0xcd, - 0x4a,0x6c,0x52,0x64,0xff,0xb4,0x58,0xd5,0x21,0x42,0xcb,0xce,0xf8,0xac,0x33,0xa0, - 0xa0,0x2c,0x75,0x8e,0xdd,0xf9,0x99,0x3c,0x06,0xb5,0xad,0xbd,0x20,0x7b,0xb6,0xde, - 0x69,0xb2,0x9a,0xa8,0xb4,0x01,0x21,0x3a,0xa3,0xeb,0x78,0x71,0x1c,0xfe,0x25,0x0f, - 0xd8,0x9c,0xd0,0xa3,0x51,0xdc,0xf1,0x33,0xbb,0xa2,0x3f,0xf1,0x97,0x59,0x83,0x1e, - 0xd1,0x86,0xbf,0xd5,0xad,0x8a,0x82,0xbe,0x02,0xe6,0x35,0x5d,0x4f,0x35,0x41,0xb4, - 0x2d,0xa9,0x80,0xc3,0x02,0xc2,0xac,0x44,0xda,0x46,0x07,0x00,0xf7,0xe7,0x9d,0xd9, - 0x88,0x2e,0x23,0x7f,0xe6,0x99,0x0d,0xdf,0x03,0x9e,0x4f,0xe8,0x8c,0x82,0x27,0x3b, - 0x0e,0xdb,0x3c,0xc8,0xf8,0x91,0x03,0x02,0xd3,0xbc,0xb8,0x71,0x35,0xa5,0xe1,0x4c, - 0xa7,0xc5,0xdf,0x93,0x55,0x87,0x53,0x7b,0x6d,0x25,0x6e,0xb1,0xa8,0xe0,0x42,0x6c, - 0x3a,0xaf,0x15,0xed,0x39,0xa6,0xda,0xbd,0xa4,0xf3,0x4e,0xa2,0xb2,0x3f,0xc6,0xe8, - 0xcb,0xe3,0x2a,0x27,0x45,0x3b,0x5e,0xd3,0xda,0xf3,0xda,0x3b,0x19,0x95,0x81,0x39, - 0x1f,0xa7,0x05,0x56,0xbc,0xa1,0x6e,0xf8,0xdb,0xc8,0x83,0xdc,0xa7,0xa4,0x3f,0x6a, - 0x17,0x10,0xd8,0x8f,0x96,0x1b,0x1d,0x12,0x82,0xb7,0xea,0x32,0x18,0x0c,0xb1,0x5f, - 0xb2,0x4f,0xdc,0xa8,0xda,0x28,0x2e,0xf2,0x49,0xa1,0xa5,0xc4,0xd0,0x9a,0x1b,0xc4, - 0xb0,0x29,0xe3,0x1d,0x5a,0x77,0xc3,0xd7,0x10,0xb8,0x1b,0x7d,0x6f,0x37,0xae,0xe3, - 0x33,0x6b,0xe5,0x9b,0xe8,0xe4,0xf7,0xd6,0xef,0x77,0x55,0xd8,0x6e,0xc1,0x46,0x87, - 0x33,0xac,0x52,0xe3,0xf1,0x78,0xdb,0x20,0xf5,0x03,0xba,0x73,0xbc,0xd0,0x01,0xa7, - 0x8c,0xf3,0x69,0x25,0x96,0xd9,0x63,0x8f,0x47,0xeb,0x3a,0x16,0xdf,0x36,0x54,0x11, - 0x10,0x32,0x8c,0x8c,0x2e,0x5e,0xb7,0xfb,0x32,0xa7,0x82,0x4a,0x1f,0x7b,0xf5,0xa8, - 0xe5,0x52,0xc2,0x5c,0x2d,0xa0,0xbd,0xb2,0xb0,0x92,0x5c,0xb0,0x7e,0x40,0x5b,0x1a, - 0x69,0x68,0x6a,0x4f,0x82,0x29,0x1f,0x94,0x00,0xab,0x5f,0x57,0x91,0xec,0x68,0x00, - 0x70,0x52,0x80,0x7d,0x7a,0x74,0x19,0x2f,0x68,0x8c,0x61,0x4f,0x8d,0x3d,0xcf,0xff, - 0x81,0xf0,0xf8,0x3f,0xbc,0xd9,0x99,0xf3,0x7a,0x55,0x5d,0x74,0x33,0x47,0x03,0xd3, - 0x4f,0x12,0xa3,0x8c,0x41,0xd9,0x40,0x61,0xb6,0x1f,0xa9,0x79,0x49,0x46,0xc9,0x2c, - 0x3d,0x35,0x2b,0x87,0xe4,0x9f,0x78,0xa2,0x35,0x17,0x34,0x6b,0x3c,0x4d,0xf3,0x59, - 0xc2,0x0d,0x12,0x69,0x29,0xc3,0x0d,0x1a,0x8d,0xd2,0xcb,0xc6,0x88,0x89,0xdc,0xfa, - 0x07,0x81,0x46,0xc7,0xdb,0xf5,0xef,0x4e,0xe2,0x8f,0x8d,0xe8,0xe3,0x4d,0x2d,0xfe, - 0x6a,0x2b,0x8e,0x8d,0xa6,0x3d,0x4b,0xa3,0x7f,0x36,0x18,0x09,0x09,0xe7,0xf8,0xb8, - 0x46,0xea,0xca,0xfa,0xf6,0x09,0x2b,0xed,0x08,0xe0,0x3a,0xcd,0x8e,0x47,0xc7,0x3b, - 0x27,0x27,0x72,0x16,0x88,0x84,0x94,0x4e,0x16,0xf6,0xc2,0xb0,0x25,0xbb,0xff,0x6b, - 0xd4,0xdd,0x5c,0x7d,0xa5,0x2a,0x6f,0xd0,0x95,0x6f,0x13,0x02,0xa2,0xa5,0xbd,0x97, - 0x5e,0xdb,0xfc,0xc1,0x0a,0xd3,0xe0,0x82,0xe8,0x87,0x4f,0xf4,0xc1,0xac,0x00,0x34, - 0x87,0xc6,0x30,0xa8,0xcc,0x80,0xf4,0x4a,0x78,0x71,0xd6,0x5f,0x99,0x47,0xbe,0xed, - 0xd1,0x15,0xc3,0x16,0x5b,0x5d,0x49,0x76,0x58,0x1c,0x6b,0x06,0xa9,0xe0,0xac,0x81, - 0xc4,0xb8,0x6d,0x3e,0x03,0xde,0xfb,0x8c,0xc4,0x58,0xb2,0xcf,0x6f,0xfd,0xcf,0xf3, - 0x5b,0xc9,0xdc,0x39,0xf3,0x3f,0x76,0xce,0x24,0xab,0x7a,0x8d,0xf4,0x40,0xe4,0x83, - 0x20,0x99,0xaf,0x02,0x93,0x0f,0x82,0x8e,0xbc,0x22,0x5a,0x35,0xc7,0x9b,0x5d,0x57, - 0x86,0x70,0xdc,0x11,0x2a,0xa8,0x24,0xf8,0x9c,0x51,0x27,0x80,0x7e,0x16,0x24,0x7e, - 0x5a,0x9f,0x8d,0xdd,0x8e,0x69,0x06,0xbc,0x1c,0xf0,0x20,0xb9,0xea,0x47,0x33,0x21, - 0xd8,0xf6,0xce,0x67,0xa1,0xb6,0x52,0x3d,0xdc,0x8e,0xa7,0x63,0xcd,0x13,0x99,0x21, - 0xd3,0x90,0x8f,0xd4,0x95,0x63,0x86,0x40,0x27,0x11,0xcb,0x1b,0x37,0xbb,0x28,0x6f, - 0xbd,0x76,0xaf,0x44,0x24,0xb0,0xcb,0xe5,0xf6,0x53,0x21,0xdc,0xf3,0xc4,0xbb,0x9e, - 0x12,0x40,0x7d,0x5a,0x4b,0x0d,0x00,0x1e,0x4e,0x91,0x20,0xf4,0xa9,0x12,0x2f,0x56, - 0x76,0xbb,0x72,0x82,0xcf,0x44,0xf5,0x4c,0xe3,0x77,0x29,0xfe,0x44,0xfb,0x30,0x41, - 0xea,0xb9,0xe1,0x59,0x93,0xe5,0x93,0x81,0xd0,0x9c,0xbe,0xff,0x9b,0x35,0x79,0x73, - 0x18,0xc9,0x6d,0x7b,0x92,0xb1,0x6a,0x44,0xa9,0x9f,0x4c,0xaa,0x81,0xf3,0x3c,0x63, - 0x79,0x45,0x18,0x80,0x4f,0x39,0x80,0x4b,0xdd,0xfa,0xdc,0x4a,0xe0,0x0a,0x1c,0x7a, - 0xbe,0x24,0xd9,0x54,0x22,0xe9,0xf5,0x2d,0x45,0x78,0xc3,0xaf,0x66,0x14,0xaa,0x32, - 0x4f,0x3f,0xe2,0x4d,0xbe,0xb9,0x97,0x2a,0x2c,0x08,0x4d,0x93,0x22,0x9c,0x4b,0x2c, - 0x1e,0xe1,0x37,0x0d,0xf3,0xfd,0x93,0x7c,0x47,0x37,0x11,0xa2,0x1d,0xcf,0x2e,0x9a, - 0xed,0x9f,0x79,0x8a,0xd7,0x59,0x1c,0x67,0x28,0x0a,0x2e,0x09,0x4c,0xb3,0xe5,0x42, - 0x44,0xbf,0xf3,0xab,0x8d,0x40,0x74,0x0f,0x0a,0x20,0x09,0x9e,0x84,0x72,0x3c,0x1e, - 0x28,0x74,0x9e,0xe2,0x53,0xa7,0x6e,0x06,0x14,0x96,0xde,0xaa,0xd1,0xaa,0xa4,0x06, - 0x14,0x5e,0xac,0x2f,0x33,0xeb,0x0b,0x5e,0xaa,0x8b,0x59,0xd9,0x4b,0x50,0x5b,0xb7, - 0x63,0x94,0x6f,0xe3,0x2b,0x6e,0x4d,0xf3,0x2b,0xee,0x66,0x59,0x53,0x96,0xc2,0x78, - 0xdd,0x51,0x2f,0x1a,0x6b,0x79,0xf4,0xa6,0x1f,0xd5,0x63,0x8a,0x7e,0x36,0xef,0x5a, - 0xbe,0xb8,0x1a,0xb1,0xbe,0xf3,0xbb,0x20,0xd0,0x6b,0xbf,0xc5,0xe7,0x3c,0x89,0x31, - 0x78,0xf7,0x6d,0xcb,0x94,0x2b,0xf8,0x27,0x03,0x20,0x64,0xf3,0xe5,0x54,0x0b,0x29, - 0xbd,0x7a,0xdc,0x29,0x5d,0x60,0x75,0xa1,0x3f,0xe9,0x07,0x3e,0x2b,0xd2,0xa1,0x68, - 0x9f,0xe7,0x0f,0x69,0x7d,0xd6,0x1f,0xca,0x0e,0x71,0xa8,0x87,0xdc,0x7a,0x1b,0x37, - 0x16,0x94,0xf8,0xc6,0x69,0xa5,0xa1,0xa0,0x5f,0xcd,0x82,0xd8,0x41,0x8e,0xba,0xbc, - 0x24,0xe4,0xc9,0xf5,0x1a,0xf4,0x05,0xde,0x34,0xba,0xa6,0x4f,0x40,0x2e,0x67,0x3a, - 0x8a,0x35,0xbd,0x76,0xf0,0x4a,0x9c,0xa4,0x03,0x35,0xf4,0x78,0xd9,0xc3,0x3a,0x32, - 0x3a,0x35,0xe6,0x1e,0x72,0x2e,0x27,0x6f,0x8e,0x06,0x19,0xcd,0x9a,0xa5,0xef,0xba, - 0xe4,0xa2,0xc5,0x3a,0xea,0x81,0x16,0x00,0x3e,0x13,0xde,0xcf,0x28,0xf8,0x1d,0xb1, - 0x0a,0xb9,0x09,0xd0,0x1c,0xff,0x08,0x1a,0x43,0x47,0x96,0x58,0x12,0x2c,0xde,0xd8, - 0xdc,0x74,0xbf,0x1e,0x5b,0x5f,0x4f,0xb0,0xc9,0xce,0x8c,0x7c,0x70,0x92,0x91,0xe9, - 0xd1,0x5a,0xec,0x2c,0x01,0x19,0xb9,0x66,0xd7,0xd4,0x13,0xf0,0x27,0xb7,0x1f,0x42, - 0x35,0xfd,0xd2,0x15,0x0e,0xcd,0xac,0x9f,0x2b,0x2d,0x5f,0x64,0x5b,0x23,0x1a,0xf7, - 0xfb,0x40,0x53,0x06,0xf6,0x2b,0xec,0x92,0x16,0x86,0x72,0x54,0x20,0x50,0xbd,0x43, - 0x54,0x39,0x7d,0x18,0x2f,0xf7,0xd6,0xb0,0xb2,0x55,0xc5,0x48,0x6e,0x27,0xa7,0xa0, - 0x6a,0x86,0x7f,0x11,0x1f,0x15,0xea,0x7e,0x6e,0xca,0x1e,0xf2,0x8e,0x3b,0x6e,0x89, - 0xb4,0x15,0x7d,0x81,0x95,0x43,0xf7,0x35,0x0f,0xfe,0x97,0x1e,0x8b,0x2d,0x53,0x56, - 0xe2,0xa1,0x7f,0x40,0xc5,0x1b,0x0f,0xb3,0x5d,0x29,0x55,0xeb,0xf2,0xc4,0xd8,0x69, - 0xa5,0xd7,0x05,0x39,0x48,0x74,0x0e,0xd4,0x56,0x1f,0x79,0xa1,0x46,0xd6,0xd1,0xe2, - 0x25,0x18,0x88,0x82,0xac,0x01,0xde,0xae,0x3c,0xcb,0xe3,0x02,0x43,0x53,0xae,0xe8, - 0x87,0x80,0xc8,0xbc,0x02,0x8c,0x1f,0x40,0x03,0xc6,0x37,0xb3,0xad,0xd7,0xe7,0x78, - 0x72,0xd6,0x17,0xde,0xbd,0x56,0x32,0xe0,0xd4,0x44,0x43,0xaa,0x64,0x81,0x7b,0xb4, - 0x7a,0x36,0x5a,0x59,0x2d,0xb7,0x56,0x80,0xe4,0x7a,0xa9,0xd8,0x29,0x97,0x05,0x82, - 0xee,0x62,0xa9,0x85,0x12,0xc2,0xab,0x7a,0x94,0xe8,0x13,0x29,0xdf,0xd6,0x34,0x12, - 0xae,0x01,0x10,0x9d,0x1a,0x20,0xe6,0x71,0xed,0xb2,0xf6,0x58,0xce,0xb0,0x88,0x40, - 0x65,0xb0,0x83,0x10,0x64,0x58,0xc7,0xba,0x22,0x0d,0x7b,0x6c,0xb7,0x97,0x32,0xc0, - 0xc1,0x04,0xee,0x7f,0xa3,0x38,0xe1,0x97,0x1f,0xb8,0xd1,0x1f,0x9d,0x52,0xda,0xcb, - 0x7f,0x46,0x0e,0x78,0x22,0xfd,0x40,0x08,0xd5,0xbe,0xc0,0xe4,0xac,0xe4,0xda,0x9a, - 0xa6,0xb6,0x8a,0x8c,0x85,0x4f,0x92,0x62,0x37,0xb9,0x29,0x2e,0x75,0x48,0xf1,0x7b, - 0x80,0x02,0xba,0x42,0x8a,0x37,0x50,0x3e,0xbf,0xf5,0xd3,0x43,0xd9,0x0d,0xd0,0x87, - 0x30,0x1c,0x60,0x05,0xbf,0x61,0x6e,0x0a,0xa2,0x2f,0x3e,0x20,0x91,0xaf,0x3c,0x50, - 0xb2,0x33,0x33,0x39,0xdb,0x39,0xb5,0x10,0xa1,0xe4,0x4f,0xb2,0x90,0x94,0x09,0x49, - 0xa6,0x4f,0xa2,0x8a,0xbd,0x83,0xa7,0x72,0x7e,0x2f,0xc0,0x9c,0x16,0xd3,0xc1,0x44, - 0xee,0x45,0xba,0x04,0x90,0x27,0x13,0x0c,0xb3,0x99,0x73,0xbc,0x48,0xb7,0x37,0x37, - 0xf9,0xe9,0x79,0xba,0xdd,0xcc,0x8b,0xe2,0x04,0xe8,0xf1,0xf9,0xb7,0x16,0x45,0x8a, - 0x32,0x4d,0xb7,0x9f,0x2d,0x97,0xd6,0xeb,0xee,0x4e,0xbc,0x17,0x06,0x79,0x02,0xb2, - 0xe4,0x8f,0x2d,0xb6,0x65,0xf0,0xb7,0xe3,0xa0,0x64,0x86,0x3d,0x0a,0x74,0x26,0xcf, - 0x9e,0x3e,0xdb,0x79,0x8a,0x13,0x03,0x64,0x72,0xbf,0xb3,0x8b,0x65,0x03,0x42,0x2e, - 0x95,0x5d,0x15,0x31,0x39,0x57,0x63,0x6e,0xe6,0x76,0x49,0xc2,0xa5,0x72,0x3b,0x49, - 0x32,0xb5,0x54,0xc2,0xd5,0x28,0x03,0x70,0x22,0x37,0x24,0xf3,0x5c,0xe0,0x97,0xcb, - 0x47,0xfc,0x41,0x57,0x01,0x92,0xae,0x4b,0x8e,0x47,0xa5,0xd6,0x31,0x2d,0x32,0x5e, - 0xd5,0x1a,0x6d,0x3c,0xa9,0x74,0x18,0x33,0xb7,0xc7,0xc4,0xe9,0x3d,0xa9,0xf2,0x38, - 0x6e,0x89,0x8b,0x72,0xb4,0x6d,0x89,0xc2,0x9c,0x95,0x44,0xa4,0x60,0x70,0x19,0x55, - 0x6a,0x16,0x2f,0x15,0xad,0xb3,0x57,0x4a,0x6c,0x35,0x63,0xaf,0x9c,0xd9,0xad,0x57, - 0x42,0x55,0x53,0xf9,0x19,0xb9,0xa1,0x9c,0xbc,0x6b,0x9b,0xd1,0x19,0x0c,0x3c,0xfb, - 0xb9,0x4d,0x6b,0x7f,0x1e,0xe1,0x52,0xf0,0x83,0x1b,0x38,0x6f,0x9c,0xf5,0x0d,0x2d, - 0x54,0x9a,0x06,0x33,0x3c,0x4f,0x4d,0x86,0x54,0xdd,0xc4,0x17,0x83,0xe7,0xde,0xb6, - 0x30,0x67,0x63,0x96,0xdb,0xf3,0x75,0xa7,0xa9,0x06,0x22,0x96,0x3c,0xbe,0x9b,0xf8, - 0x35,0x79,0x35,0x2b,0xc8,0xb6,0x7d,0x7f,0x71,0xb7,0x15,0x26,0x30,0xa7,0xe8,0x8b, - 0x01,0x86,0x49,0xc9,0x9a,0x26,0xe6,0x11,0xb7,0xbe,0x25,0x61,0x3f,0x52,0x96,0x01, - 0x42,0x2f,0x1f,0x05,0x35,0xc3,0x75,0x63,0xfe,0x8e,0x29,0x95,0x0b,0x69,0x5c,0x8e, - 0xe7,0x44,0x9f,0x87,0x9d,0x81,0x90,0xae,0x63,0x35,0x8d,0x59,0x73,0x50,0x07,0xd8, - 0xdc,0xe4,0x64,0x6b,0xf5,0xe1,0xe0,0x70,0x26,0x1f,0xa4,0xfc,0xa9,0xe9,0xa7,0x67, - 0xcf,0x3c,0xdc,0xeb,0xe8,0x0f,0xcf,0x3e,0x91,0x5d,0x5a,0xc2,0xa4,0x24,0x86,0x68, - 0xab,0x21,0xab,0x2c,0x20,0x72,0x61,0x42,0xa6,0x3d,0xf0,0xd0,0xd6,0xf2,0x63,0x57, - 0x88,0x3f,0x76,0x3b,0x70,0xc5,0xf0,0x33,0xdb,0xed,0x68,0x0b,0x86,0x07,0x57,0x98, - 0xec,0x46,0x79,0x96,0xad,0xcc,0xf2,0x5b,0x9f,0x05,0x58,0xf0,0x05,0x7c,0x7c,0x42, - 0x9e,0x23,0x47,0x38,0x86,0x82,0x9a,0xa0,0x3f,0xfc,0x4c,0xbe,0x30,0x90,0x83,0x7c, - 0x68,0xe3,0x03,0xc7,0x8c,0x15,0xd7,0x15,0x8c,0x3c,0x7c,0x4d,0x8d,0x29,0x41,0x10, - 0x70,0x34,0x45,0xc8,0x3b,0xc3,0xd3,0xab,0x21,0x7b,0xd5,0x05,0xef,0xdc,0x08,0xe1, - 0x12,0x30,0x51,0x43,0x28,0xf2,0xc9,0x16,0x9b,0x54,0xf4,0x1a,0xee,0xae,0xd0,0x5a, - 0x44,0xc8,0xa8,0x9d,0xa6,0xd0,0x82,0x93,0x61,0x97,0x2e,0x0e,0x56,0xd9,0x74,0x4d, - 0x8f,0xad,0x15,0x15,0xe0,0xd2,0x5c,0x5e,0xde,0x15,0x13,0xc8,0xb4,0x41,0x71,0x0e, - 0x6b,0x61,0x82,0xce,0xd6,0xe8,0xde,0xc8,0x43,0x76,0x26,0x0f,0xa7,0x33,0x6f,0x8e, - 0x30,0x7b,0xbd,0x88,0x1f,0x75,0x9b,0xc7,0xe2,0x84,0x2e,0x03,0xa4,0x35,0xb2,0xc7, - 0xb5,0x6e,0x07,0x70,0xf3,0xdb,0xc0,0xd6,0x73,0x83,0x9e,0x19,0x2a,0xe5,0xcc,0x4a, - 0x55,0x71,0x0a,0x6c,0x30,0x79,0x06,0x21,0xa7,0xb2,0x0e,0xa6,0x5c,0xe8,0xc5,0x6e, - 0x91,0xb1,0x60,0x91,0x7d,0x80,0x51,0x4f,0xa6,0xa7,0x6d,0xe9,0xeb,0xc4,0xbf,0x7c, - 0x55,0x23,0xcf,0x7a,0xd9,0x42,0xf6,0x0e,0x92,0xc4,0xc6,0x24,0x8a,0xe5,0xbe,0xfd, - 0x86,0x6b,0x2e,0xb5,0x60,0x0b,0x83,0x43,0x3a,0xc5,0x40,0x87,0x2e,0x1c,0xbd,0xc5, - 0x6d,0xe7,0x83,0x86,0xfc,0xa7,0x83,0x48,0x6d,0xd4,0xcb,0x95,0x6d,0xca,0x9c,0xbe, - 0x4c,0xed,0x0d,0x40,0x72,0x9d,0xea,0xe1,0x0e,0xd1,0xc9,0x95,0x34,0x4b,0x79,0x7f, - 0x57,0xe0,0x9e,0xbd,0xca,0x58,0x15,0x19,0x08,0x9b,0x24,0x42,0xcc,0x57,0x3a,0xe9, - 0x3c,0xaa,0x71,0x86,0x2f,0xf4,0x01,0xed,0x83,0x6f,0x9b,0x9b,0xf8,0xe3,0x5e,0x99, - 0x00,0x0c,0x85,0x17,0x0d,0x79,0xcd,0x06,0xc6,0x9f,0x5e,0xe4,0x98,0x65,0x95,0xc6, - 0x55,0xd2,0xb5,0xff,0x6a,0xe3,0x43,0x3d,0xc3,0xd3,0x4c,0xda,0xb9,0xd7,0xe7,0xd1, - 0xb9,0x51,0xce,0xa1,0x4a,0x5d,0x7e,0x7d,0xb5,0x73,0xfb,0x3c,0x2f,0x12,0xe2,0x9a, - 0x09,0xe7,0xb4,0x21,0xd0,0xb2,0x44,0xf7,0x32,0x07,0xc6,0x86,0xe6,0xb8,0x14,0x8c, - 0xee,0x24,0x59,0x0f,0xe9,0x45,0xa2,0x5b,0x27,0x74,0x65,0x0e,0x78,0x14,0x29,0x35, - 0x9b,0x9b,0xfa,0xd8,0x10,0x0c,0x5c,0x77,0x3d,0xb2,0xd4,0x5c,0x54,0xe9,0xec,0xf3, - 0xf8,0x54,0xe2,0x3c,0x8a,0xf1,0x00,0x9b,0x63,0xe8,0x12,0xf0,0x54,0x77,0x21,0xba, - 0x2b,0xf1,0xb6,0x34,0xed,0xce,0xd9,0xcf,0x90,0xd0,0x94,0xaf,0x30,0xf8,0xdd,0x86, - 0xc1,0x6f,0xaa,0x16,0x40,0x6c,0xf9,0xbb,0x90,0xd5,0x07,0xf5,0xf8,0x1f,0x69,0x4a, - 0xce,0xa2,0xaf,0xdc,0x11,0x91,0x0c,0xe2,0x76,0x25,0x90,0x8e,0x0e,0x86,0xb9,0x63, - 0xb2,0xdf,0x93,0x9a,0x15,0x30,0x43,0x48,0x60,0x26,0xba,0x5a,0x05,0xe5,0x88,0x9c, - 0x76,0xd9,0x36,0x40,0x05,0x8d,0xec,0xec,0xdd,0xe5,0x52,0x25,0x77,0x16,0x1b,0xc7, - 0xf9,0x61,0x48,0x98,0xd8,0xc7,0x22,0x55,0x36,0x13,0x53,0x54,0x67,0x70,0x2b,0xa3, - 0x95,0xce,0x55,0x9c,0xe9,0xfa,0x71,0xcd,0x7c,0xaf,0x3d,0x6e,0xe0,0x9b,0xbb,0xf2, - 0xa9,0x06,0x93,0x93,0x14,0x86,0xd4,0x16,0x8d,0xc4,0x5c,0x85,0x17,0x2d,0xcb,0xa5, - 0xbe,0x8d,0xf5,0xa5,0xe8,0x7d,0xbe,0x49,0x7a,0x31,0x19,0x43,0x80,0x24,0xb9,0x62, - 0xe1,0x3a,0xb5,0x15,0x12,0xf1,0xc2,0x57,0x03,0x18,0x2b,0x20,0x47,0x63,0xc0,0x5b, - 0x42,0x60,0x58,0xb7,0x1a,0xb8,0xc4,0xb5,0x20,0x45,0x63,0xd6,0x04,0xa4,0xb9,0xa0, - 0xd3,0xc7,0x58,0x3b,0x92,0xa6,0xda,0x47,0x68,0xa8,0x0d,0xa7,0x79,0x07,0x5a,0x71, - 0x65,0x3b,0x79,0x6d,0xed,0xd4,0x5a,0x8a,0xd2,0x5b,0x01,0xdc,0x13,0x39,0x02,0x1f, - 0x8b,0xb0,0x47,0x8e,0x92,0x12,0xd0,0x29,0x7c,0xe8,0x64,0xfd,0x1f,0xc9,0x85,0x50, - 0x64,0xb7,0x0d,0xc8,0xd6,0x56,0x23,0x15,0xa9,0xb3,0x4a,0x19,0x64,0x70,0xe4,0x87, - 0x4b,0xed,0x11,0x8e,0x51,0x37,0x37,0x3b,0x67,0x2f,0xd2,0xe6,0x5e,0xf8,0x7f,0x61, - 0x39,0x27,0x56,0xef,0xb8,0xab,0xd8,0x8b,0x28,0xc4,0xcd,0x16,0x20,0x6a,0xdb,0x71, - 0xbc,0x85,0x0d,0x62,0x2d,0xfc,0x5f,0x41,0x0f,0x41,0xb9,0x02,0x0e,0xca,0x15,0xb6, - 0x8c,0x76,0x58,0x6d,0x67,0x7c,0x9b,0x14,0xbe,0x2d,0xe4,0x9a,0xa4,0xe8,0xd6,0x1a, - 0x96,0x29,0x73,0xbe,0xc2,0xd7,0xf6,0xb5,0x45,0x96,0xa5,0x36,0x14,0xa0,0x80,0x24, - 0xcb,0x51,0x9a,0xce,0xec,0xeb,0x5c,0xf1,0x83,0xa6,0x3b,0x1f,0xb1,0x6a,0x11,0x4f, - 0x09,0xf8,0xd5,0x18,0x66,0xaa,0x60,0x44,0xcf,0x46,0x4d,0xb9,0x06,0xbd,0x44,0xd5, - 0xdd,0x71,0x19,0x95,0x28,0x15,0xfc,0x0d,0xbe,0x68,0xf4,0x5c,0x68,0xd6,0x30,0xb9, - 0xc3,0xc6,0xfe,0x5a,0x7b,0x5c,0x2d,0x48,0x27,0xac,0x71,0x9a,0x60,0xed,0xa0,0xaa, - 0x86,0x89,0x45,0x13,0x0d,0x16,0x1d,0x21,0x4e,0x71,0x05,0x10,0x9e,0x94,0x26,0x4f, - 0x7b,0x55,0xd6,0x7b,0x29,0x5d,0x0a,0xf1,0x20,0xca,0x26,0x32,0xc9,0xe9,0xca,0xcd, - 0x2f,0x51,0xa6,0x3a,0xd5,0x35,0x3a,0x32,0x7a,0xfd,0x5c,0x2a,0xc5,0x4d,0x56,0x0f, - 0x5b,0x55,0x50,0xaa,0x62,0xca,0xe5,0x4c,0xc8,0x89,0x80,0xd3,0xcb,0x65,0xb9,0x41, - 0x30,0x16,0x05,0x7c,0x75,0x4a,0xc3,0xbf,0x1b,0x53,0xb3,0xc0,0x98,0xdd,0xb1,0x6b, - 0x4c,0x72,0x31,0x81,0x58,0x25,0x63,0x08,0x70,0x5e,0x3c,0x41,0x3f,0xdc,0x90,0x28, - 0x6f,0x0d,0xe3,0xcc,0x30,0x97,0xa0,0x69,0x7d,0xbb,0xfd,0x61,0xff,0x87,0x57,0xef, - 0x3e,0xbd,0xff,0xf0,0x12,0x66,0x8a,0x87,0x15,0x22,0x37,0x19,0x30,0xe3,0x72,0xe5, - 0x9a,0x29,0xc7,0xf0,0x61,0x1a,0x83,0xc0,0x78,0x94,0x0e,0x78,0xee,0x13,0x96,0x8e, - 0x5e,0xa4,0xaa,0x2c,0x18,0xc5,0xad,0x28,0xaf,0x8b,0x23,0xa8,0xf6,0x42,0xa2,0x3f, - 0x6c,0x71,0x26,0x55,0x32,0x59,0x8a,0x75,0xe2,0x8e,0x77,0xcd,0xd5,0x56,0x4a,0x6e, - 0x6e,0x16,0x4b,0x2a,0xfb,0xb9,0x50,0x94,0x61,0x0f,0x11,0xfb,0x6a,0x5d,0x5f,0x19, - 0x6e,0x7f,0x3d,0x49,0xb5,0x1b,0xae,0x1f,0xe2,0x8c,0x66,0xbd,0xba,0xfc,0xd1,0x2a, - 0x21,0x40,0xe4,0x4a,0x21,0x7c,0xa4,0x60,0x2a,0xbf,0xa2,0xbf,0x7b,0x0a,0x5a,0xf7, - 0xbb,0x6e,0x3e,0xc0,0x9c,0xca,0xfe,0xeb,0x9e,0x15,0x49,0x67,0x73,0xde,0x68,0xad, - 0xae,0x95,0xa9,0x58,0xec,0x39,0x3c,0x51,0x3a,0x3d,0xc9,0xe2,0x96,0xc3,0x49,0xf6, - 0x8b,0x96,0xa2,0x2a,0xc7,0x12,0x82,0x52,0x31,0x77,0xae,0x51,0x57,0x69,0xf2,0x59, - 0x88,0x12,0xcb,0xd6,0x90,0x6a,0xe7,0x92,0x4e,0x2e,0x73,0xcd,0x74,0xfa,0xd7,0x41, - 0x36,0x20,0x0d,0xc9,0x23,0x8c,0x21,0xb1,0xc7,0xb4,0x17,0xa2,0x12,0xc2,0x29,0x73, - 0x2f,0x2b,0x88,0x37,0x9f,0xca,0x25,0x2b,0x5f,0x1d,0x4e,0xc6,0x88,0x38,0xb4,0x59, - 0xa0,0xb7,0xf2,0xd5,0xc7,0xa5,0xfd,0xf5,0xb8,0x16,0x8d,0x49,0xe7,0xb5,0x17,0x8a, - 0xc3,0x9d,0xb0,0x95,0x3f,0x65,0xa5,0x1b,0x54,0x96,0xaf,0x9f,0x85,0xb5,0x2d,0x2c, - 0x6f,0xd4,0x64,0x2b,0x4d,0x43,0x53,0x9f,0xcd,0xb5,0xea,0xd0,0x38,0x08,0xea,0xf7, - 0x68,0x1d,0x6e,0xc6,0xd4,0xe1,0xeb,0x77,0x47,0x64,0xc3,0xfd,0xfa,0xe5,0xdb,0x74, - 0x31,0x47,0x20,0x87,0x71,0xeb,0xc9,0x37,0x09,0xee,0xed,0xcf,0xc8,0xfc,0xaa,0xb5, - 0xbb,0xad,0xb7,0xea,0x71,0x5d,0x28,0x31,0x4e,0xe8,0xe8,0x89,0x43,0x01,0xb4,0xbe, - 0x7b,0x8a,0xcb,0xfa,0xbd,0x01,0xf9,0x4a,0x42,0xe2,0x9d,0x61,0xeb,0xfb,0x5f,0x8e, - 0x3e,0x1d,0xfd,0xfd,0xfd,0xcb,0xc3,0xf4,0xf8,0xb8,0x99,0x84,0x1f,0x5e,0xfe,0x3b, - 0x56,0xe2,0xc7,0xdb,0xf4,0x74,0xf8,0xfe,0xdd,0xdb,0xc3,0x97,0xf4,0xba,0x93,0x84, - 0x47,0x7f,0x43,0xc9,0x87,0x3f,0xd1,0xdb,0x6e,0x12,0xee,0x1f,0xfc,0x42,0x4f,0x4f, - 0xf0,0xf4,0xc3,0x5f,0x5f,0x7e,0x38,0xc2,0xcb,0xc6,0xf1,0xd3,0x24,0xfc,0xe9,0xc3, - 0xfb,0x4f,0x80,0xa4,0x6f,0xcf,0xcc,0xdb,0x0f,0x08,0x67,0x42,0xaf,0xdf,0x00,0xf4, - 0xed,0xbb,0xb7,0x9f,0xa4,0x80,0x6f,0x93,0xf0,0xfd,0xfe,0xd1,0xcf,0xf4,0xf8,0x1d, - 0x90,0x7f,0xd8,0x3f,0x78,0xc9,0x38,0xb6,0x41,0xc3,0x9b,0x5f,0x5f,0x1f,0xbd,0x7a, - 0xbf,0x0f,0xac,0x44,0x09,0x48,0x39,0x78,0xf7,0xf6,0xe8,0xc3,0xbb,0xd7,0xfc,0x0a, - 0x52,0x66,0x7d,0xae,0x59,0x8f,0xdf,0x77,0x4b,0xef,0x4f,0x9c,0x77,0x20,0x04,0x55, - 0x1f,0xf6,0x7f,0xfb,0x74,0xf0,0xeb,0xe1,0xd1,0xbb,0x37,0xe1,0xc9,0x49,0x51,0xed, - 0xb7,0xfb,0x6f,0x5e,0xfe,0x90,0xf7,0x3c,0xf8,0xf1,0x40,0xbf,0x8c,0xc8,0x4a,0x0e, - 0xed,0xa8,0x5c,0xa9,0x90,0xa3,0xdc,0x54,0xd3,0xe3,0x6d,0x3a,0x36,0x2d,0xca,0x8a, - 0x15,0xe3,0x31,0x7d,0x43,0x17,0xe3,0xf0,0x62,0x07,0x18,0x16,0x51,0x7c,0x92,0x4e, - 0x8f,0x9b,0x27,0xce,0x38,0x38,0xe3,0x05,0xfa,0x1b,0x78,0x77,0x89,0xa8,0x83,0xc9, - 0x40,0x98,0xcb,0x6e,0x8d,0xd3,0x0a,0x9b,0x3d,0x86,0x68,0xe0,0xcb,0x48,0x16,0x81, - 0x73,0x96,0x37,0xcb,0x25,0xff,0xe2,0xbc,0x52,0x8f,0xbe,0x9b,0xb7,0x3f,0xe2,0x3f, - 0x85,0x31,0xde,0x39,0xf5,0xa3,0x68,0x20,0x51,0x68,0xda,0x4c,0x26,0x97,0x72,0x6e, - 0x87,0xbd,0x3c,0xfa,0x1d,0x3a,0x5c,0x52,0x35,0xff,0x61,0x81,0xa7,0xd4,0x21,0x0b, - 0xbd,0x0a,0x25,0xc9,0x98,0xa6,0x1d,0xbe,0x0d,0xfd,0x8f,0xe3,0x26,0x2c,0x15,0x6b, - 0x5f,0xc9,0xe5,0x65,0x00,0xc6,0xf1,0xd8,0xac,0x0d,0x5f,0x8d,0xf9,0x3d,0xc1,0x12, - 0x4e,0x25,0x1b,0x25,0xb8,0x1c,0xa2,0x49,0x45,0x39,0x88,0xac,0x05,0x37,0x3d,0x50, - 0x73,0x9c,0x3a,0x7e,0xde,0x5c,0x2e,0xc7,0x2f,0x60,0x39,0xb5,0x00,0x55,0x66,0xc9, - 0x65,0xaa,0x79,0xb7,0x41,0x15,0x5c,0xa6,0xd1,0xf6,0xf3,0xe7,0xa4,0x2f,0xb3,0x94, - 0x39,0x93,0xcb,0x3d,0xfa,0xd6,0xca,0xb9,0x74,0x57,0x6e,0x8f,0x23,0x30,0x3a,0x22, - 0x10,0x96,0x82,0xfc,0x04,0x2e,0x1a,0x70,0xe1,0x22,0xb3,0xbb,0x6d,0x7f,0x95,0x0f, - 0x86,0xd7,0x72,0x7a,0x8f,0x0b,0xfe,0x64,0x36,0xef,0xde,0xf4,0xdc,0x7e,0xc6,0x1b, - 0x3e,0xc9,0xba,0x49,0x04,0x0e,0xe2,0x18,0xb0,0x8d,0xe9,0x55,0x76,0x11,0x0d,0x94, - 0x50,0xca,0x2f,0xf7,0x32,0x93,0x92,0x58,0xc9,0xf2,0x0d,0xe0,0xcf,0xf3,0xd1,0x30, - 0x1a,0x24,0x67,0x09,0x19,0x06,0x24,0x7c,0x93,0x3e,0x21,0x8d,0xa0,0x5e,0xfc,0x7c, - 0xec,0x78,0x89,0x0d,0xb2,0xb3,0xfa,0xe3,0xda,0x59,0xed,0xb1,0xba,0x87,0x7d,0x5c, - 0xe3,0xdf,0xda,0xe3,0x4a,0xe7,0xe3,0x8f,0x6b,0xf4,0x0b,0x70,0xc7,0x07,0xfe,0xe3, - 0xda,0x00,0xbb,0x2d,0xc6,0xf3,0x60,0x3f,0xd6,0xbe,0x47,0x3d,0x14,0x1d,0x11,0xa9, - 0x7b,0x0e,0x89,0x94,0x42,0x9f,0xe8,0x17,0x44,0xb1,0x77,0x92,0xc7,0xad,0xc7,0x8f, - 0x63,0x7d,0x71,0xaf,0x0c,0x5b,0xfb,0x5c,0xc3,0x0b,0xe9,0xa5,0x30,0xd5,0xe8,0x67, - 0xa9,0x8e,0x60,0xba,0x1e,0xeb,0x8c,0x5e,0x65,0x0f,0xd7,0x5a,0x5d,0x4c,0x5f,0xae, - 0xf7,0xf1,0x3e,0x85,0xf3,0x16,0xae,0x7d,0x28,0xaa,0x70,0xbc,0xd1,0xa0,0x26,0x86, - 0x06,0xc6,0x4d,0x5d,0x9e,0x10,0xd0,0xc3,0x36,0x1e,0xd4,0xf1,0x92,0x30,0xdc,0xbd, - 0x6e,0xbb,0xb2,0x99,0x4c,0x57,0xd4,0x76,0xe2,0x0d,0xbd,0xa1,0x2a,0x53,0x54,0x1b, - 0xc0,0x5e,0x19,0x36,0xd6,0x6b,0x2c,0xc1,0xc6,0x59,0xb8,0x28,0xad,0xf0,0x39,0x71, - 0x9b,0xb9,0xa5,0x1c,0xf6,0x60,0x3a,0x20,0x63,0x9d,0xab,0xcb,0xe1,0xf8,0x52,0x19, - 0x84,0x05,0x80,0xf0,0xa8,0x85,0x31,0xc2,0x31,0x40,0xd4,0xd7,0x19,0x63,0xfe,0x13, - 0x88,0x0a,0xef,0xc2,0x0e,0x2a,0xc7,0xe9,0x10,0x32,0x5c,0x8d,0x5c,0x87,0x66,0x0c, - 0xe4,0x77,0xae,0xdf,0x2e,0x06,0xa7,0x14,0x06,0xe8,0x33,0x4d,0xc8,0x4c,0x87,0xd1, - 0x67,0x9b,0xc8,0x49,0x85,0x87,0x29,0x89,0x92,0xd4,0x08,0xac,0x78,0x7d,0x70,0x46, - 0x96,0x47,0x10,0x32,0xba,0xee,0xce,0x8d,0xe4,0xcb,0xda,0x12,0xe5,0x88,0xd3,0xd5, - 0xb6,0x8b,0x31,0x8f,0x69,0x0e,0x17,0xe1,0x42,0xce,0xa3,0x79,0x4d,0x09,0x01,0x2f, - 0x6e,0xa3,0xc1,0xfd,0x1c,0x49,0x1e,0xa8,0x49,0x3d,0x3d,0xfb,0x5d,0xde,0x57,0xef, - 0xb8,0x7b,0xbb,0xaf,0xd2,0x50,0x9a,0xbb,0x7a,0xe7,0x94,0x6f,0x17,0x06,0xe9,0x85, - 0xae,0xd8,0x56,0x58,0x9c,0x6f,0xc5,0xc7,0xdb,0x32,0x55,0xd2,0x7d,0x50,0x64,0x28, - 0xb4,0x9e,0x24,0x82,0x44,0x1d,0x40,0xdf,0x44,0xfc,0x59,0x73,0x8b,0x35,0xb7,0x5d, - 0xe8,0xbe,0x80,0x40,0x7d,0x7f,0x32,0x42,0xba,0x8e,0xae,0x6a,0xc2,0x4f,0xbb,0xb4, - 0x4c,0xef,0xea,0x51,0x68,0x21,0x3f,0x75,0x8a,0xc1,0x57,0x2e,0x89,0xe6,0x99,0x38, - 0xc6,0xd4,0xdc,0x2c,0xcc,0x0e,0xd0,0x3d,0x52,0xbf,0x78,0xd4,0xc4,0xf4,0x1c,0x33, - 0xa5,0xe2,0x29,0xc6,0x3f,0x67,0xb9,0xe7,0xc8,0xff,0x3d,0x92,0xfc,0xa6,0xd3,0x84, - 0x2d,0x15,0xfe,0x7b,0xa1,0xb4,0x9b,0x76,0xa2,0xb0,0x55,0x9e,0x4b,0x84,0x0c,0x0a, - 0x44,0xee,0x30,0xf2,0x4c,0x8a,0xa6,0x0f,0x31,0xfd,0x59,0xbd,0xcf,0xb4,0x1a,0xcc, - 0xd9,0x7f,0x71,0x25,0x57,0x89,0xc5,0x03,0x5e,0x98,0xf6,0x30,0x4b,0x70,0x3b,0x2d, - 0xac,0xd9,0xff,0xcb,0xdb,0x83,0x08,0x2f,0x9a,0x24,0x96,0x39,0x77,0x65,0x93,0x14, - 0xad,0x21,0xd2,0x29,0x04,0x7a,0xed,0xae,0x50,0xd1,0x97,0x99,0xe6,0xde,0x9e,0x57, - 0xeb,0x87,0xea,0x6e,0x7d,0x91,0x1f,0xe6,0x51,0x21,0x8e,0xe6,0x0e,0xef,0xfe,0xb0, - 0x71,0x59,0x66,0x9d,0x37,0x64,0x7a,0x84,0x70,0x31,0xc9,0xe0,0xd0,0x88,0x13,0xb8, - 0xa7,0xd3,0xbb,0xd3,0xd3,0x2f,0x30,0xe7,0xf0,0x9e,0x6f,0xbd,0x72,0x97,0x61,0xd9, - 0xad,0xca,0xe3,0x4a,0xc7,0xe9,0xf5,0x80,0x7e,0x83,0xba,0x7a,0x3f,0x7f,0xdc,0xb6, - 0xae,0xe1,0x55,0x2e,0x3f,0x09,0x5b,0xad,0x8c,0x0e,0x0c,0x22,0x87,0x47,0x53,0xbe, - 0xa1,0x11,0xd3,0xac,0x54,0x4a,0x28,0x0a,0x20,0x1e,0x55,0xe3,0x38,0xe5,0x83,0xbf, - 0xf0,0x85,0xf9,0x6d,0x34,0x1a,0x36,0x55,0x54,0x61,0x64,0xb1,0xa5,0x2a,0xd5,0x53, - 0xa4,0x36,0x3d,0x4a,0x9f,0xf1,0xe7,0x1a,0x76,0x1b,0x09,0xdf,0x84,0x80,0x09,0x18, - 0x04,0xc2,0xdc,0x13,0xd4,0x5e,0x44,0x08,0x66,0x81,0x2e,0x4e,0x2a,0x82,0x53,0x31, - 0x2a,0x61,0x15,0xd5,0x97,0x2b,0x05,0xdc,0x06,0xb4,0x28,0xa0,0xbc,0x66,0x0a,0x79, - 0xeb,0x14,0x26,0x6a,0xfc,0x8d,0xc7,0xfd,0xd3,0x53,0x72,0x14,0x98,0x7f,0x09,0xe3, - 0x8a,0x6c,0xf9,0x46,0x0b,0xdf,0x49,0x4a,0xe0,0xe7,0x57,0x4d,0xa9,0xce,0xa1,0x05, - 0x38,0x8f,0xef,0xf5,0xb1,0x3a,0x97,0xd9,0xb8,0x15,0xa5,0x1c,0xf2,0x3b,0x77,0xc9, - 0x95,0x05,0x4d,0x66,0xf4,0x4d,0xc2,0x24,0xa0,0x08,0xf3,0xde,0x0c,0x40,0x33,0xdf, - 0x03,0xd4,0xf0,0x4c,0x80,0xe4,0x78,0xc5,0x1d,0x13,0x3a,0x2e,0x33,0xb8,0x7f,0xfd, - 0xf0,0xba,0x12,0x2f,0xef,0x1c,0x0b,0x4a,0x8e,0xe8,0x35,0x98,0xf7,0x47,0x53,0x3a, - 0xb8,0xa5,0x72,0x0a,0x7f,0xc6,0x59,0x2b,0x58,0x90,0xc9,0xf8,0x5d,0xb0,0x30,0x0e, - 0x1a,0xf1,0x00,0x69,0xc9,0x3f,0xc4,0xd5,0xbb,0xca,0x02,0x64,0x47,0x6a,0xf1,0xf4, - 0xdf,0x7e,0x3b,0x0a,0xac,0xd4,0xfc,0x12,0x76,0x50,0xb7,0xc2,0x5d,0x50,0x4b,0x6c, - 0x11,0x47,0x03,0xbe,0x1c,0x0a,0xc4,0x15,0xcb,0xc1,0x0d,0x67,0xe1,0x48,0xdc,0xb3, - 0x2e,0xef,0x53,0x6f,0x76,0xa4,0x80,0x7f,0xc0,0x42,0x39,0x12,0x5a,0x55,0xfa,0xe3, - 0x5f,0xa7,0x45,0xa4,0xba,0x42,0x94,0x45,0x96,0x8e,0x07,0x95,0xa1,0xd5,0xb3,0xa5, - 0xe9,0xba,0x2f,0x87,0xfe,0xec,0x24,0x78,0x2a,0xbb,0x3a,0xe3,0xe3,0xfc,0xd4,0xf5, - 0xd2,0x1c,0x89,0x6d,0x64,0x82,0xc6,0xe6,0xcd,0x63,0xfb,0x1e,0x51,0x02,0xaa,0x8c, - 0x80,0xc0,0x54,0xc6,0x72,0x82,0x32,0x4e,0x73,0x49,0xcd,0x17,0xda,0x53,0xf3,0x59, - 0x85,0xc3,0x5e,0xfe,0xd0,0x8a,0x00,0xbc,0x87,0x7f,0x0d,0x86,0x6b,0xc9,0x5e,0xb3, - 0xf0,0x45,0xf6,0xa6,0x33,0xcd,0xb5,0x14,0x0c,0x41,0x48,0x64,0x7c,0xa9,0xca,0x42, - 0x3f,0x50,0x0a,0x35,0x28,0x36,0xb5,0x9a,0x26,0x05,0x25,0x1b,0xf9,0xd8,0x59,0x0f, - 0x9e,0x43,0x55,0xa1,0x10,0x5d,0x88,0x8f,0x9a,0x86,0x83,0x9f,0xcc,0xdd,0xde,0x4f, - 0xce,0xbb,0xa5,0xff,0xc5,0xcc,0x5e,0x2d,0xaa,0xd3,0xa3,0x7c,0xdb,0x7d,0xe7,0x5a, - 0x83,0x0a,0x4b,0x2a,0x26,0xb0,0x33,0x99,0x26,0x6e,0xaa,0x57,0x29,0xd8,0x12,0x84, - 0xb5,0x33,0xee,0x42,0x37,0xf1,0xcd,0xea,0x93,0x57,0x29,0xe0,0xf8,0x4c,0x4c,0x00, - 0xd7,0x1f,0x8f,0x88,0xfe,0xea,0x9e,0xf3,0x91,0x64,0xe4,0xa9,0x4f,0x37,0x37,0x71, - 0x51,0x11,0x09,0xeb,0x57,0x90,0xd2,0xed,0xcc,0xa5,0xc5,0x8d,0x63,0xfb,0x3c,0x33, - 0xb1,0xce,0x2d,0xfd,0xb3,0x41,0x9e,0x72,0xab,0xce,0x44,0xf9,0x43,0xc2,0x77,0x1d, - 0xe3,0x55,0x6a,0xfe,0x29,0xb1,0x52,0x47,0x27,0x3e,0x78,0xab,0x56,0xaa,0x0d,0x8f, - 0xc3,0x8a,0x85,0x92,0x8b,0x29,0x61,0xb0,0xb6,0x28,0x30,0xd7,0x70,0x92,0xef,0x5e, - 0x57,0x31,0xb2,0x5b,0xf0,0x31,0x27,0x64,0xcf,0x4b,0xa1,0xe3,0x07,0xdd,0xf6,0xe0, - 0x04,0xa2,0xc5,0xe3,0x96,0x65,0x4e,0xd7,0x15,0x16,0xe4,0x96,0x36,0xed,0x2a,0x85, - 0x94,0x41,0x55,0x37,0x2d,0x3a,0x01,0x4e,0x19,0x04,0x7b,0xd0,0x04,0x2b,0x55,0xf3, - 0x02,0x66,0xe5,0x2a,0x22,0x4b,0x6c,0x75,0xef,0x5f,0xcd,0x7f,0xf1,0xfa,0xd0,0x5a, - 0xae,0xa3,0x74,0x62,0xe1,0x9a,0xa5,0x69,0xe9,0xe6,0x2f,0xd9,0x4c,0xfc,0x38,0x21, - 0x0f,0x51,0xd0,0x52,0x25,0xa3,0x8c,0x94,0xdf,0xd5,0x06,0x18,0x42,0x39,0x3e,0x38, - 0xbc,0xc2,0x84,0x94,0xae,0x37,0xc6,0x00,0x44,0x8c,0x7f,0x6a,0x8e,0x21,0xdc,0x51, - 0xb7,0x8c,0xa2,0x10,0x14,0xcf,0x8c,0x51,0x48,0x7b,0x4b,0xea,0x3e,0xa7,0x66,0xfc, - 0xbd,0x25,0xa1,0x18,0x12,0x3a,0x3a,0xb6,0x84,0x5e,0x29,0x9c,0x5c,0xa2,0x11,0xf8, - 0x9e,0x73,0xfb,0xd4,0xd9,0x44,0x80,0xfc,0xf6,0x46,0x05,0x31,0xc6,0xf9,0x61,0xdc, - 0xa0,0x80,0x67,0xe3,0xde,0xc1,0x05,0x16,0xa1,0xd1,0xa9,0xbb,0x32,0x25,0x1d,0xb4, - 0xe1,0x54,0x16,0x01,0xe3,0xac,0x93,0x10,0x67,0x99,0x52,0xb4,0x3d,0x14,0x1b,0xac, - 0x8c,0xaf,0xd6,0x9d,0x67,0x10,0x6c,0x96,0x9a,0x39,0xe1,0x8c,0xdc,0x8d,0xd2,0x2d, - 0x1d,0x9d,0xa2,0xaf,0xeb,0xc4,0x7b,0x9a,0xf3,0xb8,0x73,0xa2,0x8a,0xc3,0xbd,0x66, - 0x6b,0x3b,0x6e,0xed,0x48,0xff,0xeb,0xfa,0x19,0xbb,0x76,0xc6,0xae,0x9f,0x51,0xad, - 0xa8,0xd0,0x65,0xba,0xcb,0x65,0xa7,0xc1,0xf1,0x94,0xfa,0x38,0x75,0x42,0xef,0xec, - 0x23,0x3b,0xaa,0x5b,0x6d,0x04,0x6d,0xea,0x47,0xc7,0xe7,0xf6,0xd9,0xba,0x34,0x13, - 0x5d,0xd5,0x4f,0x09,0xa4,0x65,0xc0,0x8c,0xab,0x42,0xc3,0xa2,0xcd,0x4d,0xfe,0x69, - 0x18,0xe3,0x33,0x58,0xc2,0x46,0x4e,0x24,0xb6,0xb1,0x70,0xae,0xf8,0x30,0xbd,0xf1, - 0xd2,0xdd,0x8b,0x79,0xe5,0xaf,0xee,0xdd,0x66,0xf7,0xa3,0x7f,0x91,0xd9,0x06,0x88, - 0x89,0x70,0xa1,0x8c,0x95,0xaf,0x4c,0xb7,0xdd,0x7e,0x02,0x28,0x27,0x1f,0xb4,0xc1, - 0xc4,0x19,0xb4,0x95,0x2b,0x5e,0xc8,0xe1,0xc0,0x5b,0xd9,0x75,0xce,0x27,0xc6,0xd3, - 0x50,0xac,0xda,0x4f,0x62,0x90,0xf1,0xc8,0xa7,0x4e,0xed,0xda,0x82,0x81,0x12,0xf9, - 0xaf,0x75,0xc4,0xc1,0xde,0x17,0x4a,0x9e,0x17,0x36,0xf4,0xbe,0xbd,0x1a,0x98,0x25, - 0x84,0xc2,0xbf,0x71,0x0f,0xef,0xf4,0x43,0x78,0xd2,0xbf,0x1a,0xd2,0x76,0x2f,0x69, - 0xe2,0x7f,0x42,0x90,0x70,0x21,0x89,0x54,0x06,0xf7,0x10,0xee,0x73,0xf3,0x91,0xba, - 0x6e,0x3e,0x3c,0xc2,0xf4,0x54,0x9d,0x37,0x9d,0xf1,0x69,0x97,0x15,0xf5,0x09,0xa7, - 0x69,0xcd,0x19,0xa3,0xed,0x98,0x11,0x1a,0x62,0xfb,0x7d,0x7b,0x17,0xa5,0xae,0x47, - 0xcf,0x28,0xa8,0x25,0x00,0xf9,0x20,0x6b,0x33,0xff,0x68,0xd1,0x64,0x57,0x09,0x26, - 0x44,0x26,0x5a,0x55,0xdc,0x20,0x9e,0xf5,0x4d,0xe4,0xed,0xc2,0xea,0xa4,0xb2,0x5a, - 0x3c,0xbf,0x99,0xe6,0x8e,0xec,0xec,0x1c,0xef,0xa1,0xc0,0x51,0x33,0x14,0xef,0x85, - 0x2d,0x88,0x22,0x7e,0x24,0x6b,0x58,0xa0,0xcd,0x05,0xa2,0xcf,0x98,0xef,0x84,0x72, - 0xd3,0x25,0x90,0xc4,0xbf,0x0f,0x6b,0x4d,0xe5,0xf6,0x7a,0x4e,0xde,0x5b,0xa5,0x70, - 0x7f,0xcc,0x5e,0xba,0xe4,0xf8,0x2c,0x20,0xad,0x5b,0x1f,0x3d,0x5a,0x8d,0x4b,0xc5, - 0x89,0x8b,0xf1,0xed,0x3a,0xfc,0x1c,0x3a,0x35,0xf2,0x29,0xe5,0x12,0x1c,0x52,0x7d, - 0xe5,0x88,0x06,0xcd,0x30,0xa2,0xd0,0x0c,0x29,0x99,0x8a,0x52,0x4f,0x4e,0x88,0xdc, - 0xf1,0x25,0x85,0x7e,0xf1,0x65,0x85,0xff,0xdd,0x97,0x16,0xfe,0x67,0x5f,0x5e,0x08, - 0x88,0xc8,0x3b,0x14,0x0c,0xd7,0x9c,0x69,0xa7,0x07,0xeb,0xd9,0xf7,0xfc,0x8c,0xae, - 0xe5,0x50,0x6f,0x16,0x36,0x06,0x0e,0xb5,0xab,0xf6,0x3b,0x27,0x86,0xd0,0x3c,0x67, - 0xf3,0xa2,0x85,0xa6,0x3d,0x6e,0x0d,0xc9,0xe9,0xb0,0xd8,0x9e,0x7c,0x5c,0x36,0xba, - 0xcc,0xc7,0x9c,0x97,0x25,0x83,0xde,0xb0,0x9f,0x25,0x1d,0x9a,0xee,0xa5,0x0d,0x8c, - 0x4b,0x98,0x39,0x9b,0x88,0x13,0x48,0x8a,0x3f,0xec,0x00,0x8b,0x41,0x53,0xfe,0x4b, - 0xaf,0x8a,0x96,0xdd,0x8b,0xa0,0x69,0xfe,0x50,0xbf,0xe2,0x12,0x9d,0x7e,0xc5,0x29, - 0x7b,0x3c,0x48,0x7a,0x09,0xd5,0x3f,0x90,0x13,0xf7,0x0e,0x17,0x72,0xd3,0xc9,0x82, - 0x21,0xa4,0x1b,0x77,0x2f,0xa3,0x06,0x9e,0x90,0x6f,0x5f,0x78,0x7b,0x09,0x5b,0x9c, - 0xab,0x70,0x22,0xc4,0xeb,0x17,0x2b,0x8c,0x29,0xeb,0x77,0xb9,0x53,0x92,0x35,0x6a, - 0xd9,0x06,0x77,0x6b,0xc6,0x2c,0xd9,0x33,0x63,0x2a,0xac,0x61,0xa3,0x00,0x2b,0xac, - 0x5f,0x3f,0xbc,0xa2,0xd9,0x6e,0x32,0xa6,0x55,0x84,0x19,0x66,0xc9,0x42,0xcc,0xd5, - 0x5a,0x10,0x51,0xcd,0xbb,0x95,0x2e,0x66,0x19,0xfa,0x91,0x0e,0x4e,0xc3,0x1e,0x1d, - 0x7e,0xea,0x85,0x96,0x85,0x27,0x2d,0x21,0xd8,0x8e,0x6d,0x51,0xe5,0xfb,0xd6,0x1f, - 0xd9,0xcc,0x7e,0x1e,0xdd,0x5e,0x73,0xdd,0x25,0x20,0xab,0xa2,0x1c,0xde,0xd8,0xf4, - 0x78,0x8f,0xc7,0x04,0x32,0x8a,0xe7,0x4f,0xd6,0x97,0xe8,0x77,0x92,0xda,0xb6,0xdf, - 0x4d,0xa4,0xdc,0x6f,0xec,0x72,0xed,0xea,0x72,0x7f,0x5c,0xdf,0x2f,0x78,0x9c,0x50, - 0x9e,0x2c,0x6d,0xf2,0xcd,0x2e,0x89,0xe1,0x97,0x7f,0x66,0x7e,0x82,0x1a,0xf1,0x99, - 0x52,0xe1,0xc6,0x69,0x9e,0x2b,0xeb,0x2e,0xe1,0x2f,0xfa,0xdd,0x2f,0x5b,0x03,0x5e, - 0xe2,0x20,0xbd,0xc1,0x2e,0x77,0xe5,0xb6,0x0e,0x4e,0x36,0xb9,0x94,0x5a,0xcd,0xbc, - 0x9f,0xc2,0xec,0x97,0xbc,0xea,0x6a,0x3d,0xb0,0x3d,0x1a,0xf0,0x64,0xce,0xe3,0x58, - 0x6b,0x07,0x88,0x7c,0x1d,0x63,0x3e,0xd3,0x62,0x49,0x3f,0xe7,0x69,0xb1,0x6b,0x4f, - 0xa8,0xb0,0x5c,0x96,0x79,0x4e,0x53,0x19,0xc6,0xd2,0x0c,0x5b,0x46,0x0e,0x78,0xe4, - 0xc6,0x16,0x13,0xf4,0x82,0xa6,0x6c,0xef,0x56,0xf8,0x8a,0x7f,0x6c,0x8c,0x2a,0x02, - 0x4b,0xe9,0x6a,0xca,0x14,0x1d,0x86,0x98,0x31,0xba,0xab,0x73,0x5a,0xfb,0xbe,0xfb, - 0x25,0x6c,0xe5,0x05,0x17,0xfe,0xd5,0xff,0x01,0x89,0x82,0x18,0x29,0xf1,0xde,0x71, - 0x2b,0x39,0xd9,0xfb,0x98,0x7d,0xbd,0x35,0x20,0xed,0x95,0x88,0xe5,0xc2,0xb1,0xeb, - 0x4d,0x67,0x36,0x5e,0x67,0x51,0x6c,0x55,0x84,0x69,0x90,0xed,0x45,0x34,0x73,0x3a, - 0x29,0xb7,0x8a,0x98,0x4e,0x98,0x16,0x0a,0x03,0x31,0x24,0x8e,0xb2,0x58,0xe7,0xcb, - 0xa0,0x8e,0x54,0x8c,0x71,0xde,0x54,0x86,0xd6,0x91,0xf4,0x4c,0x57,0x58,0x1b,0xb6, - 0xf1,0x3b,0xb3,0x4c,0x85,0xf4,0xbe,0x89,0xf3,0x90,0x4f,0x19,0x56,0xa3,0x57,0x0a, - 0x7a,0x6d,0xfd,0x12,0x9a,0x43,0x23,0xea,0xd7,0xa2,0xd1,0x09,0xc1,0x43,0x45,0xfb, - 0x7c,0x09,0x50,0x39,0x33,0x8e,0x10,0x07,0x53,0xba,0xb6,0x71,0x94,0x07,0x51,0xa6, - 0x23,0xc6,0x7e,0xcf,0xbd,0x51,0x41,0x76,0x4b,0x88,0x5d,0xaa,0xf1,0x97,0x49,0x94, - 0x49,0xd4,0x8a,0x20,0xa3,0x30,0x2b,0xd7,0xc6,0xfa,0x25,0xb8,0xc1,0x46,0x84,0xe3, - 0x9c,0x18,0x76,0x64,0x0d,0xb8,0xb5,0x14,0x11,0x68,0x7c,0x71,0x4e,0xc9,0x22,0x2d, - 0x98,0xd0,0x6e,0x6c,0x0a,0x3d,0x89,0x39,0x33,0xeb,0xcc,0x73,0xd7,0x9e,0x09,0x95, - 0x2b,0xd1,0x68,0xf1,0x94,0x17,0xc2,0xb7,0x40,0x56,0xf0,0xd1,0x21,0x1e,0x04,0x4a, - 0x0c,0x16,0x5a,0x0c,0xc0,0x43,0xd1,0x85,0x46,0x7c,0xfe,0x3e,0xcf,0xae,0x48,0x03, - 0xf4,0x43,0xec,0xa5,0x19,0x02,0xbb,0x39,0x0b,0xa2,0x3f,0x86,0x98,0x4e,0x38,0xe4, - 0x6a,0xd0,0x21,0x1f,0x37,0x09,0x57,0x99,0xec,0x7d,0x19,0xa9,0x06,0x97,0x1e,0xf4, - 0x00,0x0a,0xbf,0x03,0x42,0xa0,0xdf,0x42,0xeb,0x09,0x54,0x5c,0x7c,0x39,0x25,0x90, - 0x36,0x83,0x03,0xe3,0xce,0x79,0x23,0x78,0x35,0xcf,0x94,0xc9,0x14,0xc7,0xe9,0xf4, - 0x33,0xe5,0x86,0xc4,0x31,0x68,0x1b,0xc1,0x6f,0xc4,0x2a,0xbe,0xb3,0x43,0xb8,0x24, - 0x73,0x62,0xa8,0x9c,0x40,0xd1,0xd4,0x36,0x37,0x69,0x30,0x42,0x30,0xf1,0x68,0x33, - 0x5c,0x65,0x04,0xad,0x85,0x4a,0x3c,0x1c,0xae,0xc0,0xc3,0xc8,0xe4,0xde,0x90,0x8f, - 0x0e,0xa7,0x85,0x4b,0x8d,0xc9,0x3c,0xd3,0xa6,0x64,0xbc,0x1d,0xe6,0xb6,0x44,0xc0, - 0xad,0x77,0x32,0xf2,0xb9,0x0e,0x8c,0xda,0xcc,0xc9,0x86,0x59,0x89,0xad,0x68,0xeb, - 0xbd,0xd0,0x6b,0x45,0xa1,0xe9,0xf8,0xdd,0x2f,0x27,0x41,0x5d,0xba,0x1d,0xbb,0x13, - 0xf2,0x5a,0xc3,0x47,0x21,0x2c,0x5b,0x89,0x22,0x3c,0x94,0x4a,0xae,0x82,0x48,0x74, - 0x08,0x25,0x26,0xf1,0x90,0x78,0x01,0x7d,0xd3,0xcc,0x59,0x42,0xdb,0x0b,0xd7,0x43, - 0xc5,0x44,0xf2,0xa3,0xb0,0xed,0x3a,0x9c,0x9c,0xcd,0xcd,0xbd,0x8e,0x87,0x6f,0x77, - 0x64,0x56,0x7f,0xe8,0x16,0xa6,0xf9,0xa4,0x32,0x07,0x26,0xd7,0xe7,0x3b,0xcd,0x87, - 0xcf,0xc4,0xb5,0x6d,0x59,0x00,0x3c,0x7c,0x26,0xf6,0x17,0xd3,0xe5,0x8a,0x2f,0xc4, - 0x37,0x21,0x1d,0xb7,0x05,0xec,0x5b,0x46,0xce,0x95,0x10,0x00,0x4b,0xc2,0x55,0x41, - 0x71,0xd3,0xed,0xf6,0xf9,0xfc,0xdb,0x4c,0xc6,0xac,0xe9,0xc9,0x36,0x1e,0x74,0x9d, - 0x49,0xaf,0x29,0xfd,0xe9,0x7b,0x40,0xe6,0x0a,0xf7,0x8a,0xcb,0x40,0xe6,0xa3,0x51, - 0x24,0x38,0x67,0xac,0xd6,0xd4,0x0d,0xb8,0x47,0xa9,0x40,0x5a,0x2e,0x05,0xac,0xcf, - 0xa5,0xfb,0x34,0xe8,0xe1,0x7a,0x99,0x46,0xfc,0x5f,0x56,0x38,0x0e,0x50,0x44,0x82, - 0x79,0xed,0x9d,0x1c,0x75,0x4d,0xf0,0x28,0x2a,0x34,0xde,0x0e,0xbd,0xf1,0x9f,0xb9, - 0x54,0xc4,0xfc,0xb2,0x6f,0xe7,0x1f,0xcb,0x1d,0x17,0xbe,0xff,0x96,0xe4,0x2f,0xdd, - 0x1b,0x7d,0xcc,0xce,0xf4,0xf1,0x74,0x76,0xa2,0xe6,0x4a,0xde,0x9d,0x18,0x0b,0x29, - 0x97,0xc2,0x16,0xcf,0xa6,0x0c,0xdf,0xa4,0x98,0xd9,0xad,0x0e,0x00,0xdc,0xbb,0xf5, - 0x89,0x85,0x49,0x58,0xa0,0xa8,0x62,0xff,0x36,0xbe,0x96,0xc7,0x8f,0xef,0x59,0x7b, - 0x1a,0x69,0x86,0x3d,0x17,0xb2,0x65,0xe3,0xb6,0xec,0xe1,0x1e,0x76,0xd9,0x4a,0xcc, - 0x2a,0x7a,0xb7,0xe9,0x82,0xb8,0x85,0x80,0x3f,0xdd,0x9b,0xd6,0x76,0x92,0x9d,0xb5, - 0x76,0x92,0xd3,0x59,0x6b,0xf7,0xae,0x64,0x88,0xdb,0xde,0x50,0xe6,0x17,0xc4,0x1d, - 0x23,0xff,0xc9,0x5a,0xdf,0x14,0x4a,0x3c,0x0f,0xc6,0xff,0xe6,0x6b,0x45,0x7a,0x29, - 0xc5,0xbf,0x4f,0x52,0xed,0x6b,0xd1,0x11,0x1e,0xea,0x89,0xd2,0x75,0xc3,0x92,0x2e, - 0xc8,0xda,0xbb,0x95,0x5b,0xf7,0x26,0x46,0x7e,0x50,0xb8,0x26,0xd9,0xc4,0xd1,0x33, - 0x16,0x65,0x55,0x46,0xe5,0xa9,0xe0,0x30,0x0b,0xa4,0x48,0x70,0xb8,0x22,0x3a,0x12, - 0x18,0x5f,0x91,0x45,0xdd,0xa9,0x12,0x6b,0x9a,0xe6,0x79,0x2a,0x3f,0xd3,0x2e,0xb4, - 0x52,0xe4,0x7f,0x29,0xca,0x6a,0x2f,0xb8,0x32,0x05,0xfd,0xc8,0x5b,0x54,0x9a,0xad, - 0x79,0x0b,0x9b,0x4b,0xcd,0x8d,0x2a,0x2e,0x1f,0x18,0xaf,0xc3,0x54,0x47,0xe5,0x3a, - 0xc0,0xd6,0x3b,0xc7,0x57,0x05,0x81,0xec,0xbc,0x18,0x34,0x8c,0xbf,0xf0,0xf4,0x23, - 0xca,0xad,0xbe,0xe2,0xb6,0x73,0xbe,0xc1,0x83,0xcc,0xa6,0xc6,0x1f,0x67,0xec,0x0a, - 0xf5,0xb6,0x62,0x6c,0x00,0x38,0xb9,0x05,0x4b,0xbb,0x7c,0x28,0x74,0x9c,0x5f,0xb8, - 0x30,0x36,0x26,0xc6,0x71,0x0f,0x7e,0x4c,0xcc,0xf4,0xc4,0xd4,0xce,0xc7,0x8d,0x55, - 0x3f,0x53,0x80,0x83,0xb6,0xf9,0xea,0x9d,0xc8,0xfc,0x51,0x6a,0x9d,0xbf,0xcc,0xf3, - 0xbb,0xdb,0x56,0x12,0xe8,0x90,0xa2,0x62,0x13,0x70,0x94,0x9e,0x23,0xd1,0x4f,0x64, - 0x58,0x2d,0x4b,0xc2,0x6a,0xa7,0xbf,0x52,0xa2,0x3a,0xfd,0x4d,0x4a,0xd8,0x29,0x4d, - 0x8b,0xf5,0x3e,0x98,0x06,0x1f,0x0e,0xa8,0x04,0xd7,0xdc,0x78,0x34,0xff,0x75,0x4a, - 0x6e,0xe2,0xf9,0x74,0xd8,0x0e,0x34,0x92,0x6d,0x7d,0xfb,0x8c,0x36,0xfc,0xc9,0x85, - 0x93,0xfa,0xbf,0x38,0x75,0x6b,0xf7,0x19,0x7d,0x1a,0xb9,0x9f,0x28,0x71,0xeb,0x59, - 0xb3,0x30,0x57,0xed,0xbd,0x68,0xee,0x21,0xbc,0x50,0x0f,0x0a,0xc8,0x8b,0x5a,0x08, - 0xdf,0x9d,0xd1,0x05,0x52,0xe8,0x11,0x29,0xa3,0x5a,0x88,0xc3,0x62,0xfe,0xeb,0x84, - 0xc8,0x42,0x0f,0xc6,0xf1,0x4f,0x37,0x01,0x51,0x15,0x96,0x90,0xf4,0x99,0x2c,0x32, - 0x5f,0x88,0xbd,0xc8,0x00,0x06,0x24,0x78,0xee,0xd2,0x33,0x3d,0x44,0xd9,0xde,0x63, - 0xd8,0x5d,0xe2,0xc9,0x98,0x7c,0x94,0x4c,0x45,0xad,0x82,0xec,0x86,0x58,0xd8,0x6d, - 0x40,0xeb,0xa2,0xfc,0x19,0x9c,0x2f,0x82,0xbf,0xa5,0x60,0xea,0x2b,0x71,0xcc,0x16, - 0x29,0x54,0xb2,0xdb,0x74,0x03,0x8c,0x59,0xb8,0xe8,0x20,0xdd,0x41,0x11,0x2f,0xf8, - 0x82,0x97,0x62,0x71,0x3f,0x96,0x8a,0x6b,0xde,0x59,0x58,0xb5,0x3c,0xdf,0xf1,0x7f, - 0xb5,0xdf,0x7f,0x2a,0xda,0x57,0x04,0x99,0x0e,0xad,0xd1,0xfe,0x7d,0xef,0xbb,0x43, - 0xda,0x18,0x02,0x12,0x56,0x3e,0xa1,0x2e,0xf5,0xd6,0xe6,0x09,0x65,0xfa,0xee,0xa6, - 0xd6,0x35,0xbd,0xac,0x41,0x11,0xf2,0x3e,0x61,0x16,0xe9,0xe3,0x96,0xde,0xce,0x13, - 0xd9,0xd9,0x73,0xb8,0x7f,0x27,0x5a,0xc2,0x06,0x37,0x78,0xf8,0xeb,0x94,0x94,0x5f, - 0x61,0x22,0x1d,0xb2,0x71,0xc5,0xef,0x9f,0xb2,0x38,0xae,0x09,0xc4,0xf7,0x9d,0x39, - 0x98,0x86,0xe9,0x0e,0x5f,0xbb,0x78,0xfe,0x34,0xba,0x06,0x66,0xb0,0x1e,0x63,0xe3, - 0xc7,0xc1,0x2d,0x0e,0x0d,0x77,0xe2,0x24,0xfc,0x6b,0xa8,0x19,0x7e,0x44,0xd9,0x01, - 0x51,0x81,0x19,0xb2,0x9b,0x84,0xbf,0x7c,0x0f,0x4f,0xf0,0x50,0x94,0xa2,0xeb,0xf9, - 0x74,0x22,0xdd,0x90,0xa9,0xb9,0x11,0xbe,0x20,0xc0,0x01,0xe5,0x04,0x56,0x2e,0x1e, - 0x38,0x7b,0xb5,0xe4,0x8f,0x26,0x13,0x21,0x2f,0xca,0x7d,0x4b,0x21,0x01,0x03,0x1e, - 0x14,0x61,0x02,0x17,0xf6,0xf4,0x9a,0x84,0xbd,0xef,0x47,0x05,0xc8,0x6b,0x48,0xeb, - 0xe0,0xc3,0xe1,0xe1,0x2b,0x02,0x98,0x61,0xaf,0xc4,0xdf,0x41,0xdf,0xe1,0xdb,0x0f, - 0xec,0xad,0x3e,0x1b,0xcf,0x14,0x78,0x7f,0x30,0x23,0x5e,0x04,0x47,0x7f,0x2b,0xd8, - 0x83,0x8d,0xa0,0xf0,0xc7,0x03,0xfb,0x60,0x81,0xcd,0x40,0xa6,0x0f,0x69,0xe6,0xec, - 0x8c,0x21,0x01,0xd3,0x3f,0xbd,0x4e,0xe8,0x84,0x92,0x0b,0x46,0x0e,0x3c,0x7a,0xa0, - 0x47,0x0c,0x9a,0xa1,0xbd,0x0b,0xf6,0x92,0xfb,0x4c,0xe0,0xd8,0x3a,0x52,0x34,0x9f, - 0xa8,0xd2,0x18,0xf0,0xc1,0x16,0xe1,0x62,0x70,0x93,0xa4,0x99,0x60,0x7f,0x87,0xee, - 0x55,0xca,0xd5,0xe3,0x44,0x27,0x9b,0xa4,0x69,0xbe,0xa3,0xbf,0x05,0xd0,0x49,0x5d, - 0xf5,0x29,0xcf,0xfc,0xf6,0x13,0x3f,0xe3,0x63,0x64,0x79,0xc0,0x97,0x66,0xfb,0xf7, - 0xa3,0xa3,0x02,0x94,0x84,0xbd,0x00,0xb7,0xc2,0x82,0xfd,0xb4,0xcd,0x55,0xf6,0xf3, - 0x36,0x4f,0xdb,0xa0,0x00,0x7a,0xf5,0x9e,0xbe,0x0e,0xa6,0x38,0x59,0xa9,0x93,0x68, - 0x25,0x5b,0x7c,0x2e,0x0f,0xe2,0x98,0x7b,0x01,0x7a,0x55,0xdc,0xb6,0x53,0xa5,0xa9, - 0xa5,0xc9,0x91,0x25,0x9b,0xc2,0xe4,0x90,0x57,0x4e,0xfc,0x54,0xe7,0xce,0x18,0x27, - 0x36,0x92,0xb8,0x5d,0x06,0xe2,0xcc,0x05,0x94,0x20,0xf3,0xdc,0x24,0x98,0x85,0xf9, - 0x30,0xcd,0x0a,0x8f,0xcf,0x6d,0x1d,0xa7,0xbc,0x4c,0x73,0xc7,0x59,0x36,0x94,0xc3, - 0xc3,0x3d,0x3c,0x39,0xb6,0xef,0xb7,0x82,0xec,0x2c,0x8d,0x6e,0xc9,0xf0,0x52,0x2e, - 0x98,0xc4,0x74,0xc3,0xc4,0x91,0xbd,0x97,0xd7,0x2c,0x79,0x59,0xe8,0xba,0x51,0x7f, - 0x25,0xba,0x28,0x66,0x86,0x8a,0x60,0xc5,0x62,0x03,0x13,0x3c,0xde,0x60,0xcb,0x43, - 0x29,0x43,0x6c,0x64,0xa1,0x32,0x8a,0xca,0x96,0xb2,0xb1,0x6d,0x2a,0x2b,0xf0,0x71, - 0xec,0x58,0x07,0x1a,0x91,0xc3,0xd1,0x4b,0x33,0x22,0x7b,0x72,0x69,0x88,0x5e,0x2e, - 0x6f,0xc9,0x39,0xb9,0x55,0x03,0xf2,0x2d,0x43,0xdf,0xd1,0xbd,0x26,0x97,0xdc,0xc3, - 0x18,0x02,0xaf,0xf8,0xab,0xde,0x1f,0x2b,0xea,0x29,0x66,0x89,0x00,0x1f,0x4b,0x10, - 0x09,0xa6,0xde,0xd8,0x4d,0xea,0xd4,0xe3,0x5a,0x9c,0x0f,0x86,0x43,0xe4,0x60,0x38, - 0x16,0xbd,0x62,0x71,0xe9,0xa6,0x88,0xfd,0x3f,0x92,0x0d,0xfd,0x4e,0xc5,0x6a,0x67, - 0xce,0x6d,0x80,0x16,0xa4,0x89,0xd8,0xe2,0x15,0x51,0x71,0xc4,0xd9,0xc9,0x43,0xd6, - 0xd3,0xdc,0x3d,0x3b,0xe4,0xbd,0xb2,0xd3,0xe0,0xe7,0x6b,0x5e,0x62,0x75,0xa4,0x2f, - 0xbc,0xc0,0x6c,0xdd,0x69,0x64,0x17,0x03,0xda,0xa8,0x5b,0xd9,0x4c,0x9f,0x84,0x5c, - 0xa0,0xa5,0x84,0x74,0x8f,0xde,0x74,0x96,0x4a,0x9c,0x33,0xa3,0x58,0x7a,0x0f,0xa1, - 0x3b,0xfc,0xd0,0x41,0x06,0xb8,0xa0,0x25,0x97,0xe5,0xd7,0xb4,0x38,0xc4,0xe0,0xfd, - 0x8d,0x5c,0xb3,0x60,0xdd,0xf0,0xf4,0x59,0x7b,0x03,0x89,0x37,0xf4,0x9a,0xde,0x7c, - 0x0d,0x04,0x6d,0xbc,0x9a,0x98,0xbf,0xe9,0x05,0xbf,0x33,0xe6,0x73,0xca,0x7a,0xde, - 0xe7,0x19,0x85,0x5a,0x3c,0xdc,0xa1,0x23,0xd0,0xf3,0x46,0x46,0x36,0x01,0x11,0xc0, - 0x12,0xfc,0xa3,0x04,0x9e,0x3b,0x3f,0x40,0x2e,0x44,0x74,0xb2,0x77,0x93,0x5c,0x98, - 0x61,0x41,0x44,0x4a,0x85,0x9e,0xef,0xb8,0x66,0xe7,0xe3,0x34,0x8f,0xa0,0xd2,0xe0, - 0x20,0x1a,0x7c,0x3a,0x64,0x6a,0x95,0x8c,0x6e,0xe5,0x63,0xe7,0xd6,0xfb,0xc8,0x78, - 0x01,0x90,0xa6,0x23,0x84,0xe7,0x1c,0xdd,0xd6,0xb0,0x95,0x1a,0x8d,0xeb,0xe9,0xf6, - 0xdd,0x06,0xe8,0x9a,0xd3,0x35,0x80,0x43,0xee,0xff,0x4c,0xf6,0x68,0x0a,0xa5,0x57, - 0x8f,0x13,0x8a,0x18,0xa9,0xf9,0x83,0x98,0x8a,0xc4,0x54,0xc3,0xdc,0x43,0xa7,0xf1, - 0xae,0x16,0xd6,0xeb,0x9d,0xd3,0xd3,0x30,0xbf,0xc1,0x05,0x41,0xf3,0x97,0x9d,0xee, - 0x37,0xbd,0xfe,0x77,0x61,0x1b,0xa5,0x50,0x38,0x72,0xe6,0x64,0xba,0xd3,0x36,0x6f, - 0xff,0x86,0x4e,0x91,0x86,0x3c,0x11,0x85,0x48,0xea,0xf6,0xa1,0x4a,0x79,0x8f,0x1a, - 0xf0,0xba,0x11,0x54,0xfb,0xeb,0xd7,0xeb,0x24,0xbf,0xfd,0x72,0x9b,0x0e,0xb6,0x6c, - 0x46,0xd5,0xb7,0xe3,0xaf,0xa3,0x9b,0xfa,0x93,0xb8,0xb6,0x93,0x7c,0x4e,0x2f,0xea, - 0x4f,0xea,0xd1,0x75,0x1d,0x75,0xdd,0x42,0xad,0xf1,0x8b,0x8f,0x00,0x69,0x12,0x1f, - 0xf6,0x4c,0xe1,0x47,0x93,0xe8,0x36,0xf9,0x1c,0xb7,0xce,0x1b,0xa4,0x76,0x90,0x37, - 0x5e,0x4d,0x2a,0x47,0x22,0x7e,0xc6,0x68,0x1d,0x0a,0x6f,0x6c,0x4e,0x81,0x60,0x12, - 0x15,0x69,0x48,0xd1,0xad,0x71,0x65,0x01,0xfb,0x84,0x51,0xfd,0x6a,0x40,0x15,0xa1, - 0x46,0xdf,0x47,0x2c,0x6c,0xaa,0x1c,0xf5,0x8d,0x30,0x47,0x43,0xe3,0x9f,0x89,0x3e, - 0x76,0x28,0x3f,0x49,0x6e,0xea,0x3b,0xc9,0xb6,0xeb,0x87,0x8d,0x6f,0x46,0xff,0xd2, - 0xff,0xcc,0x71,0x5e,0x22,0xb3,0xbf,0x28,0x0c,0xd7,0xcc,0xfb,0xe6,0x66,0x75,0x74, - 0x55,0x85,0x6f,0xab,0x43,0x06,0xe8,0x18,0x67,0xb9,0xf5,0x4f,0xa7,0xaf,0x27,0x23, - 0x12,0x51,0x47,0xb2,0x72,0x2f,0xe9,0xf4,0x71,0x4b,0x94,0xb6,0x62,0xce,0xd2,0x9d, - 0xd2,0x18,0x49,0x2c,0xbf,0xee,0x59,0x29,0x2b,0x4f,0x39,0xfc,0xbf,0x52,0x0a,0x54, - 0xfc,0xcc,0xab,0x76,0xda,0x69,0xb3,0x3f,0x00,0x88,0x7c,0x37,0x48,0xb0,0xda,0x62, - 0xe0,0x4b,0x11,0x72,0x58,0x2a,0xd8,0xce,0xeb,0x7b,0x4f,0x3d,0x13,0xc8,0x1f,0x40, - 0xf1,0x74,0x01,0x1c,0x75,0x7e,0x0d,0xf3,0x20,0x7b,0xd0,0x8e,0xf1,0x8d,0x6b,0xff, - 0x46,0xc2,0xd9,0xe6,0xe6,0x59,0x03,0xb2,0x01,0xe8,0xde,0x42,0xe9,0x1b,0xdb,0x2f, - 0x98,0x6b,0x32,0xf4,0xed,0xef,0xfb,0xe8,0x85,0xfd,0x88,0x31,0x26,0xb0,0x01,0x45, - 0x13,0x1e,0x0e,0x58,0x8f,0x0d,0x14,0x9c,0xba,0x3a,0xe4,0x09,0x7f,0xae,0x0a,0x08, - 0x2b,0xd7,0x98,0x92,0x22,0x72,0xac,0xa8,0x23,0x98,0x7a,0x3e,0xf8,0xab,0xca,0xd6, - 0xbf,0x05,0x46,0xba,0x7a,0x91,0xf8,0x9c,0xf5,0x83,0xd1,0x8a,0x1a,0xe4,0x4f,0xe0, - 0xe4,0x5c,0xd5,0x48,0xab,0x7a,0xe5,0xaa,0x40,0xa4,0x55,0xb0,0x77,0xc9,0xf6,0x53, - 0xea,0xe8,0xbc,0x5b,0xe1,0x0e,0xc3,0xa8,0x6d,0x61,0xcd,0xcd,0xc4,0x9f,0xd0,0x8b, - 0xdc,0x26,0x5d,0x1b,0xaf,0xcd,0x81,0x5b,0xcb,0x75,0x54,0xea,0xcf,0x30,0xfd,0xcf, - 0xb1,0xd6,0xcd,0xe9,0xc4,0x81,0x96,0x2e,0x2f,0x9b,0x25,0xfb,0x2d,0x35,0x01,0xb4, - 0x34,0xd2,0x76,0xad,0xe6,0x8c,0x36,0x8b,0x7b,0x93,0xd9,0x29,0xe9,0x60,0x1e,0x8e, - 0xb7,0xec,0xa3,0x4b,0xcb,0xb0,0x98,0x48,0xce,0xd3,0xaa,0xeb,0xd4,0xbd,0xca,0x3e, - 0x2b,0x07,0xfd,0x1c,0xba,0x3e,0x93,0x0b,0x14,0xb2,0xa8,0x22,0x89,0x58,0xef,0x90, - 0x48,0x6c,0x9d,0xf2,0xde,0x1d,0x43,0xa3,0x47,0xfb,0xb7,0xd6,0x36,0x05,0xc1,0x7f, - 0xe1,0x05,0xd7,0x2f,0x5f,0x73,0x6b,0xb3,0x25,0x4c,0x51,0xe3,0x3d,0xd9,0x2d,0x22, - 0x01,0x86,0x08,0xf4,0x93,0x6e,0x87,0xad,0x22,0x31,0x4c,0xb8,0x86,0xa5,0x0b,0x30, - 0x1d,0xa8,0xf4,0x68,0x65,0x6c,0xd4,0x03,0xe3,0x94,0x9e,0x5f,0xd4,0x9f,0x3e,0xdd, - 0x7b,0xd2,0x32,0x8f,0xcf,0xbe,0xd9,0xdb,0x95,0xc7,0x6f,0xbe,0xdd,0xdb,0x69,0x6d, - 0xb7,0xf9,0xa4,0xbc,0xea,0xfe,0xcb,0x13,0xd6,0x3e,0x4e,0x6a,0xa9,0x5c,0xd2,0xe3, - 0x9a,0xaa,0x77,0x9a,0xd6,0x60,0x4c,0x93,0x4c,0xbd,0x8b,0x3d,0xd5,0x65,0xdb,0xc4, - 0xe2,0xdf,0x45,0xec,0x7a,0x09,0x6d,0xcf,0xd3,0x42,0x6b,0x1b,0x09,0x5d,0xa8,0xb5, - 0xfb,0x33,0x0e,0xd3,0x77,0x95,0x71,0x8a,0x59,0x4f,0xb4,0xb0,0xf5,0xdf,0xad,0x0d, - 0xbe,0xde,0xc5,0xfa,0x8a,0xc0,0xb0,0x6f,0x39,0xe7,0x99,0x92,0x3e,0xa0,0x78,0xc4, - 0xb2,0xe0,0x35,0x29,0xcd,0xb8,0x58,0x5f,0xca,0x0b,0x95,0x19,0x87,0xc8,0xa2,0xfc, - 0x7b,0xac,0x2b,0xc2,0x75,0x64,0x9e,0x0d,0xfb,0xb7,0x6d,0x6e,0x9f,0xfa,0x00,0xf3, - 0x58,0xd6,0xa2,0x84,0x3a,0xb6,0xd8,0x39,0x35,0xdb,0x4f,0xa7,0xb7,0x7c,0xf5,0xa4, - 0x16,0x0a,0xe2,0xd0,0x62,0xac,0xb6,0xcd,0xd5,0x6c,0x68,0x18,0xef,0xb9,0x65,0xd3, - 0x5e,0xa6,0xeb,0x19,0x34,0x15,0xc1,0xfb,0x66,0x21,0xf7,0x67,0x75,0x6d,0x42,0xe8, - 0xfb,0x58,0x8c,0x42,0xec,0xae,0x5e,0x2d,0x94,0x94,0x56,0xbf,0xb3,0xb0,0x6c,0x6a, - 0xba,0x16,0x86,0x63,0x0a,0x12,0x86,0xd2,0xe4,0xa0,0x50,0xac,0x2a,0xcc,0x72,0xbe, - 0x40,0x3b,0xd6,0x60,0x48,0x63,0x36,0xac,0xa2,0x55,0x04,0xe5,0xf4,0xad,0x53,0x15, - 0xb0,0xcb,0xfb,0xe4,0x7a,0x87,0x7f,0xf4,0x60,0xa2,0xdf,0x1f,0xd3,0x69,0x3c,0x97, - 0x4a,0x7f,0xaa,0x4a,0x42,0xed,0x09,0xee,0xd8,0x14,0x75,0xe2,0x7a,0xb9,0xb3,0xbf, - 0xa0,0xa3,0x5a,0xee,0xad,0xa8,0x8c,0x87,0x0f,0x70,0xc6,0xb6,0x7e,0x84,0x33,0x7d, - 0xb2,0x07,0xe3,0x67,0x67,0x17,0x36,0xd6,0x1b,0xc8,0xeb,0x2f,0xc4,0x22,0xa7,0x5c, - 0xad,0x22,0x9a,0xf3,0xfb,0x5d,0xa6,0x06,0xb1,0xde,0xcb,0x16,0xb3,0xb3,0xe2,0xb3, - 0x24,0x50,0x68,0x1d,0xd9,0x93,0xf0,0xe8,0x1e,0x33,0x3b,0xe3,0xf2,0xd5,0xd9,0x2c, - 0x03,0x84,0x83,0x58,0xbb,0x71,0x0d,0x49,0x30,0x61,0xda,0x0b,0x37,0xff,0x82,0x88, - 0xb9,0x3b,0xdf,0x3c,0x69,0x73,0x04,0x61,0x00,0x64,0x23,0xa8,0x44,0x5e,0xe0,0x22, - 0x6d,0xe8,0x95,0xb9,0x47,0x00,0x1a,0x10,0x13,0x00,0xa6,0x5c,0xc6,0xca,0xb9,0xf4, - 0x16,0x6f,0xe8,0x6e,0x7f,0x1e,0x3f,0x9f,0xe6,0x43,0xb0,0xbc,0xb1,0x2c,0x44,0xe2, - 0x0e,0x8d,0x35,0xec,0x93,0xf2,0x3e,0x17,0x9c,0xd1,0xc0,0xc7,0x25,0xb5,0x29,0x0d, - 0x67,0x7f,0x97,0x74,0xff,0x88,0xf9,0x8f,0x6d,0xf8,0x87,0x57,0x02,0x03,0x4d,0xc2, - 0x69,0x09,0xf9,0x65,0xcd,0xfd,0x1a,0xf7,0x50,0x72,0x31,0x83,0x17,0x5c,0xd4,0x64, - 0x8b,0xdc,0x44,0xf0,0x55,0x2f,0xad,0x5a,0xfe,0xe4,0xd1,0x5a,0x39,0x5a,0x49,0xe5, - 0x5a,0x06,0x8f,0x16,0x08,0xc9,0x74,0xc1,0x98,0x32,0xd6,0xd5,0xab,0x69,0xfe,0x2c, - 0x47,0x71,0x78,0xb6,0xe5,0x10,0x91,0xb7,0xc6,0xd5,0xbd,0x69,0x9a,0x95,0x4e,0xb4, - 0x50,0x26,0xf0,0xc9,0x11,0x99,0x78,0xeb,0xbf,0xdf,0xe3,0x96,0x66,0x51,0x5f,0xf8, - 0x8e,0xdb,0x71,0x3e,0xb8,0xe0,0xc0,0xde,0xfc,0xa4,0x1e,0xc2,0xe0,0x89,0xb2,0x0b, - 0xcb,0x97,0xac,0x95,0x4b,0x03,0x1b,0xbe,0xd2,0xf1,0x4f,0x0a,0x48,0x29,0x8f,0x26, - 0x0c,0xea,0x75,0x06,0xa5,0x9d,0x93,0x1b,0xd4,0xb1,0xc1,0x55,0xfa,0x1e,0x59,0x3e, - 0xfd,0x05,0xe2,0x7e,0xf7,0xfa,0x9a,0x5b,0x35,0xb1,0xdc,0x49,0x1e,0x5c,0x2b,0x86, - 0xfe,0x13,0x75,0xe2,0x7c,0x5a,0x23,0xaf,0xfb,0x7f,0xe9,0x89,0x10,0xcd,0x20,0xde, - 0x79,0xd0,0x3d,0xbb,0x1b,0x67,0x4b,0x14,0x33,0xb8,0x5a,0x3a,0x59,0x27,0x34,0x1c, - 0xae,0x67,0x63,0xcd,0x50,0x72,0xf0,0x24,0x39,0x86,0xd8,0x3a,0x9e,0xcd,0xd3,0x38, - 0xc9,0xe5,0xcb,0xbd,0x2c,0x17,0xc2,0x8c,0x74,0x54,0xaf,0xe9,0x05,0x79,0xf2,0xc1, - 0x8c,0x1f,0x8d,0x4f,0xbe,0xbb,0xf3,0xcd,0xb3,0x6f,0x71,0x08,0xce,0x5f,0xd9,0x4d, - 0xba,0x3e,0xc3,0x7d,0xf7,0xee,0xe6,0xa6,0x75,0x14,0x93,0x63,0xc0,0x10,0x91,0xc7, - 0xb2,0xb3,0x37,0xd7,0x3a,0xb9,0xfa,0xb6,0x0e,0xaf,0x4a,0x4e,0x2f,0x5c,0x77,0xa1, - 0x4a,0x1c,0x3e,0xfc,0xd1,0x7a,0x8b,0x30,0x2b,0xf6,0x2b,0xd6,0xed,0x6f,0xc7,0x4b, - 0x59,0x7a,0xbc,0xb1,0xc0,0x69,0xef,0xaf,0x87,0xfb,0x5b,0x07,0x9d,0x71,0xa7,0xd7, - 0x09,0x22,0x32,0x45,0x1a,0xa1,0xa1,0x59,0x3d,0x98,0x9c,0xb5,0xc2,0xef,0xb6,0x9b, - 0x8d,0xa7,0x3b,0x4f,0x43,0x3a,0x52,0x0f,0x9f,0xed,0x34,0xf0,0x94,0x21,0xf9,0x9b, - 0x90,0x4e,0xd6,0xc3,0xa7,0xe1,0x5d,0xc2,0x38,0xf6,0xaf,0xa0,0x83,0xc0,0x4a,0xad, - 0x23,0x99,0x9e,0x36,0xbe,0x6d,0x36,0x4d,0xa6,0x9d,0xa7,0x4d,0x93,0x67,0xbb,0xb9, - 0x2a,0x53,0x10,0xbd,0xed,0xc0,0xa8,0xfa,0x26,0x2f,0xf2,0x59,0xe3,0xe9,0x37,0xab, - 0x8a,0xfc,0xb6,0x22,0xf7,0x1b,0xc8,0x61,0x2d,0xb8,0x99,0x67,0xdd,0xde,0x91,0x9c, - 0xdf,0xad,0x2a,0xb7,0x15,0x1c,0xee,0x27,0xc1,0x6f,0xfb,0x26,0xef,0xce,0x6e,0x63, - 0xdb,0xaf,0xe9,0xb7,0x5e,0xb1,0x9a,0xf9,0xdf,0x5f,0xff,0xb0,0x3e,0xa7,0x5b,0xec, - 0xf7,0xb3,0xce,0xbf,0x06,0xc3,0x3f,0x52,0xd6,0xcb,0x5f,0xb7,0x7e,0xfd,0xc5,0x65, - 0xce,0xb7,0xcf,0xbe,0x6b,0x3c,0xdb,0xfe,0xf6,0x81,0x39,0x7f,0xe8,0x4f,0xc9,0xd3, - 0x33,0x46,0x90,0xe6,0x96,0xd6,0x74,0x1a,0x66,0xbb,0x44,0xe9,0xc1,0xbf,0xfa,0x58, - 0x5f,0x7c,0xe8,0x4f,0xaf,0xba,0x10,0x26,0x3e,0x01,0x4f,0x76,0x77,0xd6,0x76,0x08, - 0x26,0x20,0x78,0xb2,0xbb,0xfb,0xe6,0xe7,0x7f,0x05,0xd1,0xeb,0x09,0x94,0xce,0x1f, - 0xc8,0x76,0xcc,0x60,0x40,0x7a,0xe3,0x19,0x95,0xbd,0x9e,0x08,0xc5,0xa0,0xe5,0xbb, - 0xb9,0xd7,0x33,0xe0,0x6d,0x9f,0x6e,0x37,0x0c,0xb1,0xd1,0xcd,0x5c,0xbe,0xad,0x27, - 0xfb,0x2d,0x46,0xd7,0xff,0xee,0x77,0x28,0x9f,0x74,0xa8,0x6f,0x1a,0xbb,0xdf,0xac, - 0x67,0x98,0x9b,0x4d,0xa9,0x75,0xf2,0xaf,0x2f,0x96,0xef,0x8b,0x5f,0x9d,0x77,0x86, - 0x54,0x63,0xad,0xa5,0x97,0x4f,0x7b,0xf2,0x33,0x2f,0xdf,0xb7,0xcf,0xbe,0x5d,0x5f, - 0x4d,0x37,0xdf,0x21,0x4c,0xc2,0xfe,0x65,0xd8,0xf3,0x47,0x7a,0xd5,0x5f,0x07,0xfd, - 0x39,0xf4,0xf2,0xa5,0x2a,0xee,0x34,0x1b,0xe0,0xcc,0xfa,0xde,0xaf,0x79,0xfd,0x3e, - 0x29,0xf9,0x57,0xb3,0x78,0xe3,0xc4,0x3a,0x49,0x77,0xfd,0x26,0x2e,0x0a,0x37,0xe1, - 0x6b,0x7c,0x84,0x5b,0x0b,0x3b,0x31,0x6d,0xe2,0x2d,0x0f,0x5b,0xcc,0xe1,0xca,0x3e, - 0x66,0xa6,0x53,0xfa,0x40,0x3a,0xb6,0x56,0x60,0xaa,0x90,0xa6,0xfc,0x0b,0x62,0x02, - 0xa6,0x09,0xef,0xf8,0x69,0x34,0x43,0x5e,0x6c,0x75,0x10,0x2d,0xa2,0xeb,0x6e,0x70, - 0x44,0xfb,0xdb,0xb1,0x8c,0x97,0xa0,0xf0,0xed,0x5a,0xaf,0x65,0x77,0x54,0x4f,0x72, - 0x6f,0x54,0x32,0x33,0xdd,0x1e,0x0f,0x4e,0xc8,0x73,0x8a,0xbc,0x7e,0xa6,0xd7,0x52, - 0x19,0xae,0x57,0xe0,0x32,0x53,0x7e,0xc0,0x76,0xa0,0xcc,0x93,0x80,0xc6,0x8f,0x6e, - 0x08,0xbe,0xff,0x2d,0x67,0x91,0xa6,0xc1,0xd7,0xbb,0x70,0xcb,0x4a,0x3b,0xf8,0xe0, - 0x31,0xee,0xe6,0x5f,0x6c,0xfa,0xf4,0xe3,0x80,0x3d,0xea,0xe5,0x53,0xbe,0xed,0x4e, - 0x33,0x41,0x74,0x56,0xd7,0x19,0x27,0xed,0x82,0x0a,0x6f,0x1d,0x9e,0xbb,0x0b,0xac, - 0xc3,0xfb,0x43,0xb5,0x6b,0x9e,0xf5,0xcf,0xf1,0x6d,0xf3,0xa2,0x3f,0x1c,0x0e,0xa6, - 0x6d,0xcb,0xf3,0x05,0x23,0xe0,0x3b,0xce,0xec,0xef,0xec,0x21,0x7e,0x36,0x37,0x56, - 0x3b,0xda,0x04,0x91,0x71,0x6c,0xb0,0x0d,0xd4,0xa9,0x86,0xe7,0xcb,0x63,0x60,0x7b, - 0xf0,0x98,0x63,0x27,0x07,0xde,0xf4,0x3a,0xd9,0x45,0x1b,0xc7,0x4e,0x0e,0xb3,0x6d, - 0xc7,0x1e,0x3c,0xcb,0xae,0x40,0xc9,0x6e,0x3a,0x5f,0xfc,0x82,0xbf,0x79,0x10,0x5b, - 0xb5,0xff,0xb5,0x11,0x80,0xa5,0x9e,0x93,0x04,0xd4,0x85,0xe9,0x85,0x3f,0xd0,0x38, - 0x2b,0xbb,0x15,0xe7,0x2f,0x7a,0x7b,0x56,0x42,0x5d,0x6e,0x6e,0x9a,0x5f,0xf1,0x52, - 0xc9,0x71,0x69,0x37,0xb4,0xa5,0xea,0x20,0xc0,0xd9,0x37,0x85,0x07,0x86,0xa2,0xe1, - 0xe7,0x56,0x80,0xa3,0x36,0xb3,0xad,0x3c,0x65,0xc3,0xc3,0xd8,0xef,0x41,0xf2,0x19, - 0xbd,0x28,0x2e,0x75,0x23,0xf9,0x90,0x9d,0xc5,0x6e,0x5f,0x92,0x0f,0xe8,0x4f,0xbc, - 0xbf,0x45,0x09,0x1b,0x35,0x43,0xf8,0x73,0x9c,0x4d,0x06,0x38,0xca,0xe9,0x67,0xe3, - 0xc7,0x73,0xd3,0xc6,0x41,0x47,0x7a,0x42,0x67,0x28,0xdd,0x3a,0xe6,0x8d,0x2f,0x78, - 0xb3,0xde,0x43,0xbc,0xdf,0x57,0xd1,0xbb,0xc4,0xa3,0x4c,0x85,0x0b,0x7d,0xf1,0x46, - 0xab,0x0c,0x4d,0xb8,0xbf,0x30,0xb7,0xaf,0xc5,0xbb,0x1f,0xff,0x72,0xc3,0xc5,0x0b, - 0xfe,0xea,0xf6,0x6e,0x31,0x28,0x35,0x31,0x0f,0x9c,0x5e,0x79,0x5c,0xbb,0x3e,0x69, - 0x9b,0x1c,0x6e,0xef,0xbb,0x7b,0xb8,0x39,0xa3,0xdc,0x37,0x67,0x2c,0xb6,0x4c,0xf9, - 0x53,0x56,0x8e,0xd3,0xc2,0xc0,0x71,0x63,0x9d,0x85,0x23,0x97,0xe6,0xb9,0xd4,0x35, - 0xfd,0x3a,0xfb,0x33,0x19,0x7d,0x4f,0xbc,0x0c,0xe9,0x9f,0xd1,0xfc,0x56,0x1c,0xbe, - 0xc0,0xee,0x5e,0x0d,0x02,0xbd,0x43,0x19,0xdd,0xa2,0xac,0x3e,0xb0,0xd1,0x23,0x1f, - 0xdd,0x84,0xfb,0xb1,0xe6,0x4d,0x71,0xab,0xad,0x1f,0x0d,0xea,0x2f,0x36,0x80,0x14, - 0x34,0x0f,0xb1,0x81,0x54,0xef,0xa3,0x5f,0x6e,0xb7,0xf8,0x48,0x50,0x29,0xaf,0x1c, - 0xd9,0xdd,0xae,0x62,0xb7,0xaf,0xbd,0x51,0xde,0x18,0xd9,0x50,0x0a,0x61,0x21,0xb4, - 0x38,0x31,0x32,0xda,0x5f,0x4c,0xb8,0x94,0x15,0x57,0x53,0x58,0x1e,0xe3,0x3f,0x4d, - 0x58,0x99,0x47,0x15,0x2e,0x0c,0x36,0x10,0x65,0x89,0xc2,0x1f,0xc5,0x63,0x28,0xc2, - 0xe1,0x7d,0x34,0xd9,0x49,0x76,0x93,0x27,0x15,0x16,0x87,0x98,0x24,0x44,0x22,0xc2, - 0x11,0xd6,0x6a,0x93,0xc3,0x01,0xfa,0xf4,0x38,0xce,0x0d,0x3e,0xa6,0x0a,0xeb,0xdb, - 0x40,0x0e,0x9e,0x33,0xa0,0xd8,0x24,0x32,0x11,0x28,0xa2,0x22,0x50,0x87,0xd1,0xdc, - 0x63,0x93,0x88,0xb2,0x77,0xf5,0xae,0x97,0x1d,0x23,0xd6,0x72,0x30,0x33,0x4a,0xd5, - 0x4e,0xda,0x44,0xf8,0xce,0x07,0x98,0xc6,0xfb,0xe6,0x18,0x94,0x14,0x29,0xd2,0x0c, - 0x75,0xd4,0x1f,0xbe,0xbd,0xe5,0x25,0x1d,0x8f,0xda,0x93,0x3f,0xbc,0x7d,0x24,0x9f, - 0xc1,0x52,0x85,0x27,0x31,0x3b,0xe7,0x82,0x27,0xdc,0x41,0xff,0x86,0xb6,0x91,0x62, - 0x98,0x90,0x9d,0xce,0x26,0x38,0x36,0x9e,0x90,0x7d,0x40,0xb9,0x59,0xe0,0x93,0x89, - 0x7b,0x5b,0xb4,0x42,0xee,0x72,0xc3,0xed,0x96,0x73,0x1d,0xe6,0x60,0x91,0x36,0xa9, - 0x11,0x22,0xb9,0xff,0x21,0xed,0xcc,0x36,0x4e,0x19,0xf1,0x95,0xc6,0xe7,0x7e,0xf2, - 0xfc,0xf6,0x3f,0xdd,0x9c,0xdc,0x91,0x7f,0x96,0xd8,0x36,0xb2,0xf7,0x9e,0x09,0x0c, - 0xff,0xac,0xe5,0x54,0xc3,0x5e,0x39,0x38,0x5f,0xd6,0x20,0x71,0xb5,0x0f,0x88,0xd6, - 0xbb,0x3a,0x4c,0xa3,0xde,0x7a,0x10,0x9a,0xc1,0x1e,0xd6,0x5a,0xdf,0x4f,0xa5,0x6f, - 0x71,0xce,0x6d,0x6a,0xd9,0x88,0xed,0xb6,0x9e,0x54,0x74,0x0b,0xfa,0x14,0x55,0x0f, - 0x0a,0x46,0xf0,0xa4,0xaa,0x53,0x54,0x65,0xe2,0x56,0xaf,0xf6,0xbb,0xe1,0x57,0x56, - 0x7c,0xc9,0x8a,0x7b,0x9c,0xbd,0xd6,0xc7,0xc6,0x92,0x7d,0xe4,0x7c,0x6c,0xc4,0xc6, - 0x8b,0x06,0x20,0xe2,0xea,0x70,0x92,0x0f,0x0f,0x78,0xb9,0x06,0xbb,0xe3,0x34,0xbd, - 0x82,0xef,0xae,0xdf,0xf4,0x07,0x35,0xc1,0x03,0x6e,0x1f,0x6c,0x3c,0xe8,0xfa,0xc1, - 0xc6,0xfa,0xfb,0x07,0x02,0x54,0x75,0x03,0xc1,0xef,0x05,0xd5,0x8d,0x38,0x9d,0x4c, - 0xdf,0x5d,0xcd,0x5d,0x5b,0x5a,0xf2,0xf9,0xd4,0x19,0x6e,0xf5,0x6f,0x07,0x24,0x7d, - 0x46,0xd8,0xa8,0x4f,0x7a,0xd8,0xca,0xbe,0x3b,0x3c,0x0a,0x57,0xde,0xc6,0xde,0xdc, - 0x9c,0x35,0xe8,0x54,0x8e,0xc8,0xa3,0x8c,0x75,0xbc,0x94,0x0c,0x64,0x19,0xa0,0xbd, - 0xa1,0x10,0x93,0x6b,0xff,0x58,0x9e,0x3d,0x8e,0x57,0x5e,0x91,0x50,0xcf,0x1e,0x07, - 0x93,0xab,0x61,0x8f,0x96,0xa3,0xb3,0x3e,0x9a,0xba,0xb8,0x78,0x57,0x0f,0xc8,0x1b, - 0x02,0xdf,0x65,0x0c,0xe3,0xb2,0xa1,0xff,0x19,0x02,0x83,0xe8,0xc6,0xab,0x74,0x7f, - 0x69,0xcf,0xea,0x55,0xad,0x28,0x6f,0x75,0x69,0x6a,0x0b,0x89,0xeb,0x5e,0xe0,0x0c, - 0x21,0x3a,0x32,0x32,0xd7,0x2b,0xe4,0x61,0x7e,0xdd,0xe8,0xf0,0x6a,0x4a,0x2c,0xd4, - 0x09,0x5e,0x4f,0x0c,0x52,0xa2,0x23,0xcc,0xc1,0x68,0x47,0x96,0xba,0x31,0x1e,0xf4, - 0x93,0x15,0xd2,0x05,0xc8,0xb5,0x2c,0xde,0x38,0xb0,0x73,0xad,0xc2,0xc7,0xfe,0xa3, - 0x69,0x5e,0xcc,0x21,0xb9,0x5e,0x15,0x3a,0x03,0x45,0xc5,0x18,0x22,0x98,0x6f,0x9e, - 0xc6,0x38,0x35,0xc0,0x7c,0x79,0x9a,0xc3,0xef,0x3b,0x80,0x59,0xd0,0x9b,0x80,0x93, - 0xb2,0xcc,0x47,0xb6,0xca,0x28,0xd3,0xce,0x7c,0x23,0x6e,0x22,0x10,0xf6,0x0c,0xde, - 0x9c,0x93,0x9e,0xce,0x85,0x6d,0x85,0xa7,0x8f,0x11,0x47,0x8d,0x26,0x28,0x63,0x7a, - 0x57,0x65,0x63,0x08,0x67,0xcb,0xb5,0x90,0x4c,0x09,0x75,0x7f,0x73,0x1d,0x23,0x41, - 0xed,0x01,0xa9,0x21,0x80,0x41,0x4c,0x56,0xe5,0x80,0x2b,0x4c,0x7a,0xce,0xa1,0x89, - 0xce,0xbe,0xa5,0xd4,0x30,0xa2,0x6a,0xf1,0x4e,0xa5,0x70,0x18,0x21,0x97,0x25,0xef, - 0x8b,0x21,0x6d,0xc2,0x1d,0xf7,0xec,0x78,0xce,0x6d,0x8b,0x12,0xe5,0x72,0x52,0xa0, - 0xdc,0x8b,0x7a,0x76,0xe0,0xe1,0xbd,0xf0,0x6b,0xfe,0x0f,0xbb,0xa4,0x88,0x16,0x4e, - 0x39,0xf5,0x20,0x46,0x7b,0x9b,0x0b,0x1f,0xe9,0x0d,0xd8,0xb8,0x22,0x13,0x2f,0x60, - 0x4a,0xea,0x70,0x26,0x08,0x0e,0xe9,0xeb,0x6f,0xdf,0xfd,0x06,0xdb,0x4e,0x26,0x2d, - 0xd7,0x69,0xc3,0x3f,0xbc,0x79,0xc2,0x71,0x23,0xfa,0x9f,0xe7,0x91,0x23,0xae,0x11, - 0xbd,0x6e,0x22,0x51,0x11,0x88,0x07,0x0d,0x72,0x96,0x73,0x35,0x98,0x19,0x62,0xf2, - 0xe2,0x7b,0x15,0xcb,0x1d,0x43,0xc5,0x5b,0x1a,0x8b,0xc6,0xe7,0x63,0x25,0x90,0x1c, - 0x39,0xc1,0x93,0x54,0xae,0x83,0xf0,0x54,0x12,0xc9,0x6c,0xca,0x6b,0xce,0xfb,0x75, - 0x09,0xeb,0x22,0x76,0xcc,0x4e,0xe3,0x18,0x88,0xa6,0x77,0x79,0x83,0x7d,0x30,0x1b, - 0x1c,0x7b,0x7d,0x02,0x3f,0x18,0x78,0x9c,0xe2,0xaa,0x90,0xc3,0xf3,0x68,0x36,0xdd, - 0x9b,0x4d,0x1b,0x64,0x8a,0x5d,0x0f,0xcc,0xb1,0xee,0xec,0xd4,0x5a,0x2d,0xc8,0xb9, - 0x2c,0x38,0xcd,0xdc,0x33,0x94,0xb3,0x91,0xad,0x83,0x47,0x79,0x35,0xbf,0x65,0xde, - 0x90,0xf5,0xf6,0x94,0x1c,0xb5,0x87,0x09,0xa5,0x01,0x3b,0x1b,0x5a,0x33,0x90,0x2f, - 0x3e,0xf8,0xba,0x7b,0x79,0xb8,0x2f,0x97,0x25,0x11,0x12,0x33,0xe6,0xd2,0x50,0x0e, - 0x93,0x12,0xd4,0x5e,0xc8,0xd1,0xea,0x9d,0x81,0x20,0xa5,0xea,0xba,0xdc,0x9a,0xc0, - 0xe3,0x05,0x73,0x8c,0x8d,0xc8,0xc3,0xa4,0x92,0x47,0xea,0x60,0x4e,0xb1,0xd8,0x19, - 0xdf,0x75,0xc5,0x6f,0xa6,0x74,0x84,0x63,0x77,0xf9,0xac,0x6d,0xee,0xa5,0xbb,0x14, - 0x32,0xae,0x57,0x14,0x21,0x21,0x89,0x72,0x1c,0xe4,0x42,0xd3,0xc3,0x20,0xa9,0x6e, - 0x7e,0x2c,0xff,0x7f,0x05,0xdd,0xe2,0x16,0x3f,0xd6,0xb8,0xf1,0x69,0x8e,0x0a,0xcf, - 0xfd,0x99,0x8f,0x4b,0x92,0xf3,0xe8,0xf1,0xb1,0xa9,0x11,0x25,0x06,0x58,0xcb,0x84, - 0x09,0xd2,0x72,0xb3,0xe1,0xed,0x9d,0x3d,0x7a,0xcb,0xa0,0x84,0xef,0x63,0xad,0xbd, - 0xbd,0x03,0xa1,0x45,0x17,0x46,0x5a,0x48,0x95,0x02,0xfb,0x23,0x2d,0xaf,0x3f,0xc2, - 0x89,0xb6,0x5f,0x9e,0x24,0x73,0x79,0xfd,0x91,0x5d,0x9c,0xf9,0x92,0x20,0xf1,0x41, - 0x6e,0x74,0xa7,0x5c,0x92,0xfa,0x0e,0x36,0xe3,0xc1,0x29,0xcf,0xff,0xc8,0xa5,0x4e, - 0x31,0x31,0xa8,0x5b,0x46,0x43,0x00,0x1b,0x7d,0x03,0x34,0x99,0x5a,0x31,0x6b,0xd8, - 0x73,0x98,0x13,0x8b,0xa4,0xe7,0xdb,0xb4,0xe8,0x3c,0xfb,0x68,0xeb,0x1f,0x11,0x89, - 0x35,0x2c,0xb9,0x8c,0x74,0xf9,0x98,0x8b,0x97,0xaf,0x96,0x79,0xd7,0xfc,0x6a,0x49, - 0x3d,0xe4,0xab,0x25,0x8f,0xa0,0xaf,0x96,0xf3,0xdb,0xaf,0x96,0x44,0xe3,0x47,0xe9, - 0x12,0xf2,0x42,0xad,0x2b,0x8f,0xdc,0x38,0xf2,0xcc,0xec,0xe1,0x67,0x6f,0xc1,0x78, - 0xa7,0xc1,0x51,0xa8,0x7e,0x4c,0xb7,0x30,0xd6,0xf2,0xa9,0x94,0x85,0x09,0x7f,0x71, - 0x3c,0x61,0x84,0xd6,0x2a,0x9f,0xa7,0x39,0x47,0x15,0x47,0xb3,0x98,0x8c,0xfe,0xb2, - 0x4e,0x8b,0xf7,0xc3,0xb4,0xda,0xd2,0x1d,0x92,0xcc,0x86,0xa5,0x18,0xf6,0x8f,0xaa, - 0xcf,0xfb,0xa5,0x4c,0xf6,0x90,0xe7,0xde,0x2b,0x7a,0x3f,0xec,0xa3,0x07,0x13,0x89, - 0xd0,0xbd,0xd9,0xf3,0x5f,0x80,0x91,0x07,0x7d,0xe5,0x76,0x6c,0xdd,0x50,0x92,0x82, - 0x55,0xc2,0x6d,0x6e,0x7a,0x5b,0x16,0xd6,0x9e,0xdd,0x5f,0x20,0x98,0x34,0x99,0xe0, - 0xa7,0x63,0x2e,0x08,0x8b,0xb2,0x4f,0xca,0xdc,0x89,0x83,0x3a,0x2f,0xbb,0xb2,0x00, - 0x0b,0x93,0xa9,0xf1,0x9f,0x80,0xee,0x53,0xff,0xf5,0x30,0xf7,0xa4,0x9b,0x59,0x54, - 0xad,0x74,0xd2,0x44,0x3b,0x05,0xdb,0x37,0xd3,0x1a,0xb2,0x0c,0x40,0x2d,0x54,0x0a, - 0x2c,0xfc,0x25,0x51,0x96,0x73,0x40,0xde,0x10,0x7e,0x63,0xbf,0xfe,0xbf,0x3b,0xf5, - 0x7f,0x9d,0x2c,0x76,0xef,0x72,0xd7,0x7c,0xda,0x3a,0x0f,0x12,0x2b,0x21,0xed,0x0c, - 0xee,0xe5,0x18,0x9b,0x28,0x82,0x61,0xbb,0x75,0xec,0x56,0xe8,0x91,0x64,0x97,0xa8, - 0x4b,0x83,0x53,0x9a,0x18,0x23,0xbe,0x97,0x43,0x15,0xb0,0xc8,0x5f,0x83,0x58,0x56, - 0x8e,0xdd,0x54,0x40,0x8c,0x2f,0xbb,0xa4,0xcb,0xce,0x11,0xd3,0xae,0x0d,0xdc,0xee, - 0x96,0xbd,0xd4,0x39,0x9f,0xd3,0xf5,0xae,0xb8,0xd8,0x23,0x14,0x5d,0x3e,0x91,0xaf, - 0x2c,0xc5,0xc2,0x23,0x70,0x0a,0x89,0xdc,0xeb,0x28,0xa5,0xed,0x78,0xbd,0x5a,0x98, - 0x05,0x82,0xd1,0x4b,0x24,0xc5,0x96,0x40,0xbc,0x4e,0x2d,0x40,0x40,0xc9,0x0b,0x91, - 0x4b,0x11,0xd7,0x42,0x54,0x62,0xb2,0x8f,0x90,0x9c,0xb6,0x0f,0x97,0xc2,0x65,0x07, - 0x4c,0x16,0xfb,0xd3,0xb9,0xf1,0xdc,0xa2,0xda,0x79,0xf6,0x77,0x8c,0xd5,0x1b,0xb9, - 0xa7,0xc6,0x3b,0xbb,0xb4,0x62,0x00,0xc7,0xad,0x15,0xbb,0xde,0x51,0xe7,0x56,0xf0, - 0x3c,0x72,0x26,0x11,0x06,0x04,0x0d,0x4f,0x9d,0x70,0xf5,0xc0,0xbe,0x3b,0xa0,0x3d, - 0xe9,0xf7,0x8d,0x1e,0x32,0x0b,0x3e,0x86,0x46,0x2d,0x68,0x1c,0x64,0x3c,0xfa,0x18, - 0x92,0xcf,0x0f,0xcb,0xff,0x0b,0x77,0x7d,0x70,0x72,0xb7,0x09,0x5c,0xec,0x1a,0x83, - 0xb1,0x03,0x80,0xdc,0xc6,0x64,0xe2,0xdd,0xf0,0x6a,0xca,0x61,0x1c,0x13,0xe4,0xb2, - 0x5c,0x89,0x70,0x61,0xfc,0x91,0x18,0xcc,0x88,0x25,0x36,0x08,0xd7,0x40,0x7d,0xf2, - 0xb0,0x37,0x9e,0xc2,0x75,0x88,0xe5,0xb4,0x83,0xce,0x29,0xea,0xe2,0x9f,0x4b,0xb7, - 0x42,0x90,0x4c,0xae,0x8f,0x1e,0xb5,0xb2,0x59,0xd3,0xd3,0x56,0x6d,0xab,0xc4,0x81, - 0x22,0x42,0x33,0xb0,0xb7,0x2f,0xd4,0x35,0x13,0x87,0x2a,0x01,0x9e,0xb2,0x39,0x5d, - 0xf5,0x01,0x83,0xdd,0xaa,0x88,0x93,0x1b,0xf6,0x05,0xd6,0x08,0x2d,0x02,0x2c,0x37, - 0x54,0xae,0xc7,0x29,0x7f,0x1e,0xb9,0xd5,0x79,0xc4,0x76,0x37,0x75,0x2b,0xee,0x9b, - 0x44,0x8f,0xc7,0xa8,0x44,0xd4,0xaf,0x1b,0xa1,0x0c,0xe7,0x5d,0xf7,0x92,0xfd,0xe0, - 0x2d,0xfb,0x70,0x62,0xff,0x80,0x82,0x5e,0x4d,0xef,0xe8,0xbe,0x53,0xd9,0x55,0xa0, - 0x7a,0x44,0xa9,0xee,0xa7,0xea,0x5f,0xe8,0xb1,0xac,0xb7,0x55,0xcc,0x93,0x1f,0xee, - 0xf0,0xf1,0x7f,0xae,0x97,0x21,0xe1,0x7e,0xb5,0x8b,0x21,0xed,0x40,0xdc,0xdd,0x04, - 0x5f,0x85,0xd7,0x97,0x20,0x9b,0x4c,0xc6,0x6b,0x5d,0xbf,0xc8,0xea,0xcf,0xac,0x3b, - 0x64,0x51,0x28,0xdb,0x8c,0x74,0x9d,0x9c,0x71,0xbc,0x33,0x45,0x6e,0xc6,0xdc,0x8b, - 0x50,0x76,0x41,0x56,0x5d,0x41,0xbe,0x9d,0x11,0x34,0xcc,0x2b,0xc7,0x2f,0x4f,0x80, - 0x95,0x74,0xee,0xb0,0x07,0x9a,0x5e,0xb6,0x27,0x68,0x04,0x4e,0x2b,0x64,0x55,0x8d, - 0x80,0x36,0x70,0x02,0x70,0x07,0x24,0x9c,0xef,0xd9,0x22,0x85,0x8d,0x40,0xdd,0x07, - 0x55,0x94,0xaf,0x52,0xc7,0x14,0xdd,0x1b,0xf4,0xf0,0x40,0x8d,0xc7,0xde,0xe4,0x3b, - 0xec,0x48,0x49,0x26,0x6d,0x6d,0x0d,0xd7,0xab,0x50,0x35,0x9d,0x8d,0x80,0xfb,0x0c, - 0x74,0x73,0xdc,0xea,0xe2,0x55,0x88,0x9a,0xfd,0x31,0xea,0x0b,0x02,0xb0,0x1d,0x7f, - 0x4c,0xd9,0xcf,0x06,0x2c,0x94,0x32,0xbf,0xad,0xef,0xf7,0xf0,0x43,0x5b,0xad,0xca, - 0x16,0x76,0x84,0x48,0x59,0xbf,0x5f,0xca,0xa0,0x83,0x89,0x35,0x41,0xe6,0xe3,0xa7, - 0xc1,0xf8,0xd3,0x28,0xdb,0xcb,0x2f,0x97,0x45,0xdb,0x09,0x3f,0x9e,0xf6,0xe1,0x2f, - 0xc7,0x85,0x31,0x17,0x98,0xe3,0xd6,0x6e,0xd3,0xbe,0xc8,0x24,0x4e,0xcd,0xf2,0xf5, - 0x94,0x08,0xf4,0x28,0x34,0xc9,0x46,0x14,0x31,0xbf,0xd1,0x56,0x7b,0x61,0x7e,0x16, - 0xef,0x78,0x67,0xe5,0x42,0x48,0x8b,0xe5,0x29,0xae,0xaa,0x06,0xaf,0xe7,0x17,0xca, - 0x1e,0xab,0x37,0x24,0xe9,0x20,0xcf,0x88,0xdd,0x2a,0xc5,0x39,0x7a,0x13,0xcd,0x31, - 0xa4,0x26,0x80,0xa8,0x63,0x97,0x81,0xab,0x7c,0x1c,0xad,0x73,0x59,0x21,0x95,0x12, - 0xa3,0x57,0x12,0x45,0x0a,0x5a,0x56,0x66,0x59,0x64,0xc3,0x77,0x72,0xa2,0xb4,0x24, - 0x70,0xd3,0x35,0xec,0x27,0x18,0xae,0x32,0x11,0x89,0x40,0x34,0x3c,0xa8,0xf3,0xd7, - 0x92,0x58,0xe4,0xb4,0xe5,0xd2,0x14,0xae,0xb7,0xdd,0xed,0x5c,0x28,0x01,0x79,0x3c, - 0x7f,0xcd,0xbc,0x13,0x99,0x62,0x35,0x9c,0x5a,0xb0,0xe4,0x3b,0x1a,0xc5,0xe3,0x66, - 0xc0,0xa5,0x9b,0x5c,0xa7,0x24,0xd9,0x72,0x92,0xd8,0xa4,0xdc,0xd0,0x05,0x22,0xec, - 0xd0,0x7c,0x3e,0x6d,0x6d,0x6d,0x61,0x9f,0x31,0xad,0x85,0x5b,0x61,0xdb,0x64,0x76, - 0x8a,0x03,0x5c,0x9e,0x7c,0x01,0x6d,0x28,0xbf,0x73,0xc9,0x2b,0xaf,0x4f,0xc9,0xb9, - 0x6f,0x05,0xae,0x30,0x74,0x50,0x85,0x7f,0x09,0x3d,0x54,0x18,0x3f,0x8a,0xc7,0xe2, - 0xc3,0x3a,0x65,0xa5,0x84,0x68,0x14,0xa6,0x2f,0x97,0xbb,0xcd,0xb6,0x95,0x91,0xef, - 0xb6,0x96,0xc3,0x24,0x9a,0x3c,0x73,0xdb,0x91,0x82,0xd3,0x33,0xc7,0xf5,0xfa,0xbd, - 0x38,0xe0,0x41,0x62,0x0c,0xd5,0x84,0x44,0x7b,0x4b,0x9f,0x6e,0x6e,0x6a,0x4f,0x00, - 0x86,0xb3,0x3e,0x7a,0x9f,0xe5,0x1b,0xe1,0x2a,0xc3,0x20,0x38,0xc5,0xcc,0xde,0xa7, - 0x40,0x04,0x75,0x36,0xc3,0xad,0xd4,0xe6,0xf2,0x04,0x37,0xb9,0x2c,0x3b,0x68,0x80, - 0x19,0x29,0xf9,0xa6,0x26,0xa8,0x86,0x71,0x0c,0x8a,0x8b,0xb2,0x2b,0x2f,0xde,0x0a, - 0x4d,0xcd,0x0a,0x2c,0x1b,0x5e,0xbd,0xec,0xfd,0x95,0x56,0x01,0xb1,0xcf,0x3a,0x81, - 0x69,0xa5,0xad,0xf0,0xc5,0x07,0x2e,0xf1,0xf9,0x56,0x07,0x6e,0x2c,0xc2,0xbf,0x4f, - 0xae,0x70,0x22,0x2c,0xf7,0xbd,0x82,0x79,0x3e,0x40,0xe5,0x2e,0x70,0xc2,0xa2,0x24, - 0x5f,0x6a,0x1c,0xbc,0x7e,0x45,0x01,0x21,0xd3,0x9d,0x27,0x6d,0x7d,0x47,0x40,0xc6, - 0xef,0xc9,0xb4,0xf2,0x38,0x34,0x51,0x44,0x7e,0x84,0x50,0xb9,0xa1,0x60,0x54,0x78, - 0xcd,0x50,0x09,0x8e,0x8b,0x18,0xf2,0xed,0x33,0x7c,0xfd,0x9e,0x7e,0x79,0xf2,0xb9, - 0xc0,0x03,0xc3,0x0d,0xc6,0x67,0x13,0x03,0x74,0x4a,0xd7,0x74,0x48,0x43,0x82,0x9e, - 0xc0,0xe2,0x5f,0x56,0x46,0x9c,0x1e,0x44,0xbf,0x1e,0x1d,0xc4,0x06,0x90,0x3d,0x12, - 0x84,0x2c,0x8c,0x09,0x4e,0x00,0x16,0x6c,0x7b,0x5f,0x97,0x9e,0x73,0x67,0x40,0xcd, - 0x76,0xc1,0x42,0x6a,0xdd,0x77,0x0e,0xe4,0x23,0x03,0x8e,0xd0,0xeb,0xc9,0x0f,0x44, - 0xf8,0x33,0xee,0xcf,0x33,0x85,0xef,0x0f,0x3f,0xec,0xbf,0x09,0xd8,0xd7,0x04,0x39, - 0x72,0x18,0x92,0xdd,0x6e,0x36,0x0f,0xba,0x4c,0x25,0xe7,0xd1,0xe8,0x5b,0xc8,0xf6, - 0x96,0xb7,0x6f,0x17,0x7d,0x71,0x9e,0xc7,0x06,0x26,0x09,0x2f,0x67,0xd9,0x27,0x00, - 0x63,0x04,0x5f,0xdd,0x8c,0x32,0xd6,0xa8,0x2e,0x3f,0xcc,0xb0,0xee,0xa0,0x55,0x88, - 0x7c,0xc3,0xfc,0xb4,0x78,0xf6,0x04,0x97,0xfb,0x6f,0xe9,0xda,0xc5,0xac,0x8e,0x45, - 0x95,0x54,0x09,0xbb,0x80,0x53,0x64,0x9a,0x35,0xec,0xe2,0xf7,0xb3,0xcb,0x22,0x27, - 0x87,0x10,0x63,0x57,0x83,0xb2,0x90,0x1d,0xc1,0x9c,0xe1,0xba,0x9f,0x95,0xf2,0xe3, - 0x67,0xda,0xa7,0xcc,0x07,0xc6,0x3f,0x87,0x55,0xb4,0xf9,0x14,0x44,0xac,0x2e,0x63, - 0xb6,0x69,0x61,0x46,0x69,0x2d,0x2d,0x81,0x21,0x07,0x9d,0xd0,0x28,0x6f,0x8c,0x0e, - 0x4b,0xfd,0xc7,0x59,0xb0,0x7f,0xf0,0x3a,0xa0,0x0f,0x83,0x8c,0xfa,0x40,0xe6,0x57, - 0x25,0x58,0xc0,0x9f,0xd3,0xb7,0x52,0xa3,0x4e,0x0f,0xe4,0xcc,0x19,0x07,0x71,0x69, - 0x1c,0x98,0x04,0x9a,0x89,0x82,0x88,0x5d,0x3d,0x60,0x1b,0x63,0x83,0x36,0x60,0xcd, - 0x37,0xb9,0x98,0x4c,0xbd,0x2c,0x36,0x0f,0x78,0x8a,0x91,0x85,0x03,0xbc,0xeb,0x9b, - 0xfc,0x14,0x4d,0xc6,0xec,0xc0,0x91,0xf7,0x08,0xf3,0x0f,0xbf,0x90,0xf9,0x49,0x67, - 0x54,0xb8,0x8e,0xcb,0xcc,0xee,0x8d,0x0f,0x44,0x71,0x1c,0x9a,0x90,0xf7,0xb1,0x99, - 0x10,0xcb,0x63,0x30,0xc8,0x5d,0xfc,0xc0,0xd5,0x9d,0x74,0x42,0x3b,0x5a,0x1b,0xe3, - 0xe4,0xf1,0xd8,0x9f,0x09,0xd7,0x39,0x03,0xc6,0xe8,0xac,0x4f,0x0c,0xc7,0x8f,0x7e, - 0x0f,0x22,0x76,0x96,0xc1,0xdb,0x8f,0x24,0x10,0xcf,0x1a,0xb1,0x9d,0x8b,0x51,0x73, - 0x71,0xef,0xfb,0x33,0x79,0xab,0x93,0x7a,0xbd,0xb2,0x0c,0x2e,0x9d,0x48,0xa3,0x5f, - 0xab,0x14,0xea,0x86,0x09,0xf9,0x02,0x49,0x02,0xe3,0xfd,0xc1,0xcb,0x54,0xef,0x0d, - 0x3a,0xe7,0xc8,0xf9,0xf2,0x76,0xce,0x36,0xd1,0x52,0x11,0x4a,0x1d,0x4f,0x32,0x4c, - 0xcb,0x52,0xce,0x70,0x42,0x50,0x3f,0x5c,0x8d,0xa6,0xe2,0xc4,0x2d,0xaf,0x3c,0x3e, - 0x64,0x1a,0xd6,0xae,0x70,0x65,0xac,0xb9,0x88,0x6d,0xa6,0xa1,0xe9,0xd7,0xca,0x75, - 0x2e,0xde,0xe5,0x89,0x91,0xd8,0xba,0xf4,0xcd,0x4d,0x6e,0x3b,0x9f,0x69,0x6c,0xfc, - 0x94,0x72,0x15,0x30,0xfd,0x19,0xb4,0x06,0x44,0x17,0x9f,0x6e,0x32,0x2a,0x9f,0xba, - 0xbc,0xdb,0x8e,0x33,0x5a,0xed,0x0f,0x32,0x22,0x86,0xe6,0xa0,0x00,0xbe,0x5f,0x20, - 0xcf,0x01,0x6c,0xbe,0xb9,0x80,0xb4,0x3c,0xe4,0xc6,0xee,0xf4,0x78,0x8c,0x4a,0xf2, - 0x62,0x00,0x2e,0xdd,0xde,0x39,0xa0,0x99,0x01,0xfd,0x8d,0xec,0xff,0x2b,0x60,0x83, - 0x05,0x6b,0x8d,0x24,0x0f,0x01,0x9f,0x4f,0x33,0xc0,0x51,0xdb,0x92,0x32,0x1b,0xee, - 0x2a,0x98,0xf2,0x9f,0xde,0x1f,0x96,0x40,0xce,0xce,0x14,0x86,0x43,0x75,0x3b,0x50, - 0x04,0x41,0xc7,0x96,0x9e,0x50,0xa4,0xee,0x98,0x4f,0x35,0x90,0x65,0x93,0x91,0x9f, - 0x0f,0x25,0x00,0x82,0x7b,0xe5,0x94,0xa5,0x85,0xda,0xec,0x01,0x0c,0xad,0x71,0x0b, - 0x11,0x4d,0xbe,0xbf,0x3a,0xf3,0xad,0x21,0x08,0xd5,0x7c,0x3a,0x48,0xc7,0xcc,0x75, - 0x3e,0xee,0x02,0xe8,0xe9,0xf0,0xaa,0xd7,0xe7,0xac,0x58,0x39,0x0e,0xa8,0x5c,0x24, - 0x0a,0x70,0xe6,0xe5,0xe6,0xed,0x09,0xc9,0x2f,0x7e,0x1d,0x64,0xdc,0x6e,0x68,0x98, - 0x6b,0x17,0x85,0x97,0x6f,0x8a,0xc9,0x2c,0xf3,0xf2,0x49,0x7b,0xbb,0xa4,0xf6,0x01, - 0x4d,0x6c,0x33,0x83,0xda,0x9e,0x0a,0x38,0xb9,0x6e,0xd2,0x59,0xa3,0x20,0x2c,0x77, - 0x73,0x98,0xd6,0x79,0x49,0x7e,0x53,0x25,0x8b,0xc8,0x87,0x4a,0x68,0x69,0xa8,0x1f, - 0x06,0x99,0x0f,0xaf,0xf4,0xb8,0xde,0x7b,0x2d,0x8a,0x7c,0x77,0xa5,0x0e,0x59,0x6e, - 0x46,0x95,0xba,0x02,0xba,0x90,0x87,0xe5,0x0c,0xad,0x3e,0x19,0xc9,0x4f,0x9d,0x55, - 0x33,0x75,0x5a,0x22,0xe4,0x29,0xbc,0x5f,0xab,0xcb,0xf8,0x5c,0x8a,0x86,0xf1,0xce, - 0x27,0x4f,0xbd,0x02,0xdb,0x24,0x52,0x3f,0x26,0xbf,0x4f,0xd4,0x41,0x94,0x5c,0xc7, - 0x15,0xad,0x92,0xeb,0x23,0x12,0x92,0x15,0x7c,0x31,0x19,0x2f,0xc1,0xb0,0xbb,0x84, - 0xfd,0x34,0x8a,0xa3,0xd9,0x92,0x17,0x5b,0x46,0xa7,0xc7,0x2f,0x84,0xc1,0xa8,0xcc, - 0x18,0xd4,0x3d,0x9e,0x0d,0x16,0xd8,0x1b,0xd6,0xf3,0xb7,0xa2,0x46,0x0a,0x20,0x83, - 0x98,0x05,0x94,0xcc,0x55,0x65,0x14,0x11,0x47,0x0d,0xb1,0xa4,0x57,0x3e,0xf3,0x0c, - 0xa9,0xdf,0x91,0xda,0x44,0x67,0x1d,0x7e,0x0b,0xf8,0x03,0x3a,0x49,0x79,0x75,0x21, - 0xfb,0x5d,0x93,0x7b,0x32,0xef,0x18,0x0f,0xef,0x4c,0x3e,0x7e,0x59,0xd3,0xc6,0x7b, - 0xd9,0xfe,0xcc,0x4c,0xa9,0xc6,0x34,0x94,0x47,0x11,0xb8,0x98,0x5d,0xc4,0x9a,0x53, - 0xe2,0x98,0xf3,0x28,0xbb,0x19,0xd3,0xe2,0x8d,0xc7,0x35,0x43,0x71,0xa9,0x16,0x16, - 0x55,0x16,0xf1,0x56,0x4d,0x31,0x74,0xd1,0xf4,0xa7,0x4e,0x3b,0xbe,0x63,0x65,0x2a, - 0xab,0x5a,0x7d,0x52,0x19,0x5c,0x5b,0x6b,0x05,0x78,0xb0,0xc0,0x72,0xbf,0xb7,0xec, - 0xf6,0xe7,0x9d,0x52,0x27,0x62,0x31,0x4f,0x1b,0x6a,0xc3,0x0e,0x15,0xf8,0xcc,0x76, - 0x63,0x10,0x91,0x33,0xec,0xf5,0xfe,0xdb,0xca,0x3c,0x08,0x9f,0xb0,0x2a,0x1b,0xfb, - 0x5f,0xbe,0xc9,0x35,0x81,0xfb,0xef,0xf3,0xfc,0x93,0xa9,0x5b,0x24,0x12,0xec,0xac, - 0x06,0x4c,0x18,0xc3,0x33,0x37,0x23,0x57,0x3d,0x9f,0xcc,0xee,0x97,0x2b,0x21,0x12, - 0xa3,0xb5,0x9f,0xf1,0x30,0x57,0x11,0x6b,0xf2,0xf1,0x38,0xb7,0x64,0xb4,0x66,0x22, - 0x79,0x20,0x04,0x5e,0x5c,0xcd,0x49,0x72,0x57,0x82,0x40,0x0f,0xdf,0x19,0xa1,0x3b, - 0x83,0x58,0xc1,0x24,0xcd,0x9f,0xcf,0x6a,0x2f,0xe9,0xb7,0x34,0x3f,0x06,0xf5,0xba, - 0xea,0x4f,0xa8,0x47,0xa8,0x7b,0xe9,0xf0,0x64,0xe3,0xa4,0x58,0xa2,0xff,0xf2,0xf2, - 0xef,0x66,0x85,0x2e,0xf7,0xcd,0xb1,0x43,0x40,0x28,0x58,0xe0,0xe4,0xc8,0x38,0x63, - 0x96,0xd0,0x94,0x82,0x90,0x18,0x17,0x10,0x54,0xe4,0x60,0xac,0x99,0x60,0xdb,0x46, - 0xd2,0xf4,0xf3,0x52,0x7c,0xbc,0x2d,0xaf,0xc6,0x33,0x8c,0x1c,0x26,0x4a,0x11,0xb1, - 0x70,0x42,0xaf,0x34,0xaf,0xd4,0x36,0x5d,0xf1,0xa7,0x46,0x18,0x50,0x89,0x25,0xc6, - 0xb7,0xb9,0x83,0xbb,0x24,0x37,0xd3,0xc0,0x23,0xaf,0xf5,0xfc,0x55,0xb7,0xfc,0x2e, - 0x66,0x09,0x5a,0x40,0x5b,0x06,0x83,0x31,0x90,0x2f,0x81,0x7c,0x01,0xc9,0xb9,0x8a, - 0x38,0x88,0xb6,0xeb,0xec,0x3a,0x10,0xa5,0x3a,0x48,0xae,0xb2,0x6e,0x05,0x89,0xbf, - 0x1e,0x7e,0x6f,0x98,0xfc,0xc5,0x44,0x02,0xbf,0x45,0x28,0xf0,0xfe,0x11,0x22,0xcd, - 0x61,0xae,0x75,0xc2,0x2f,0xe9,0x98,0xbc,0x74,0x5e,0x0b,0xf0,0x32,0x98,0x5f,0xf5, - 0xf4,0x23,0xcd,0x6a,0xfa,0x11,0x2f,0xe7,0xce,0x57,0x73,0x81,0x89,0xf4,0xaf,0xb4, - 0xb8,0xb5,0x44,0x9c,0xf9,0x10,0xf0,0x87,0x6d,0x23,0xcd,0x4e,0x87,0xf9,0xca,0xc7, - 0xb8,0x57,0x72,0x96,0xeb,0xe8,0x4b,0x56,0x9e,0x2c,0xcf,0x34,0x9d,0x5d,0x13,0x72, - 0x5d,0x09,0xe9,0x65,0x57,0x64,0xd0,0xbe,0x17,0x2c,0x70,0x83,0xbb,0xb4,0x6f,0x11, - 0xfa,0x60,0x46,0xa9,0x55,0xe6,0x67,0xc1,0xeb,0xae,0x58,0x79,0x2d,0xde,0xe7,0x35, - 0xab,0xbb,0x00,0x57,0x3c,0x94,0x4a,0x5b,0x4d,0xfc,0x5c,0xe1,0xd6,0x38,0x07,0x3f, - 0x80,0xdd,0x7e,0xfe,0x79,0x8e,0xbe,0xad,0xd6,0x01,0xf8,0xc6,0x86,0x01,0xf2,0xad, - 0x83,0x11,0xaa,0x4e,0xed,0xce,0x3a,0x14,0x89,0x40,0x7b,0xcd,0xd5,0xfc,0xf3,0xe9, - 0xe7,0xd3,0x21,0x77,0x17,0x3c,0x07,0xfc,0x42,0x7c,0x39,0x25,0xfe,0x44,0x37,0xb4, - 0xa4,0x03,0x6f,0x9c,0xcc,0xda,0x9c,0xa7,0x9d,0x9e,0x30,0xb4,0x8f,0x51,0xc0,0xee, - 0x6a,0x82,0x39,0xa4,0x68,0x06,0x37,0xd7,0xa6,0xa3,0xf1,0x4c,0x17,0x16,0x15,0x86, - 0x57,0x3c,0x36,0xaf,0x82,0xa4,0xfa,0xdb,0xf6,0xce,0xb3,0x5b,0xf8,0xaf,0x0b,0x20, - 0x79,0x32,0xd2,0x21,0xf3,0x87,0x55,0xb9,0xa6,0x19,0xf2,0x00,0x98,0x08,0xae,0x33, - 0x91,0xce,0x32,0x43,0xbb,0xf5,0x10,0x33,0xff,0x30,0xd8,0x86,0xc7,0x25,0xeb,0x91, - 0x64,0x58,0x67,0x44,0x4b,0x93,0xed,0x67,0xcb,0xdd,0x9d,0x25,0x5c,0xf3,0x5d,0x61, - 0x0d,0x38,0xc4,0xf4,0x8b,0x07,0xbb,0xa0,0x1b,0x52,0x46,0xf4,0x26,0xe7,0x25,0x49, - 0xc8,0x1f,0x61,0xa8,0x10,0x64,0x90,0x43,0x63,0x11,0xce,0xd4,0x15,0x83,0x45,0xb3, - 0xbe,0xbd,0xd3,0x24,0x6f,0x88,0xda,0x52,0x58,0x39,0x42,0x29,0x42,0x46,0x77,0xc0, - 0xc2,0x8a,0x8b,0xb3,0xfe,0x8c,0x82,0x1a,0x06,0x26,0x15,0x6e,0xf4,0xb5,0x65,0xce, - 0x4f,0x1b,0x7c,0x28,0xda,0x18,0x88,0x82,0x83,0x5a,0xea,0xa7,0x83,0x80,0x13,0x83, - 0x3c,0xd1,0x1a,0x52,0xda,0xad,0x6e,0x7b,0x7d,0x0c,0x3a,0x61,0x0a,0x3d,0x42,0x0c, - 0x65,0x7d,0xed,0x0e,0xfa,0xf9,0x48,0x3e,0x4b,0xdb,0x11,0xc1,0x3b,0x4a,0xaa,0xf1, - 0x0d,0xd8,0x58,0x09,0xcd,0x13,0xb6,0x01,0x92,0x0d,0x45,0xe6,0x22,0x90,0x6d,0x26, - 0xfa,0xe5,0xc4,0xf8,0xd0,0xa7,0x8b,0xcf,0xd4,0x07,0xce,0xce,0x06,0xa7,0x5e,0x63, - 0x8e,0x30,0x5b,0x0e,0x1a,0xc0,0x93,0xf1,0x86,0x0b,0x60,0xd8,0x34,0xff,0xc2,0xbb, - 0x27,0xec,0x18,0x0a,0xae,0x0c,0x87,0xd0,0xa8,0x91,0xe4,0x6d,0x4c,0xc6,0x43,0x22, - 0x6b,0x9f,0x52,0x02,0x4a,0xa9,0x53,0x4a,0x40,0x2a,0x84,0xb9,0x39,0xce,0xcb,0x32, - 0xaf,0x18,0x5e,0x2e,0x3b,0x2c,0x7d,0xcd,0xcb,0x1b,0x4e,0x77,0xb9,0x8a,0x76,0xbb, - 0xa2,0x0e,0x1e,0x35,0x83,0x94,0xa6,0x24,0xed,0xda,0xbc,0x03,0x6f,0xf8,0x98,0xd8, - 0x57,0x63,0x15,0x26,0xec,0xa1,0x67,0x2b,0xf1,0x40,0x77,0x8d,0xbc,0xe4,0x08,0x93, - 0xdf,0x01,0x3c,0x65,0x46,0x3e,0x7b,0x72,0xe7,0x01,0x4a,0xa1,0x02,0x6f,0x5e,0xd6, - 0x67,0xb8,0x1a,0xb3,0xea,0xa2,0x27,0x59,0x08,0x96,0x1b,0x2e,0x4f,0x37,0x85,0x96, - 0xf3,0x23,0x6d,0x0a,0xff,0x73,0x73,0xb4,0x6d,0xae,0x8a,0x11,0xb8,0xce,0x90,0x38, - 0x0d,0x59,0x80,0x2b,0x80,0x9f,0x31,0xb8,0x9c,0x95,0xe3,0x05,0xd6,0x5f,0x3a,0xda, - 0xc0,0xbe,0x01,0xbc,0x4e,0x2c,0x69,0xc2,0x99,0x61,0xb5,0x86,0xc3,0xef,0xd9,0x00, - 0xf8,0x64,0xf5,0x8a,0x35,0x30,0x81,0xe7,0xf3,0xd1,0x7b,0x24,0x70,0x7e,0x5e,0xe0, - 0x83,0x9c,0xe5,0xf6,0xb2,0xe8,0x4a,0x6c,0x97,0xd1,0x60,0xcd,0x58,0x22,0xd6,0x2b, - 0xf4,0x12,0x90,0xca,0x32,0x88,0x96,0x41,0x17,0x03,0x00,0xbd,0xcb,0xac,0x1f,0x8d, - 0xbb,0x19,0xc9,0x79,0x7e,0xd5,0xb7,0x8c,0x9f,0x90,0xfb,0x27,0x4a,0xd0,0xd5,0xad, - 0x76,0xab,0xde,0x69,0x83,0x7b,0x20,0x5d,0x9d,0x98,0x59,0xb3,0xec,0xfe,0x0f,0x07, - 0x81,0xfd,0x81,0xc1,0xad,0x73,0x94,0xc4,0xb1,0x19,0x74,0x26,0x2e,0x35,0xba,0x13, - 0x18,0x2d,0xd3,0xf9,0x2e,0x3b,0xa5,0xbe,0x42,0xe5,0x7b,0xb0,0x3e,0x73,0x82,0xd9, - 0x49,0x5b,0x4a,0xe2,0xe7,0x92,0xfa,0x0a,0xe7,0x65,0x35,0x73,0xae,0x79,0x0d,0x0f, - 0xf3,0x38,0x23,0x1a,0x05,0xe4,0xd5,0xfb,0x24,0xa0,0xd8,0x10,0x1d,0x73,0xb2,0xc5, - 0x7e,0x5e,0x79,0x7a,0xd1,0xcc,0xb9,0x6a,0x83,0xce,0xb5,0x90,0xcd,0xdc,0xe0,0xd7, - 0x38,0x4b,0x67,0x18,0x67,0xe4,0xdd,0xc7,0xd1,0x75,0x38,0xd9,0xc7,0x19,0xf5,0x8c, - 0xb7,0x87,0xb9,0xdf,0xc4,0x24,0x38,0x47,0x23,0xdf,0x40,0x3c,0xf0,0x64,0x89,0x3a, - 0xe4,0x3c,0x31,0x6b,0x64,0x80,0x02,0x81,0x56,0x5c,0x89,0x77,0x4e,0x0b,0x51,0x3c, - 0xd3,0xce,0x2a,0x42,0x8f,0x72,0xc9,0x89,0xf9,0x99,0x1a,0x88,0x8c,0x65,0xc8,0xd8, - 0xc6,0x38,0xd8,0xf6,0x06,0x3a,0x9f,0x5e,0x01,0xae,0x7c,0xa8,0xd7,0xc5,0x06,0xda, - 0x87,0xa6,0x95,0x8b,0x28,0x50,0x64,0xe5,0x22,0x6f,0x1e,0xa4,0xbb,0x75,0xfe,0x81, - 0x35,0xb2,0xce,0x74,0xe3,0xe5,0x38,0xe7,0xf9,0x89,0x76,0xef,0x0c,0xe6,0x7d,0x97, - 0x92,0x1a,0x58,0x1f,0x4d,0x75,0xe1,0x44,0x75,0x67,0x6b,0x0e,0x4e,0xb5,0x9a,0x47, - 0xc7,0x17,0x48,0x5e,0x12,0x3f,0x96,0x5d,0xec,0x27,0x19,0x93,0x18,0x7c,0xf1,0xc6, - 0x9c,0x7a,0x1d,0xe7,0x1f,0xe1,0xfc,0x87,0x68,0xbb,0x19,0xd0,0xf5,0x3a,0x76,0xc1, - 0x0f,0x95,0x25,0x39,0x0c,0x9c,0x29,0x5b,0x62,0x8f,0x26,0xc6,0x34,0xbb,0x62,0x0f, - 0x46,0xc4,0xc4,0x0b,0x3e,0xff,0x34,0x14,0x61,0xbc,0xeb,0x17,0x6e,0x16,0xc7,0xcc, - 0x2e,0x71,0xcd,0xf3,0x48,0xfc,0xf1,0xca,0x29,0x23,0x5d,0x92,0x9c,0x39,0xe9,0x4c, - 0xa5,0x66,0x30,0xc8,0xe6,0x59,0xb3,0x5c,0x65,0xc8,0x81,0xec,0x1c,0x0e,0x38,0x20, - 0x89,0xe1,0xe6,0xd3,0x1e,0x74,0xa0,0x9d,0x27,0x0b,0xb6,0xa8,0xeb,0x0d,0x26,0x3d, - 0xe4,0x30,0xdf,0x4d,0xe9,0x46,0xe1,0x53,0x5d,0xcd,0x5c,0x75,0xf9,0xde,0x90,0xb9, - 0xc5,0x9e,0x6c,0x55,0x4f,0xe8,0xd4,0x91,0xf7,0x3b,0x0c,0xbc,0x7f,0x8d,0xa3,0x34, - 0x62,0x74,0xce,0x4b,0xf9,0xe4,0x80,0x9b,0xad,0x17,0xd9,0x45,0x0d,0x7a,0x16,0x17, - 0xf1,0xc7,0x70,0xd2,0x7c,0xe7,0xa8,0x34,0xac,0x1d,0x71,0x32,0xf3,0x9c,0x6a,0x13, - 0x26,0xb3,0xac,0x32,0x71,0x45,0xa3,0x75,0x6e,0x78,0x52,0xcc,0x26,0x39,0xdf,0x4d, - 0xa8,0x71,0xa4,0x07,0x67,0x58,0x48,0xae,0xcc,0x77,0xeb,0x95,0x94,0xab,0xef,0x27, - 0xd7,0x42,0x34,0x96,0x7a,0xd5,0x99,0xe7,0x55,0x99,0x75,0x66,0xe0,0x09,0x3c,0xb3, - 0x77,0x17,0x32,0x8d,0x29,0x02,0x7b,0x16,0x3d,0xd4,0x66,0x63,0x6c,0xf9,0x17,0x2c, - 0xa3,0xeb,0xcf,0x74,0x31,0xa5,0x39,0x1d,0xa5,0xbf,0x50,0x80,0x92,0xed,0x63,0x83, - 0x39,0x37,0x53,0x64,0x8e,0x2f,0xf8,0xe0,0x65,0x55,0x87,0x57,0x5c,0x36,0x3d,0x6f, - 0x15,0x51,0x05,0x49,0x3b,0xf5,0xdd,0xdd,0x67,0x66,0x7e,0x77,0xc9,0xe2,0x19,0x4b, - 0x27,0xab,0x62,0xef,0xe0,0x6b,0xfe,0x9d,0x6c,0x62,0x93,0x69,0x5b,0x68,0xe6,0xda, - 0x1f,0xb7,0xd6,0xf3,0x29,0x91,0x76,0xf4,0x3e,0x0f,0x21,0x1f,0xb1,0x93,0x5f,0xd6, - 0xc5,0x67,0x50,0x08,0xc4,0x65,0x68,0x91,0xf7,0xc6,0x27,0x36,0xe7,0x83,0x76,0x54, - 0xe2,0xc0,0xe4,0xdd,0x8e,0x24,0xed,0xbf,0x58,0x7b,0x49,0xd7,0x31,0x5e,0xfd,0x2d, - 0xc8,0x13,0x02,0x9a,0xba,0x59,0xb2,0x39,0x70,0x0d,0x70,0x0f,0x7d,0x1e,0xe0,0x38, - 0x8a,0x0a,0xcc,0x4b,0xb1,0xdc,0x59,0x60,0xf1,0x4b,0xab,0xb7,0xed,0x62,0x59,0x91, - 0x8d,0x47,0xac,0xc4,0x78,0xfb,0xe6,0x3d,0xce,0x7e,0x78,0x13,0x21,0xa7,0xe1,0x6a, - 0x06,0xee,0xb5,0x0c,0x67,0x6a,0x90,0x5b,0x92,0xab,0x31,0xed,0xe4,0x25,0xbb,0x26, - 0x38,0xb4,0x89,0x56,0x8a,0x07,0x00,0x7e,0x55,0x8f,0xe3,0xe2,0x14,0xa8,0xc6,0x34, - 0xbb,0x2c,0x43,0xd2,0x30,0xae,0x8b,0x89,0x08,0x1a,0xc7,0xc1,0xca,0xeb,0x95,0x39, - 0x73,0xd1,0xcd,0x23,0xe9,0x2e,0xb0,0x91,0x64,0x0a,0x2b,0x82,0xcd,0x98,0x21,0xd9, - 0x90,0x4e,0xdf,0x7f,0x43,0x6b,0xa6,0xab,0x91,0x2e,0x3d,0xbb,0x98,0x42,0xc9,0x58, - 0x8c,0x01,0x33,0x37,0x1b,0xb5,0xac,0x6a,0xde,0xf8,0x3b,0xb8,0xcd,0x72,0x65,0x45, - 0x75,0x69,0xb2,0x50,0x7a,0x40,0x8b,0x59,0x6e,0xcc,0x26,0x18,0x1d,0x23,0x5f,0x28, - 0x74,0x67,0x83,0xde,0x79,0xdf,0x9a,0x4d,0x0e,0x21,0x57,0xd1,0xe7,0x45,0x08,0x99, - 0xcf,0xab,0x72,0x65,0xe8,0x01,0xa7,0xdc,0x8f,0x54,0x16,0xf4,0x25,0x0b,0xaf,0x1c, - 0x07,0x22,0x85,0x66,0xb7,0x30,0xca,0x75,0x72,0x76,0x3b,0x57,0x7c,0x2e,0x6a,0x60, - 0x33,0x53,0x26,0x25,0x42,0x80,0xf1,0xbc,0x6d,0x03,0xcb,0xce,0x44,0xa1,0x89,0x15, - 0x92,0xe6,0xc0,0xe5,0xdd,0x40,0x21,0x35,0xc1,0x01,0xc3,0xba,0x78,0x44,0x1b,0x16, - 0xbd,0xeb,0x20,0x14,0xdf,0xa0,0x63,0x06,0xf2,0x91,0xa8,0xbe,0x99,0x75,0xc8,0x62, - 0x7d,0x09,0x91,0xea,0xd6,0xba,0x0f,0xd3,0xbe,0x79,0x51,0x8a,0xf4,0xa3,0x3c,0xb9, - 0xe9,0x28,0xa1,0xbe,0x7f,0xb7,0xff,0xe1,0x87,0x42,0x15,0x25,0xd1,0x7e,0xfa,0x23, - 0xdd,0x05,0x7b,0x49,0xbc,0xc3,0x27,0x3f,0xe0,0x54,0x4d,0xac,0x0d,0xaf,0x86,0xe4, - 0x86,0x7e,0xcd,0xd6,0x98,0xf3,0xce,0x7d,0x74,0xf3,0x95,0xe8,0x8e,0x56,0xa0,0x3b, - 0xeb,0x18,0xb7,0xb0,0x9c,0xa9,0x33,0x16,0x6b,0x43,0x3a,0x3b,0xa4,0xa5,0x3d,0xb4, - 0xbb,0x62,0x5d,0x38,0x19,0x1a,0x85,0x9e,0x66,0x67,0x4d,0x51,0x09,0x07,0x16,0x5a, - 0x06,0x4d,0x1d,0x00,0x0e,0x12,0xc8,0x8e,0x03,0xde,0x35,0x37,0x9b,0x09,0xfa,0x3e, - 0xed,0xeb,0x08,0xfe,0x62,0x00,0x09,0xb2,0xe3,0x22,0x41,0x62,0x8e,0x64,0x5c,0x81, - 0xa3,0xd3,0xa5,0x63,0x64,0x53,0x58,0x12,0x60,0xd9,0x1c,0x60,0x27,0xce,0x58,0x1c, - 0x77,0x22,0x3c,0x1b,0xfc,0xdc,0xc9,0x22,0x5a,0xbb,0xaa,0x91,0x11,0x36,0x0c,0xfc, - 0xe1,0x60,0x04,0x73,0x4b,0x3e,0xa6,0x7a,0x77,0x66,0x20,0x5e,0xa4,0xb6,0x09,0x11, - 0xc4,0xdd,0xf7,0x39,0x1c,0x9c,0x40,0xcf,0xa9,0x5b,0xc7,0x8b,0xdc,0x87,0xc0,0x15, - 0x32,0x9e,0x91,0xa9,0x1e,0xbb,0x12,0xe0,0x2b,0x27,0xf8,0xc8,0x40,0x29,0xff,0xe5, - 0xf8,0xab,0x00,0xe6,0x97,0xe7,0x70,0xb4,0x5c,0xe5,0x1a,0xd2,0x0b,0x43,0x71,0x55, - 0x19,0x87,0xc2,0x21,0x25,0x33,0xe4,0x7f,0x3a,0xc5,0x8b,0xa1,0xaa,0xb6,0xad,0x71, - 0xa0,0x7d,0x73,0x8a,0x24,0x77,0xde,0x1d,0x21,0xc6,0xc6,0xd7,0x51,0x9e,0x21,0xd9, - 0x61,0xab,0x29,0xdb,0x3c,0xd1,0x66,0x4c,0x7a,0x6d,0x5f,0x59,0x11,0xf3,0xca,0xef, - 0xd1,0x03,0xfa,0x9d,0x31,0xfb,0x3b,0x1b,0x34,0x48,0xff,0x3e,0x87,0xb3,0x93,0xc0, - 0xfa,0x6f,0x6b,0x8b,0x64,0x01,0x8b,0x6f,0x74,0x19,0x99,0x9b,0x07,0x19,0x09,0xdb, - 0x3e,0x9d,0x25,0xf2,0xaa,0xa1,0x1d,0xb0,0x3b,0x55,0x76,0x06,0xc1,0x4a,0xfc,0x0d, - 0xf6,0x1c,0xae,0x35,0x2c,0x79,0x79,0x76,0x3f,0xea,0xc5,0xb1,0xdb,0xb4,0x88,0x54, - 0x96,0x7e,0xf4,0x86,0xd3,0xc7,0x90,0x22,0xc8,0x09,0xe8,0x07,0xd8,0x1a,0xcd,0x6e, - 0x61,0xe4,0x72,0x6b,0x07,0xe7,0xbf,0x11,0xab,0x22,0xfe,0x1e,0xf3,0xdf,0xd5,0x81, - 0x32,0xb5,0x2f,0xf9,0x03,0x37,0x96,0x72,0xe6,0x2b,0x49,0x9a,0x97,0x49,0x9a,0x33, - 0x49,0x73,0x90,0x34,0xaf,0x24,0x89,0xbf,0xc7,0xf3,0x3f,0x4e,0xd2,0x5c,0x48,0x72, - 0x8c,0x58,0x0e,0x5f,0xbf,0x3b,0x62,0x31,0x24,0x17,0x37,0x12,0x7d,0x30,0x2b,0x03, - 0xb3,0xc8,0x40,0xf2,0xe9,0x55,0x06,0xcd,0x6f,0xbe,0xe6,0xbd,0xc0,0xc6,0x90,0x77, - 0xbc,0xb2,0x33,0xe2,0x99,0x57,0xbe,0xd1,0x1b,0x6b,0x15,0x9e,0x3e,0xdd,0x7d,0xda, - 0x0e,0x9a,0xb4,0x9c,0xcf,0x02,0x04,0xe4,0x0d,0xdc,0xa3,0x11,0x24,0xcf,0x44,0xf5, - 0xab,0x8f,0xfc,0xc1,0xda,0xb3,0xeb,0x23,0x7f,0x98,0x03,0x3f,0x49,0x01,0xfe,0x0d, - 0xa2,0x7c,0xe5,0x10,0x74,0xb1,0x16,0x80,0x16,0x20,0x5f,0x89,0xc7,0x02,0x4d,0xbb, - 0x87,0x82,0x72,0x7e,0x65,0x81,0x01,0x55,0x32,0x64,0x58,0xbf,0x01,0x33,0xbc,0x05, - 0x6d,0x41,0xee,0xb6,0x16,0xc6,0xbe,0x06,0x0f,0x64,0x4b,0x20,0xf4,0x61,0xea,0x81, - 0x3a,0x98,0x27,0xb3,0x7f,0xfb,0xed,0x28,0xc8,0x5f,0xe9,0xa8,0xc1,0xcc,0x8d,0x59, - 0xf0,0xb2,0xb7,0xf3,0xf4,0xe9,0xf6,0x77,0xf8,0x46,0xe1,0x23,0x61,0x77,0x3e,0xbe, - 0x94,0x95,0x98,0x41,0x91,0x4f,0xfa,0xa1,0xcc,0x9d,0x84,0x1d,0x53,0xa2,0x2e,0xd0, - 0x5b,0x14,0x02,0x25,0xe1,0x83,0xe3,0x24,0xe0,0x53,0xb0,0x83,0xc3,0xbf,0x62,0x3d, - 0xc5,0x1b,0xa8,0x6c,0x0b,0xf2,0xf0,0xa9,0x7b,0x80,0x71,0xf4,0xf7,0xf7,0x2f,0x0f, - 0xd3,0x90,0x74,0xc1,0xa8,0xeb,0x14,0xfb,0x9e,0x7e,0x32,0xbf,0x9d,0x7f,0x22,0x83, - 0x3d,0x14,0x91,0x98,0xe5,0x75,0x72,0x3e,0x9b,0x7e,0x42,0x32,0xff,0x52,0x9f,0x4b, - 0x3a,0x28,0xe2,0x13,0xe5,0xa2,0xcd,0x14,0x24,0x03,0x02,0xc5,0x26,0x46,0xb9,0xd1, - 0x01,0xf8,0x29,0x26,0x03,0x68,0xa1,0x13,0x4c,0x6b,0x9f,0x0c,0xb7,0x42,0x6b,0x88, - 0x17,0xa5,0x1f,0xbc,0x7b,0xf3,0x7e,0xff,0xed,0xab,0x77,0x6f,0xd5,0xd6,0xc9,0x3d, - 0x95,0xd1,0x63,0xe7,0x15,0x47,0x31,0xd5,0xd6,0x1f,0x17,0xe6,0x00,0xf4,0xe1,0x06, - 0x1c,0x7f,0xd6,0x5a,0xc3,0xb7,0x21,0xe1,0xa7,0x12,0x5e,0x38,0x22,0x9a,0xea,0x81, - 0x80,0x11,0x56,0x59,0x90,0xc9,0xdd,0x39,0xee,0x6b,0xbc,0xbd,0x39,0x13,0xeb,0x2e, - 0x39,0x2c,0xc3,0x70,0x63,0x02,0x08,0xca,0xd6,0x8c,0xb1,0xea,0x93,0x6a,0xdb,0x82, - 0xfc,0x23,0x3e,0x43,0x83,0x1a,0x30,0x34,0xe7,0x1b,0x8c,0x38,0x03,0x9f,0x64,0x60, - 0x31,0x97,0x43,0xb4,0x02,0xf9,0x60,0xe7,0x3e,0x9b,0x90,0xbe,0x33,0x27,0xa1,0xcf, - 0x9b,0x3b,0x0b,0x95,0x6d,0xc2,0x21,0x68,0xa8,0x46,0x81,0xf9,0x12,0xc8,0x27,0xce, - 0x09,0xda,0x69,0x2f,0x60,0x83,0xf1,0x78,0x91,0x43,0x51,0xf5,0xe9,0x48,0xe6,0x5b, - 0x83,0x29,0x9d,0x89,0x18,0x44,0xe8,0xb8,0xaa,0x73,0x2a,0x88,0x05,0x3d,0xdc,0x5f, - 0xd1,0x81,0xf9,0x97,0x2d,0x12,0x06,0xb7,0xf9,0x58,0x76,0xcf,0xcc,0x15,0xb5,0x64, - 0x06,0x87,0x18,0x84,0xf1,0xe3,0x49,0x4f,0x5a,0xe9,0xb9,0x25,0x5a,0xe6,0xc4,0x0c, - 0x2a,0x1e,0x22,0xd0,0x63,0x4a,0x01,0x7d,0xa1,0xdb,0x68,0xc5,0xa5,0x20,0xf6,0xdd, - 0xb9,0xb6,0x24,0xce,0xc3,0x0b,0x46,0x5d,0x43,0x9b,0x62,0x74,0x7f,0x8d,0x01,0x5a, - 0x89,0x41,0x95,0x36,0x58,0x69,0xb0,0xfa,0x18,0x1b,0xf8,0x71,0x19,0x96,0x75,0xdf, - 0x62,0x4c,0x0d,0xb7,0x32,0x23,0x0d,0xa5,0x5b,0x3a,0x5d,0x97,0x7e,0x33,0x62,0x32, - 0x3e,0x5c,0x61,0x2e,0x13,0xfd,0xb5,0xce,0x90,0x93,0xf1,0x1a,0x2a,0x78,0x08,0xb3, - 0xe1,0x16,0x7e,0x57,0xc1,0x05,0x02,0x17,0x28,0xa0,0x36,0x1a,0x93,0xd7,0xb9,0xb1, - 0x58,0x22,0x2b,0xe3,0x4c,0xfb,0x90,0xbc,0x13,0x1e,0xfd,0x9a,0xf3,0xac,0xa5,0x5b, - 0xa0,0xe7,0xd4,0xe4,0xf5,0xc9,0x8c,0x3d,0x07,0xbc,0x08,0x9e,0x93,0x62,0xf6,0x45, - 0x68,0x1d,0xc2,0x15,0x6c,0xb6,0xf8,0xab,0xd9,0x9b,0x0c,0xca,0x26,0xaf,0xda,0x4d, - 0xe8,0xf8,0x0d,0xfa,0x4b,0x36,0x1e,0x84,0xf9,0x8b,0x6c,0x9d,0x84,0x10,0x82,0xcc, - 0xfb,0x88,0x98,0xd2,0x24,0x4a,0x2b,0xf7,0x90,0x3e,0x1c,0xbb,0x9d,0xf3,0x61,0x98, - 0x68,0xd0,0x26,0xe3,0x2d,0xac,0x37,0x7d,0xcb,0x4a,0x1e,0xa2,0xbc,0xd5,0x65,0xd4, - 0x8e,0x31,0x25,0x3f,0xa3,0xb9,0xd8,0x92,0x52,0x8f,0x59,0xd6,0xd9,0xe8,0x0d,0x32, - 0x76,0x94,0x6a,0x1f,0xe1,0xc3,0x7e,0x40,0x4f,0xee,0x69,0xcf,0xa5,0x42,0x43,0xcc, - 0x18,0x82,0xe8,0x47,0x1a,0xc3,0x7a,0xf8,0xdc,0x32,0x73,0xe7,0xb7,0xcd,0x6f,0x9b, - 0xb1,0x75,0x94,0x2f,0x68,0xf0,0x58,0x89,0x45,0x4f,0x62,0x45,0x95,0xca,0xa3,0x60, - 0x22,0x47,0xe4,0x5d,0x51,0x96,0x82,0x2f,0x47,0x07,0xef,0x0b,0xde,0x62,0x4a,0x16, - 0x9b,0xd4,0x2f,0xb5,0x57,0xfd,0xe3,0x26,0xa3,0xe5,0x6a,0xc7,0x6b,0xcd,0x93,0x7a, - 0xbe,0xa2,0xf5,0x7e,0xe3,0x24,0xcd,0xf4,0x60,0x1b,0xa5,0xf5,0xd9,0xd4,0x58,0xd2, - 0x96,0x65,0x94,0x38,0x99,0x75,0xd4,0x74,0xd2,0x38,0xc9,0xf1,0x6b,0x57,0x61,0x6e, - 0x59,0xca,0xe9,0x9e,0xee,0x26,0xa2,0x04,0xb8,0x5b,0x81,0x6a,0x4c,0x1b,0xd2,0xa1, - 0xce,0x8d,0x72,0xf0,0x0c,0x72,0x75,0xe6,0xd3,0xf9,0xb7,0x1a,0x01,0x3a,0x94,0xe8, - 0x48,0xa5,0x3a,0x6c,0xd3,0xc2,0x29,0xc8,0x82,0xe7,0xba,0x6c,0xfe,0xed,0x9c,0x5f, - 0x60,0xce,0xf2,0xa5,0xe6,0x28,0x58,0x01,0xf9,0x6b,0x90,0xff,0x91,0xc6,0x1c,0xff, - 0xbf,0x31,0x87,0x6b,0x19,0xe1,0x2c,0x85,0xa6,0xb3,0xc1,0x35,0xe4,0x95,0x2e,0x08, - 0xc5,0x0a,0x63,0xb5,0x0d,0x48,0x50,0x6d,0x28,0xb1,0xde,0x36,0x24,0x58,0x63,0x1b, - 0xf2,0xc7,0x6d,0x2c,0x82,0x3f,0x6f,0x63,0x11,0x7c,0x81,0x8d,0x85,0x20,0x58,0x7f, - 0xa0,0xff,0x65,0xa6,0x16,0x5c,0xfd,0xfb,0x2d,0x2d,0xbe,0x40,0x15,0xf5,0x05,0x7a, - 0x27,0xd7,0xc2,0xe3,0x40,0x4d,0x09,0x51,0x96,0x2b,0x9d,0xbf,0xfc,0x90,0xce,0x3f, - 0x00,0x2c,0x19,0x63,0x47,0xf2,0xa0,0x42,0x91,0x15,0x13,0xfe,0x49,0x82,0x8e,0x1f, - 0xb8,0x7c,0x91,0x43,0x27,0x1d,0x9f,0x79,0x12,0x99,0x02,0x88,0xa5,0x90,0xa8,0x46, - 0x79,0x5a,0x95,0x8d,0xb1,0x41,0xd9,0x5c,0x7e,0x87,0x33,0xf0,0x6f,0x9b,0xcb,0x9d, - 0x6f,0x64,0x75,0x54,0x18,0x8f,0xca,0x30,0x51,0x6b,0x53,0xe7,0xd8,0xd9,0x31,0x89, - 0x75,0xa0,0x5c,0x33,0x52,0x2e,0x45,0x8a,0xfc,0x63,0x16,0xb2,0x4a,0x8e,0x67,0x14, - 0xeb,0xd9,0xbf,0xfa,0x2d,0xb3,0xfe,0xe0,0x9f,0xe1,0xf9,0xec,0x1f,0xe0,0xc1,0x4a, - 0xab,0x90,0x87,0x9f,0xc3,0x07,0xf7,0x9f,0xc3,0xaf,0x3f,0x8e,0x56,0xae,0x81,0x11, - 0x72,0xa4,0x0e,0xe9,0xb3,0xfe,0x00,0xdf,0xed,0x66,0x72,0x70,0xbf,0x64,0xc3,0xf0, - 0xff,0xc4,0x63,0x6c,0xff,0xa8,0x39,0x88,0xf0,0x58,0x27,0xfd,0xc8,0x74,0x5a,0xdd, - 0x63,0x5d,0x75,0x28,0x48,0x7a,0x95,0xe9,0xbc,0x19,0x15,0x2e,0xad,0xe8,0x16,0xdc, - 0x84,0xef,0xf2,0xb1,0xe3,0x93,0xd7,0x40,0x2e,0x8e,0x4f,0x38,0xf8,0x71,0x9e,0x23, - 0xbc,0x73,0x70,0x21,0xca,0x56,0xa6,0xd7,0x2b,0x4b,0xa8,0x63,0x83,0x5a,0xed,0x31, - 0xab,0x1c,0x7d,0x6c,0x08,0x4c,0xe1,0x7c,0x01,0x8e,0x97,0x23,0xf8,0xfd,0x18,0xd1, - 0x23,0x9d,0x0b,0x2d,0xf3,0xa3,0xa8,0xa5,0x8c,0xce,0x8f,0x72,0x8a,0xae,0xbe,0x3a, - 0x8e,0x9b,0x27,0xb1,0xe5,0x00,0x9f,0xac,0xf7,0x52,0x7f,0x01,0x21,0x3e,0x56,0xbc, - 0xf8,0x9f,0x4a,0xdd,0x6a,0xbf,0x72,0x91,0xf1,0x16,0x12,0x89,0x58,0x58,0xca,0xd1, - 0xf8,0x52,0x5c,0x8c,0xb0,0x73,0x11,0xd3,0xb9,0xf8,0x27,0x5b,0x8a,0xe2,0x81,0x4e, - 0x0f,0x96,0x7c,0xfe,0xb1,0xcc,0x0f,0x80,0x96,0xc6,0xfd,0x88,0x71,0x3c,0x82,0x33, - 0xbb,0xb8,0x5c,0x2b,0xad,0x6e,0xf4,0x51,0xce,0xde,0xe2,0x3d,0xe6,0x03,0xde,0xf5, - 0x40,0x2c,0xde,0x8b,0xbf,0x72,0x6a,0xbf,0x81,0x4a,0x8b,0x73,0xac,0x4b,0x61,0x85, - 0x30,0x96,0x3e,0x88,0x1a,0x90,0xda,0x2b,0x5d,0xb0,0xc6,0xb6,0x55,0xdf,0x4e,0xe6, - 0xdd,0x61,0x0b,0x4e,0xb7,0x68,0x99,0x64,0x7e,0x6f,0x29,0xb5,0x37,0x83,0x1c,0x68, - 0x85,0x61,0x92,0x5d,0x9d,0x53,0x32,0x36,0x9b,0x94,0x4c,0x31,0x5a,0x5a,0xe6,0x3e, - 0x30,0xed,0xcb,0xc6,0xf2,0x8c,0x21,0x67,0x9e,0xee,0xdc,0x2e,0x76,0x44,0x8c,0x12, - 0x2d,0xad,0x19,0x51,0xec,0x07,0xf4,0x58,0x3a,0x59,0xa2,0xce,0x67,0x92,0xa2,0x25, - 0x12,0xf1,0x48,0x75,0x22,0x37,0xe7,0x5b,0xa2,0x06,0x2d,0xd4,0xcc,0x69,0xaa,0xa8, - 0xf2,0xbe,0x45,0x1f,0x51,0x11,0xd3,0xf2,0xda,0x49,0xd3,0x72,0x57,0xcc,0xaf,0x4b, - 0x46,0x0a,0xb2,0x57,0xa1,0xe6,0x6a,0xe9,0xe5,0xbe,0xb8,0xe8,0x2d,0xda,0xc9,0x2b, - 0x3b,0x08,0xe3,0x45,0xbb,0x66,0xe9,0xe5,0xf1,0x2e,0xf9,0xbc,0x5a,0x84,0x35,0x7a, - 0xaa,0x85,0x77,0xa1,0xdc,0xad,0x44,0x13,0xed,0x9c,0xe0,0xb6,0xee,0x4e,0x3c,0x37, - 0x2d,0x64,0x36,0x40,0x04,0x07,0xe1,0x74,0x79,0xbc,0x7d,0x72,0x12,0xdb,0x70,0xdb, - 0x05,0x5c,0xa6,0x70,0xb5,0x30,0x08,0x19,0xb6,0x46,0x85,0x51,0x86,0xbb,0x0a,0x37, - 0x5e,0xa0,0xc7,0x29,0xc3,0xbd,0x85,0xce,0x5b,0x00,0x3e,0xae,0x5a,0xe1,0xe8,0x8b, - 0xd0,0x3a,0x65,0xbb,0xf9,0x03,0x45,0x20,0x39,0xf8,0xc0,0x7e,0x7b,0xb7,0x1d,0x94, - 0xfc,0x7c,0xdd,0x85,0x4c,0xa0,0x7a,0x1c,0x1a,0xc3,0xe3,0xd0,0xd8,0xf6,0x38,0x34, - 0x66,0x8f,0x43,0xb9,0x56,0xda,0x67,0xec,0x99,0x19,0x79,0xda,0x58,0x08,0x96,0x08, - 0x1e,0xa0,0xfd,0x73,0x3d,0xab,0xde,0xd4,0x76,0xaa,0x6b,0x9c,0x13,0x8d,0x71,0xd7, - 0x3e,0xac,0x51,0x86,0x44,0x9c,0x10,0x51,0x52,0x80,0x24,0x66,0xb5,0x53,0x45,0x3f, - 0x0f,0x41,0x56,0xe7,0x93,0xfb,0xeb,0xd2,0xe3,0xd2,0x79,0x5b,0x3b,0xa6,0x76,0x4b, - 0xcb,0x81,0x3b,0x40,0x9d,0x11,0xf1,0x12,0x6e,0xe8,0x23,0x0c,0x46,0xe9,0x32,0xa3, - 0x14,0xcf,0x0d,0x76,0x94,0x07,0x01,0x63,0x79,0x20,0x8a,0x3e,0xde,0xd4,0x30,0xb8, - 0x25,0x6e,0x2a,0xa0,0xe9,0x07,0x04,0x50,0xe5,0x45,0x61,0x1f,0x17,0x32,0xd3,0xa4, - 0xb8,0x7e,0x29,0x1c,0x07,0xf1,0x34,0x49,0xde,0xc5,0x64,0xa5,0x82,0x83,0x21,0x54, - 0x59,0x94,0xbe,0xc6,0xde,0x8c,0x9b,0x49,0xf0,0xfb,0xcc,0x0d,0xd8,0x12,0x53,0x41, - 0x73,0x1c,0xaa,0x9c,0x2e,0x64,0x0c,0x9d,0x7b,0xc9,0x9d,0x5d,0xd4,0x8a,0x30,0x95, - 0x3a,0x9e,0x60,0x2c,0x75,0xd6,0xbd,0xe3,0x70,0x1b,0xe8,0x77,0xf0,0x6f,0x17,0xff, - 0x9e,0xe0,0xdf,0x53,0xfc,0x7b,0x86,0x7f,0xdf,0xe0,0xdf,0xb7,0xf8,0xf7,0x1d,0xfe, - 0x6d,0x37,0xe9,0x0f,0x41,0x6e,0x13,0xe8,0xf6,0x6e,0x78,0xd2,0x32,0x25,0xaa,0xb4, - 0xd7,0x31,0x5a,0xf6,0xc0,0x4f,0x5f,0xc5,0xb9,0x87,0xb8,0xb9,0x32,0x34,0x66,0x70, - 0xbd,0x6f,0x7a,0x14,0x5e,0xf2,0xfa,0x4a,0x3a,0x8d,0xe3,0xe2,0x31,0x57,0x8f,0x2f, - 0xc3,0x98,0x4b,0xb5,0xfb,0xf5,0xef,0x28,0xe3,0xf7,0xe7,0xee,0x49,0x6f,0x5e,0xda, - 0xef,0x54,0x9a,0xb8,0xde,0x71,0x21,0x8e,0x7f,0x37,0x3e,0xb3,0xba,0xcc,0x75,0x22, - 0x60,0x73,0x53,0x4f,0x71,0xba,0x2c,0xce,0x85,0xa0,0xee,0xf1,0x93,0x93,0x3d,0xfc, - 0xa9,0x24,0xc2,0xe5,0xbd,0xdb,0xd7,0xe0,0x78,0x09,0x62,0x33,0x4b,0x48,0x45,0x27, - 0x54,0x60,0x76,0xe1,0x2b,0xf5,0xa4,0x17,0xaa,0xe3,0x25,0xd7,0xf6,0x77,0xe6,0x2f, - 0xc7,0xbd,0x14,0x09,0xea,0xf2,0x77,0x5a,0xc3,0x9b,0x04,0x20,0xfe,0x99,0x83,0xf0, - 0xbd,0xb0,0xbe,0x9b,0x94,0x7a,0x7e,0x1d,0xba,0x57,0x84,0x10,0x3a,0x9d,0x91,0x3a, - 0x54,0xa2,0x08,0x91,0x33,0xd3,0x6b,0x0e,0xdb,0x69,0x8e,0xae,0xde,0xa2,0x1f,0xa6, - 0x20,0xa9,0xdd,0x73,0xdd,0x07,0xe0,0xb9,0xbd,0x41,0xd8,0xe9,0xb8,0x7d,0x0c,0x47, - 0x1e,0x58,0xbe,0x44,0x3d,0xe4,0x63,0xff,0x25,0x11,0x53,0x42,0x69,0x7c,0xd5,0x38, - 0x77,0x9a,0xf6,0x04,0xbb,0x50,0x7c,0x91,0x9b,0xc4,0x9c,0x87,0x21,0x59,0xdb,0xcd, - 0xaf,0xa6,0x5f,0x73,0xdd,0x62,0xa7,0x6e,0x5e,0x4d,0xb4,0x13,0xf7,0xca,0x5c,0xfc, - 0x09,0x63,0x2a,0x5e,0x98,0x4a,0xe6,0x4c,0x0d,0xcf,0xf9,0x8a,0x0e,0x2a,0x96,0xe7, - 0x72,0xf3,0xb0,0x52,0x1a,0xb9,0x1c,0x4e,0x3b,0x9e,0xf8,0x43,0x12,0x1b,0x87,0x73, - 0x32,0x48,0xa7,0x19,0x9f,0xcf,0x8c,0x29,0xe9,0xfb,0x0e,0xc1,0xa0,0x07,0x6b,0xd6, - 0xc1,0x98,0xbd,0x17,0x63,0xc4,0x3a,0x11,0xa5,0x0b,0x58,0xb4,0xac,0xd2,0x85,0xcb, - 0x31,0x64,0x5b,0x82,0x43,0x04,0x3e,0x69,0x09,0x6b,0x98,0xa5,0x67,0xf3,0xbf,0x12, - 0x14,0x78,0xe1,0x82,0x39,0x4b,0x3d,0x89,0xc8,0x1d,0xe5,0xe7,0xbe,0x26,0x71,0x03, - 0x42,0xe9,0x7a,0xef,0x63,0xaf,0xf6,0xb1,0x91,0xff,0xb1,0xdc,0x5e,0x9d,0xdd,0x30, - 0xd4,0x1e,0x65,0xe5,0x9b,0x63,0x72,0x0d,0x8b,0x95,0x4b,0xb8,0xcb,0x65,0xdd,0x08, - 0xb3,0x3c,0x3e,0x22,0x23,0x2d,0xff,0x49,0x3c,0xf0,0x2d,0xa6,0xd0,0xa7,0xff,0x50, - 0xfd,0x1c,0xe1,0xec,0x8d,0x16,0xf1,0x64,0xe4,0x4d,0x87,0x00,0x53,0x9a,0x75,0x04, - 0xad,0xdc,0xf6,0x32,0x2e,0x4d,0x59,0xe9,0x0e,0xfa,0x37,0xc2,0x8f,0xc5,0x75,0xb9, - 0xe7,0xb0,0x10,0x7e,0x21,0x7e,0x96,0x3e,0x8a,0xba,0xe9,0x63,0xd8,0xc0,0xf3,0xf3, - 0x7a,0xc0,0x65,0xe3,0xa3,0x69,0xc0,0x2c,0x3f,0x02,0x38,0xbf,0x82,0xb2,0xa2,0xc7, - 0x8e,0xb5,0xb2,0x06,0x7b,0x66,0x2b,0x13,0x77,0x44,0x97,0x8f,0xe9,0xcc,0x48,0xae, - 0xb1,0x65,0x57,0xa3,0x11,0x14,0x7b,0x72,0x9c,0x67,0x4e,0x2a,0xb8,0x48,0x2c,0x7e, - 0x80,0x95,0x57,0x23,0x74,0x2b,0x97,0xb1,0xb9,0x0d,0xf8,0x33,0xb0,0x14,0x1e,0xf0, - 0x33,0xee,0x0d,0x47,0xa2,0xb0,0xdd,0xdc,0xf4,0xd6,0xd1,0x0b,0x59,0x5d,0x37,0x68, - 0x15,0x16,0xe3,0x01,0xa7,0x08,0x91,0x9c,0x5f,0x9d,0x14,0x51,0x23,0xa5,0xcf,0xda, - 0xed,0x8d,0x53,0x07,0x50,0xce,0x80,0x76,0x32,0x18,0x0a,0xf7,0x2e,0xa4,0x0d,0x0e, - 0xb6,0x64,0x63,0xea,0xfc,0xa7,0x8a,0x67,0x47,0x0d,0xfc,0x71,0x0c,0x3e,0xf3,0x44, - 0x4b,0x72,0xf5,0x45,0x29,0x4b,0xc0,0xf6,0xf9,0xe0,0x84,0xec,0x60,0x0c,0x74,0xa6, - 0xd0,0xcf,0xf9,0x12,0xb0,0xe6,0x12,0x9f,0x3f,0x55,0xf0,0xd6,0x3e,0x3d,0x30,0x7b, - 0x18,0x82,0x17,0x83,0xdd,0x8c,0xe1,0x3c,0xed,0xae,0xc2,0xf9,0x9a,0x5d,0x41,0x1d, - 0x95,0xd9,0xba,0x27,0xca,0xec,0xc0,0xff,0x8f,0xd5,0xd9,0x81,0xf9,0xec,0x69,0x56, - 0x81,0xad,0xb5,0x21,0x67,0x03,0x60,0x9f,0x1a,0x14,0x4a,0x56,0x73,0x05,0x82,0xa3, - 0x5b,0x63,0xa5,0xfe,0x71,0x6c,0xb0,0x00,0xb0,0x38,0x0f,0x15,0xc0,0xd2,0x71,0x28, - 0xf0,0x62,0xe0,0xd9,0x4e,0xb6,0xb9,0x96,0xb6,0xc1,0x6f,0x51,0x4d,0xdf,0xee,0xf7, - 0x23,0xb8,0x29,0xd0,0xa2,0xdf,0x2d,0xfe,0x9b,0xf6,0xcd,0xa9,0x8d,0x1c,0xea,0x5b, - 0x7b,0x5f,0x2a,0xb5,0xc5,0x23,0x5e,0xc6,0x49,0x15,0x37,0x66,0x65,0x3d,0xad,0x27, - 0x52,0x42,0xf4,0x79,0xed,0xf0,0xb4,0x8f,0xfe,0x9c,0x0f,0x88,0x28,0xac,0x15,0xfb, - 0x01,0x11,0xe0,0xb5,0xb0,0x38,0x6f,0xbd,0x1c,0x93,0xa7,0xcb,0x06,0x0f,0xe1,0xf7, - 0x3c,0xe0,0x33,0x52,0x4d,0x40,0xa6,0x90,0x8d,0x3f,0x0f,0x4f,0x6c,0xb7,0xd8,0xa1, - 0x83,0x51,0x46,0xb2,0x6a,0xae,0xdf,0xe0,0x83,0x42,0x3a,0x02,0x82,0xf1,0x78,0x5f, - 0x0c,0x51,0xc5,0x77,0x3d,0x91,0x57,0x25,0x45,0xbd,0x61,0x78,0x78,0x75,0x8e,0xb8, - 0x12,0xd6,0x26,0xf8,0x91,0x66,0xc3,0xee,0xc7,0x71,0xd7,0xc2,0x87,0x69,0x70,0x07, - 0xa5,0xae,0x5d,0xdc,0xf1,0x8c,0x34,0x20,0x03,0xa2,0x2a,0x04,0x5e,0xcc,0x68,0x17, - 0xc8,0x9b,0x1d,0x1a,0x48,0x86,0x3b,0x64,0xf3,0xd8,0x1f,0x22,0x26,0x8e,0x5b,0xda, - 0x6b,0xf2,0xaa,0x18,0x5d,0x74,0x3e,0x27,0xff,0x74,0x22,0x89,0xfc,0x53,0x96,0x09, - 0x5b,0x1f,0xb3,0xda,0x96,0xb7,0x14,0x62,0x18,0x67,0x2d,0x04,0xa9,0x22,0x61,0x43, - 0xe0,0x54,0x12,0xe8,0xd4,0x0e,0x2a,0x4f,0x8d,0x9f,0x37,0x9d,0xf0,0x44,0x77,0x95, - 0xe1,0x89,0x84,0xaa,0x37,0xbc,0x96,0xc5,0x8e,0x37,0xdf,0xf5,0xa5,0x78,0x66,0x67, - 0x68,0x38,0x8e,0xc4,0x74,0x42,0x44,0xf1,0xcc,0x69,0x3c,0x4c,0x0a,0xe2,0xc5,0x50, - 0xb6,0x9f,0xe8,0x2e,0xad,0xe6,0x9d,0x04,0x6d,0xe1,0x15,0x1d,0x87,0xf6,0x37,0x58, - 0x33,0x93,0xeb,0x3a,0xcf,0x05,0x08,0x03,0x39,0x9c,0xa4,0x99,0xab,0xac,0x20,0x44, - 0x29,0xf0,0x0d,0x89,0x49,0xc4,0xc5,0x0d,0xed,0x7e,0x55,0xde,0xdd,0x85,0xd8,0x79, - 0xda,0xc7,0xc2,0xcb,0xc1,0x24,0x36,0x38,0xca,0x94,0xe1,0x84,0x14,0x21,0xcd,0x18, - 0xf8,0xcd,0xfe,0xa1,0x0f,0x88,0xdc,0x81,0x2d,0x97,0x26,0xcc,0x7d,0xfe,0xa4,0xb9, - 0xb9,0xa9,0xcd,0x34,0x4f,0x90,0x31,0xa6,0xef,0x9a,0x4d,0xf7,0x6e,0x40,0x25,0x79, - 0x1c,0x6e,0x20,0x59,0x1d,0xc2,0x3e,0x6b,0xc6,0xcc,0x9a,0xbc,0xe5,0xc0,0x21,0x1b, - 0x94,0xf1,0x2a,0xf0,0x13,0x06,0x66,0x3e,0x3a,0x8d,0xe3,0xf2,0x52,0x77,0x20,0x99, - 0xee,0x3f,0x20,0x67,0xd0,0x3c,0xd1,0xc7,0xc3,0x5a,0x4c,0xbf,0x8d,0xaf,0x75,0x07, - 0xf2,0x68,0x14,0x3b,0x0b,0x4d,0xdd,0xee,0xca,0x96,0x86,0xf7,0x0e,0x02,0x8a,0xf4, - 0xb5,0xcd,0x0a,0x79,0xd7,0x4b,0x33,0xa5,0x36,0xaf,0x52,0x7d,0x84,0x7d,0x6f,0xce, - 0x87,0x84,0x0c,0x67,0x7a,0x29,0x25,0xc9,0x9e,0x1e,0x6b,0x24,0x4e,0x6b,0x60,0x28, - 0xcd,0x5f,0x49,0x63,0x84,0x89,0x74,0x24,0x7c,0xa6,0xa8,0x49,0x0b,0xc2,0x5d,0x33, - 0x80,0x5a,0x00,0xbe,0xc1,0xc6,0xad,0xcd,0x89,0xce,0x27,0xf3,0xe1,0x4e,0x7a,0x90, - 0x7c,0x72,0x7b,0x11,0x96,0x66,0xdc,0x79,0xa8,0x4e,0x7e,0xb7,0xb9,0x16,0x13,0x40, - 0x37,0x93,0xd7,0x55,0x80,0x44,0xb6,0x9a,0x4c,0xde,0x75,0x92,0xb7,0xc4,0x5b,0x9c, - 0xfe,0x33,0xe7,0xe0,0xd7,0x5c,0x76,0x96,0x4e,0xb3,0x22,0x23,0x73,0x8e,0xb2,0xe5, - 0x32,0x93,0xa9,0x94,0x17,0xbf,0x7d,0x15,0x2b,0xe6,0xda,0x04,0x44,0x33,0x81,0xce, - 0xce,0x52,0xf6,0x8a,0xb2,0x8c,0xe3,0xad,0x28,0x80,0x5c,0x19,0xa1,0x3b,0x4a,0x7f, - 0xd3,0xa4,0x9f,0x48,0x30,0xf0,0xb6,0x12,0xaa,0x0a,0x2a,0x88,0x24,0xe3,0x60,0x0c, - 0x79,0xe0,0x43,0xb1,0x27,0x1d,0x70,0x42,0xcc,0xb9,0x72,0xaf,0xf1,0x9c,0x8c,0x89, - 0xdf,0xa4,0xae,0xc9,0xc7,0xd6,0x62,0xb4,0xaa,0xf3,0xb2,0x8a,0x19,0x19,0xaf,0x4f, - 0x54,0xd9,0xeb,0x7a,0x9c,0x97,0x67,0xea,0xad,0x69,0xee,0x99,0x78,0x2f,0xc4,0xa4, - 0x71,0x2d,0x2e,0x9f,0x78,0x42,0xbc,0x1a,0x03,0x15,0x56,0xa9,0x91,0x80,0x99,0xfd, - 0x31,0x00,0x75,0x09,0x0b,0x60,0xbd,0x00,0x02,0xfb,0x17,0xac,0x5a,0xcc,0xa2,0x16, - 0x45,0x78,0x2c,0x36,0x1b,0x68,0x97,0xc5,0xe2,0xdc,0x4b,0xb7,0xcd,0xda,0x4b,0x50, - 0xa2,0xb5,0x85,0xa6,0x40,0x59,0xc0,0x6b,0x99,0x8f,0xd1,0xaa,0x5c,0xa8,0xb2,0xcc, - 0xb5,0xf6,0xb6,0x9f,0xb6,0xc6,0x5c,0xb8,0xd6,0xd5,0x9f,0xd5,0x22,0x1d,0xe3,0x2a, - 0x98,0xdd,0x09,0x91,0xd7,0x62,0xc0,0x92,0xcf,0x36,0xa3,0x06,0xf5,0x3b,0x6b,0xc6, - 0x11,0xaf,0xb1,0x93,0xdb,0xd4,0x9d,0xac,0x44,0x28,0x30,0xb8,0x7a,0xcd,0xb4,0x67, - 0x40,0xc7,0x63,0xef,0x05,0xfb,0x9f,0x15,0x68,0x5f,0xf8,0x72,0x20,0x37,0x95,0x0c, - 0xe4,0xb3,0x9f,0xa4,0xb0,0x8e,0xdf,0x11,0xf5,0x89,0x18,0x22,0x01,0xba,0xd2,0xf2, - 0x57,0xf9,0x86,0x60,0x6c,0xb5,0xd4,0x09,0x07,0x90,0x9d,0x4b,0xe0,0xee,0x81,0x46, - 0x79,0x43,0x44,0x80,0xc7,0x35,0x93,0x63,0x2f,0x7c,0x7e,0x85,0xf0,0x00,0x54,0x1e, - 0x05,0x07,0xc0,0x33,0x8f,0xb1,0xb8,0x46,0x65,0x48,0xe8,0x32,0xac,0xc1,0xfa,0x18, - 0x9a,0xf0,0x1f,0x36,0x90,0x00,0x71,0xf4,0x1a,0x9b,0xe8,0x02,0x12,0xa2,0x5b,0x62, - 0x0a,0x98,0x91,0x0b,0x2e,0xd9,0x21,0xdd,0xda,0x78,0x5f,0xe9,0x5a,0x8e,0x3e,0x5a, - 0xbb,0xd1,0x66,0xb9,0xf1,0xde,0x63,0x91,0xc1,0xfe,0x0a,0xbf,0xb2,0xf9,0x1e,0x34, - 0x50,0xad,0xca,0xe0,0x24,0xca,0x42,0x28,0x3d,0x07,0xe8,0x2a,0xd2,0x82,0x1a,0x5f, - 0xc4,0x8b,0x62,0x34,0x19,0x9b,0x36,0x24,0xa5,0x1a,0x80,0x0c,0x29,0xb8,0xa5,0x3c, - 0x41,0xf4,0xc6,0x9b,0xd8,0x4b,0x89,0x16,0x6c,0xc8,0xd1,0xc2,0xc8,0xeb,0xd0,0x32, - 0x30,0x64,0x25,0x58,0xec,0x4d,0xfe,0x54,0xc5,0x9e,0x9e,0x03,0x70,0xa7,0x72,0xa7, - 0x36,0xee,0x6b,0xdc,0xb9,0xe4,0x17,0x1d,0x3e,0xea,0xc1,0x05,0x5d,0xb3,0xe5,0xc2, - 0xd7,0xb7,0xe3,0x56,0x24,0x30,0xb5,0x5e,0xad,0x84,0xec,0x7f,0xb9,0xef,0x84,0x55, - 0x78,0xe6,0xd1,0xb4,0xcf,0xce,0x7e,0xa3,0x9c,0x41,0xfd,0x54,0xb2,0x42,0xc2,0x70, - 0x30,0xe4,0xbe,0x13,0x0c,0x19,0xa1,0x92,0x52,0x7b,0x8c,0x00,0x1d,0x92,0xcc,0x40, - 0xe1,0xc5,0x41,0x9b,0x5e,0x75,0x21,0x49,0xb8,0xa0,0x31,0xe7,0x91,0x92,0x8f,0xb9, - 0x76,0x6e,0xfd,0x8c,0xfb,0x25,0x46,0x12,0xc0,0xea,0x53,0x8d,0xbc,0xd8,0xb9,0xea, - 0xbc,0x73,0xc9,0xcb,0xe3,0x00,0x56,0x32,0xac,0x35,0x61,0x7f,0x5f,0x58,0xd2,0xd3, - 0xa9,0x34,0x97,0x95,0x69,0x2d,0x54,0x93,0x0e,0xd5,0x56,0x54,0xcd,0xda,0x85,0x16, - 0xbd,0x92,0xef,0x2c,0xa4,0x84,0x9d,0x3c,0x53,0x2a,0x67,0xf2,0x54,0x77,0xc8,0x52, - 0x88,0xc7,0x0a,0x59,0x51,0xb1,0x90,0x4b,0x86,0xa7,0x53,0xe5,0x69,0x93,0xd4,0x69, - 0x2a,0x4f,0x56,0x2f,0xb4,0xc6,0xe8,0xf2,0x46,0xb5,0x33,0x7e,0x8e,0xfc,0x42,0x2b, - 0x62,0x5a,0x3d,0x27,0x1e,0xeb,0x2b,0x7d,0xa2,0xdb,0x53,0xfb,0x08,0x67,0x45,0x73, - 0x29,0x7f,0xd4,0x84,0x18,0xfa,0xe3,0xf6,0x06,0x15,0x8f,0x7f,0x2a,0x2e,0xac,0xe0, - 0x5c,0x05,0xe6,0x17,0xa8,0x8f,0x72,0xab,0xa2,0x5e,0x84,0x81,0xc4,0x9e,0x2b,0xbb, - 0x0a,0x1e,0x19,0x47,0x80,0xf6,0x58,0xac,0x8c,0xc8,0x3d,0x9a,0xd0,0x34,0x82,0x9d, - 0x4c,0x29,0x2a,0x77,0xff,0x9a,0xa4,0x0e,0xc1,0xfe,0x60,0x4e,0x61,0xa3,0x18,0x24, - 0xfa,0xf8,0x1e,0x1c,0xe1,0x7b,0x56,0x15,0xe1,0x9b,0xa5,0x03,0x77,0x81,0x99,0x3d, - 0xda,0xa4,0x0a,0xb5,0x99,0x46,0x1f,0x1a,0x08,0x8b,0x1c,0x89,0x43,0x0b,0x14,0xda, - 0x6b,0x99,0x2e,0xc6,0x1d,0x1b,0x74,0x1c,0xe7,0x0f,0x3a,0x2c,0xe9,0x6c,0x82,0xe1, - 0xf4,0xcb,0x54,0xb3,0xb6,0xed,0xac,0x39,0xeb,0xb1,0x76,0xd5,0x24,0xf8,0x78,0x3f, - 0x9b,0xbb,0x03,0xc7,0x53,0x8a,0x00,0x4e,0xe5,0xc8,0xaa,0x21,0x89,0x3a,0x96,0x8a, - 0xb1,0x63,0xe2,0x0b,0xf2,0xe7,0xa6,0x9b,0x37,0xf8,0x2c,0x2b,0xd5,0x61,0xdc,0xce, - 0xcb,0x2e,0x61,0xb8,0xcb,0x89,0xaa,0xa5,0xbd,0x12,0x9a,0x3c,0x47,0xd3,0x4e,0x7f, - 0x51,0x46,0x40,0xa5,0x69,0xad,0x0a,0xa9,0xa1,0x24,0xdc,0xc9,0x3e,0x41,0xbf,0x94, - 0x98,0x4c,0x41,0x1b,0x9d,0x39,0x54,0x86,0x8a,0x66,0x50,0x69,0x07,0xef,0xb1,0x0b, - 0x4a,0x45,0x63,0x1e,0xe6,0xb7,0x85,0x39,0xee,0x72,0x34,0x46,0xff,0xbf,0x33,0x97, - 0x3f,0xd0,0x92,0x14,0x6f,0xc1,0x61,0x9d,0xd7,0xc7,0x34,0x38,0x9c,0xf6,0x31,0xa7, - 0x16,0x32,0x24,0xa4,0xb7,0xae,0x47,0x04,0x2b,0x81,0x99,0x83,0xc7,0xba,0xe4,0x52, - 0x54,0x2b,0xc1,0xed,0x9c,0x07,0xa1,0x63,0x19,0x5b,0xa6,0xeb,0xc7,0xc1,0xfc,0x61, - 0xc4,0x60,0xd1,0x55,0x31,0x0e,0xcd,0x51,0x01,0x8d,0x1d,0x7c,0x37,0x87,0x6d,0xb4, - 0xae,0x82,0x70,0x0d,0x2b,0x07,0x69,0xbb,0x90,0xbc,0x2a,0x15,0x34,0xd7,0x3e,0x45, - 0x46,0xfe,0x75,0x8a,0xf8,0xa1,0xc5,0xeb,0x0f,0x54,0xa6,0x94,0xd3,0x4b,0x4b,0xe9, - 0x7b,0xdb,0x2d,0xea,0xee,0x55,0xe5,0x10,0x52,0x5b,0x13,0x11,0x17,0x93,0x69,0x9b, - 0x3b,0x8d,0x33,0x30,0x5c,0x47,0xe2,0x42,0xce,0x4b,0xd2,0x1e,0xa1,0xec,0x07,0xe1, - 0xdf,0xdc,0x7c,0xe0,0x5c,0xc0,0x99,0xba,0xa3,0x01,0x21,0xa9,0x28,0x33,0xc3,0x39, - 0x4e,0x1f,0x85,0x7a,0xf4,0x57,0x2f,0x06,0x69,0xc1,0x2d,0x7d,0x9f,0x75,0x1c,0xda, - 0xcf,0x1c,0xd4,0x06,0xf7,0x30,0x67,0xec,0xeb,0x10,0xe4,0xa2,0x52,0xa7,0xf3,0xd9, - 0x10,0x2d,0xb1,0xb2,0xa1,0x44,0xe9,0x8e,0x3e,0xff,0x80,0xfe,0xc1,0x4a,0xe5,0xaa, - 0xde,0x71,0xda,0xa5,0xee,0x01,0x74,0x53,0x56,0x88,0xfe,0x40,0x87,0xfa,0x4b,0xd1, - 0x28,0x39,0xa9,0x22,0x85,0xba,0xce,0xf2,0x81,0x0e,0x32,0xd2,0xd3,0x6e,0x03,0x72, - 0x99,0x60,0xa2,0x90,0x12,0xc2,0x58,0x03,0x38,0x3e,0xda,0x3a,0xfe,0x38,0xfb,0x38, - 0x3e,0x91,0xad,0x01,0x7d,0x8d,0x15,0x41,0x65,0xc3,0x31,0x4d,0x74,0x09,0x8b,0x57, - 0x38,0xb3,0xac,0xcf,0x99,0xe4,0x03,0xbb,0xe6,0x48,0x0b,0xae,0x72,0x19,0x9c,0xd8, - 0xc0,0xdd,0xae,0x11,0xb7,0x33,0xf2,0xaa,0x7c,0xa2,0x17,0x3a,0xef,0x62,0x90,0x9a, - 0xbc,0xb5,0x9d,0x56,0xb9,0x63,0x32,0xdd,0x5c,0xae,0x8e,0x0f,0xfb,0x4b,0x0a,0x21, - 0x96,0xab,0xe4,0xea,0x75,0xb3,0xa6,0x61,0x8e,0x92,0x62,0x9c,0x5c,0x96,0xab,0x62, - 0xaf,0x11,0x3a,0x03,0xc7,0xc2,0x9b,0xd2,0x11,0xf7,0xc2,0x2a,0x5b,0xc8,0xf1,0xa7, - 0x61,0x57,0x26,0x52,0x4b,0x8b,0x03,0x6f,0xca,0x51,0x35,0x95,0x29,0x9b,0xa4,0x4d, - 0xf3,0x5d,0x3c,0x25,0xa9,0x72,0x0c,0xcd,0xb0,0xfc,0x38,0x5b,0x7e,0x1c,0x6f,0xf9, - 0x2b,0x6a,0x4b,0x7f,0x35,0x4c,0xf1,0x2c,0xdc,0x34,0x4d,0x38,0x5c,0x2e,0x87,0xf9, - 0x22,0xa4,0xc9,0x56,0x31,0x7f,0xd1,0x83,0x68,0x4f,0x67,0xba,0xb5,0x65,0x6e,0x09, - 0xb1,0x51,0x11,0x73,0x05,0xcd,0x9b,0x6d,0x0c,0xd3,0xa1,0xb5,0x94,0x42,0x38,0xc1, - 0xe3,0x17,0x5f,0x9d,0x2c,0xf3,0xcb,0x1f,0x1f,0xb3,0xaf,0xf1,0xfe,0x97,0x93,0x58, - 0x95,0x65,0xc0,0x03,0x7e,0x0f,0xd9,0xbb,0x4a,0xd0,0x31,0xbc,0xee,0x19,0xcb,0xbf, - 0xd3,0xd9,0x60,0x3a,0xe7,0xd5,0x4e,0xa1,0x68,0x18,0xba,0xc6,0x1f,0x48,0xb7,0xaf, - 0x80,0x7d,0x78,0x75,0xf8,0x0b,0xd9,0xd1,0x6e,0xfd,0x83,0xef,0xf2,0x7c,0x85,0x22, - 0xf8,0x21,0xf3,0x7d,0xac,0x55,0xdc,0xef,0x71,0x4c,0x3c,0x9d,0xbb,0x3e,0x40,0xa8, - 0x3e,0xe4,0x80,0xd3,0x6c,0xe4,0x5d,0x87,0x9c,0xa2,0x43,0x96,0x64,0xc2,0x21,0x19, - 0x35,0xd7,0x2a,0x80,0x28,0x77,0x0e,0xb7,0xcc,0x9d,0xc9,0xc5,0x80,0xe6,0xc4,0xcc, - 0xf3,0x38,0x07,0xf8,0xc2,0x77,0x20,0xc0,0x7a,0xe2,0x3b,0x30,0x2b,0x9c,0x07,0xf6, - 0x33,0x72,0x20,0xa3,0x27,0x1c,0x8e,0xef,0xc0,0x4c,0x70,0xb8,0x86,0xcc,0xc4,0x27, - 0x4a,0xc9,0x3c,0x53,0x66,0xd6,0x9c,0x05,0x26,0x44,0x51,0x44,0x36,0x6a,0x4b,0x18, - 0xc4,0xa0,0xf1,0x90,0x41,0x02,0x04,0xb1,0x81,0x05,0x0f,0x15,0xd7,0x0d,0x7c,0x0f, - 0xfe,0x76,0x2c,0x14,0xa5,0xf0,0x46,0x0e,0x86,0xb9,0x17,0xd1,0x60,0xcb,0xb6,0xda, - 0x70,0x22,0x11,0xa0,0x24,0x09,0x4b,0x22,0xa0,0x50,0xfd,0xe3,0xa3,0x69,0xbc,0x7e, - 0xee,0xfd,0x7f,0x74,0x95,0x49,0x90,0x3e,0x8b,0x04,0xb6,0xc3,0x74,0x0a,0x9e,0x95, - 0xcd,0x66,0x81,0xbc,0x13,0xdc,0xcc,0xc8,0xef,0x15,0x8f,0x5c,0xd9,0xce,0x50,0xd5, - 0xb4,0x15,0xd4,0x89,0x44,0x81,0x99,0xcc,0x6a,0xbd,0x1a,0x9d,0xa9,0x91,0xed,0x9f, - 0xc0,0x9a,0x6b,0x7c,0x3c,0xac,0xfe,0xcd,0x1b,0xa1,0x01,0xc6,0xca,0x1f,0x69,0xee, - 0xe7,0x1c,0x32,0x00,0xb3,0xca,0x0e,0xed,0xdb,0xcb,0x7d,0x18,0x64,0x97,0x19,0xcb, - 0x1c,0x0d,0x8b,0xdf,0x1f,0x23,0xa2,0x81,0x2a,0x09,0xe9,0x93,0x2f,0x4a,0x4e,0x01, - 0x9d,0x8f,0x3a,0xef,0xab,0x86,0xbd,0x84,0xe0,0x33,0x53,0x02,0x05,0x57,0x7c,0x44, - 0x98,0x8f,0x67,0x6c,0x6f,0xb2,0x28,0x9e,0x61,0x3e,0xa3,0x23,0x9c,0x12,0x64,0xaa, - 0xf3,0x07,0xba,0x52,0x5d,0x96,0x95,0x22,0x0e,0xd1,0x33,0x52,0x4b,0x12,0xbf,0x10, - 0xe7,0xe6,0x2c,0xde,0xe8,0x63,0x4c,0x1f,0x19,0x42,0x77,0x55,0x02,0x92,0xdf,0xa2, - 0x25,0x56,0xa4,0x2e,0x4f,0x12,0x68,0xd6,0xd2,0x92,0x7c,0x6f,0xaf,0xb0,0x39,0x48, - 0xa0,0xfe,0xb8,0xcf,0x62,0x00,0x20,0x96,0xcd,0x40,0xc8,0x99,0x11,0xdb,0x32,0x14, - 0x25,0xf2,0x3d,0xd9,0x2f,0xec,0xbc,0x17,0xc8,0x74,0xe1,0x18,0x1c,0x80,0xd6,0x3d, - 0xbe,0x84,0xc5,0x4d,0x2f,0x93,0xd5,0x1e,0xf4,0x7f,0x92,0xd8,0xcf,0x48,0xef,0xc6, - 0xb5,0xf1,0xcf,0xaa,0xd0,0xb5,0xd0,0xab,0xfa,0xb3,0x3d,0x21,0xd3,0x31,0x5a,0xc8, - 0x63,0xf4,0xdf,0xe4,0x81,0xfb,0xed,0xa9,0x54,0x7e,0x4d,0xae,0x6c,0xfe,0x79,0xd8, - 0xa7,0x25,0x7c,0x1e,0x22,0x32,0x0a,0xeb,0x75,0xac,0x58,0xa3,0x9b,0x1a,0x85,0x7f, - 0xc3,0xa8,0x8c,0x57,0xf6,0x29,0xd1,0xf7,0xdc,0x6f,0x78,0xd1,0xb3,0xf9,0x30,0x1c, - 0x0b,0xf7,0xc6,0x2b,0x73,0x65,0x54,0xe8,0xd8,0xe1,0x15,0x47,0x92,0xc6,0x2a,0xb6, - 0xf3,0x39,0xba,0xa9,0x4b,0xa5,0x06,0xb5,0xed,0xbc,0x32,0x78,0xd2,0x20,0x37,0xd0, - 0x89,0xf1,0x27,0x70,0x2b,0x40,0x51,0x3d,0x87,0x33,0xd8,0x98,0xbb,0x09,0x25,0x1a, - 0x8e,0x50,0x26,0xd9,0x77,0x60,0x08,0x54,0xf0,0xb5,0xc7,0x3d,0x5d,0xbb,0xa8,0x1e, - 0xd8,0xac,0xaf,0xfe,0xdc,0xae,0xfe,0x0d,0x48,0x9a,0x3b,0x55,0x0b,0xdf,0xc1,0x8d, - 0x9c,0x75,0x43,0x32,0xac,0x49,0x3f,0xaf,0x85,0x72,0xee,0x08,0x79,0x9b,0x3b,0x76, - 0xee,0x19,0xf9,0xdd,0xe7,0x39,0x8c,0x63,0xb6,0xb0,0xf8,0x26,0x75,0x7c,0xe8,0xd3, - 0x3b,0xcf,0x35,0xc3,0x3c,0x56,0x84,0x57,0xba,0x7b,0x5f,0x4f,0xf5,0xac,0x4c,0xf5, - 0xcc,0xa5,0xfa,0xb7,0xfd,0x0f,0x6f,0x5f,0xbd,0xfd,0xa9,0xc5,0x41,0x45,0x40,0x34, - 0x17,0x21,0x6d,0xd0,0x66,0x29,0x4f,0xca,0xc9,0x2a,0xaa,0x66,0x42,0x95,0x6f,0x85, - 0xb1,0xb9,0xc9,0x3b,0x6a,0x4c,0x5c,0xb2,0x66,0xa4,0x0b,0xd6,0x8e,0x14,0x13,0x19, - 0x83,0xa9,0xd8,0x4c,0x32,0x4b,0x9d,0xec,0xd5,0x0a,0xf5,0x14,0x7b,0x33,0x8d,0x21, - 0xb8,0xbe,0x8e,0xd3,0x72,0x1d,0xa7,0x2b,0xea,0xc8,0x97,0xf3,0x3c,0x99,0x6e,0x1a, - 0xac,0xc5,0x2b,0xd0,0x92,0xc9,0x87,0x3a,0x41,0x86,0xed,0x07,0x1f,0x28,0x6b,0x4c, - 0x16,0x33,0xe7,0xe2,0x40,0xfa,0x2a,0xe3,0x3b,0x89,0x62,0x3b,0xc2,0x0c,0x90,0x5b, - 0x4c,0x72,0x69,0xe3,0x33,0x5e,0xfb,0x55,0x0c,0x9c,0xea,0x65,0xfa,0xee,0x7c,0x9c, - 0xdd,0x53,0x47,0x02,0xb1,0xab,0x49,0xef,0x32,0x02,0xcf,0x27,0x2b,0xf3,0x9a,0x3b, - 0x3b,0xc8,0x7e,0x3e,0xb1,0x33,0x9f,0x4f,0x90,0x15,0x49,0x55,0x62,0x4c,0x04,0xd7, - 0x4a,0x91,0xa5,0xc1,0x45,0x1e,0x50,0xea,0xd8,0x2d,0x22,0x3c,0xe8,0xe0,0x9c,0x7d, - 0x88,0xb2,0x89,0x7a,0x87,0x17,0xe7,0x13,0xa9,0xa2,0x33,0xca,0x91,0x58,0x66,0x1a, - 0x01,0x59,0x6b,0x74,0x5e,0x4d,0x0e,0x75,0x85,0xce,0x28,0x44,0x3d,0x2e,0x74,0xde, - 0xc7,0xd8,0xac,0xd4,0x79,0x32,0xcf,0x9a,0xcc,0xa3,0x81,0x37,0x0a,0xc4,0xbf,0xc9, - 0x58,0xb5,0x74,0xe9,0xd8,0x7d,0xbd,0x57,0x67,0xd7,0x36,0x08,0x58,0x2d,0x97,0x3a, - 0x9a,0x0e,0xae,0x50,0xde,0x1c,0x63,0x09,0x80,0xd3,0xca,0x5f,0x56,0x36,0x0c,0x41, - 0xc5,0x6d,0x31,0xe5,0x21,0x10,0x2a,0x63,0xbc,0xae,0x0c,0x69,0x8f,0xa1,0x11,0x47, - 0x63,0xd9,0x8b,0x51,0x40,0xba,0x8c,0xd8,0x15,0xae,0xb2,0x1c,0xf3,0xcd,0xeb,0xc0, - 0xa1,0xb8,0x7d,0x9f,0x55,0x9c,0x8b,0x8c,0x54,0x3c,0x68,0x23,0x75,0xee,0xa1,0x76, - 0x18,0x81,0x9c,0xc8,0x91,0x4b,0xc1,0x0c,0xa2,0x31,0xbf,0x9b,0x34,0xc2,0x1f,0x3a, - 0xc5,0x02,0x8d,0xee,0xba,0x44,0xb5,0x0a,0xbc,0xfc,0x51,0xa3,0xa6,0xb5,0xaa,0xf8, - 0x84,0x44,0xb2,0xa5,0x0d,0x93,0x4d,0x99,0xb3,0x3f,0x94,0x2d,0x1a,0x00,0x15,0x97, - 0xa3,0xdc,0xb4,0xf4,0x72,0xb2,0x25,0x67,0xa4,0x69,0x6a,0x82,0x5b,0x40,0xe7,0x50, - 0xbc,0x63,0xd8,0x2c,0x54,0xaf,0xe0,0x6c,0x63,0x05,0x86,0x2d,0xaa,0xac,0x2c,0x7b, - 0x9c,0x81,0xcd,0xba,0x5c,0x78,0x5d,0x29,0x1d,0x13,0xe8,0x49,0xac,0xd3,0x81,0xb5, - 0x40,0x93,0x4f,0x9a,0xcd,0x74,0x0a,0x4d,0x2e,0xb1,0xef,0x7b,0x70,0x0b,0xfd,0x0d, - 0xec,0xcb,0x79,0x07,0x61,0x50,0x6e,0x2e,0x0d,0x9a,0x28,0x9f,0x1a,0xfc,0x09,0x82, - 0xc4,0xfd,0xc4,0x2c,0xa3,0x83,0x20,0x51,0x73,0xf0,0x96,0xe0,0x4d,0x1f,0xde,0x14, - 0xa2,0x10,0xdb,0x2e,0xbe,0xb3,0xd0,0x3a,0x23,0xee,0x21,0x23,0x7f,0xec,0x67,0xf1, - 0x83,0x2c,0x6b,0xb4,0x57,0x57,0xdb,0xb8,0x99,0x83,0x0b,0x4e,0x52,0x48,0xad,0xbf, - 0x54,0x52,0x22,0x7b,0xaa,0x55,0x9b,0xe9,0x1b,0xd8,0x35,0x0c,0x60,0x1e,0x70,0xf9, - 0xa1,0xff,0xcf,0x57,0x3d,0x49,0x94,0xfb,0xac,0xa9,0xab,0xae,0xb0,0xd7,0xb9,0xdb, - 0x7b,0xe1,0x4c,0x06,0x64,0x73,0xab,0x34,0x24,0xcd,0x78,0xe5,0xf1,0xe8,0x04,0xfe, - 0xe2,0xbb,0x3b,0x0b,0x2e,0xaf,0xc5,0x7f,0x19,0x63,0x8b,0xfe,0x54,0x84,0x02,0xe3, - 0xce,0x86,0xe1,0x13,0x15,0xa0,0x49,0x33,0x61,0xc2,0xe8,0xa1,0xb9,0x2a,0xa2,0xd7, - 0x86,0x1d,0xd2,0x2b,0xd5,0x90,0x5e,0x8b,0x9c,0x09,0x6c,0x77,0x13,0xb7,0x19,0x91, - 0x0a,0x4b,0xe5,0x95,0xc9,0x6d,0x3e,0x22,0xf3,0x93,0xe6,0x13,0xce,0x09,0xab,0xd7, - 0xc8,0x24,0x8a,0x4b,0x6c,0x35,0xe7,0xbb,0xe8,0xd0,0x7e,0x27,0xbf,0x89,0x14,0x40, - 0x24,0x70,0x33,0x57,0x4b,0x94,0xd5,0xc5,0x7c,0x07,0xbd,0x5c,0x83,0x6b,0x8a,0x33, - 0x01,0xfe,0xf5,0xca,0xdd,0x27,0x7c,0xfd,0x99,0x08,0x0a,0x3b,0xd6,0xa3,0xb4,0x04, - 0x95,0xc9,0xe1,0x1d,0x03,0x36,0x55,0x1d,0x7e,0x5e,0x57,0x60,0x73,0xb9,0xb4,0xdf, - 0xb7,0x77,0xcb,0xe5,0x29,0x0f,0x39,0x16,0x99,0x44,0xbd,0xec,0x16,0x11,0x2d,0x6d, - 0xe4,0x0f,0x68,0x2a,0x9d,0xec,0xb5,0x9f,0xa6,0x0b,0xb9,0x48,0x4f,0x77,0x63,0x50, - 0xa9,0x16,0xd9,0x97,0xcc,0xb2,0xc9,0x0c,0x0f,0x74,0x65,0x87,0x7e,0xa7,0xc0,0x8a, - 0x9a,0xc9,0xdd,0x18,0xc8,0x54,0x36,0xd6,0x4e,0x7e,0x9f,0x74,0xcd,0x43,0x9f,0x22, - 0xd6,0x66,0x6c,0x0f,0xa3,0x83,0x45,0x0b,0xe0,0xa8,0x3a,0xd4,0x93,0x58,0x1e,0xa9, - 0xfe,0x5c,0x8d,0x85,0xb9,0x10,0xd0,0x55,0xa4,0x08,0x41,0xae,0x4d,0x31,0x48,0x4b, - 0x9b,0xd6,0xbb,0x21,0x12,0x49,0x56,0x46,0x10,0xa4,0x76,0xc7,0x9e,0x29,0xb2,0x26, - 0x19,0x6a,0x39,0xa7,0xdb,0x19,0xc1,0x1a,0x9f,0x7c,0x5a,0xc4,0xcb,0xc4,0xce,0x62, - 0x85,0x1f,0x0d,0xc7,0x57,0x6e,0x06,0xbf,0xc0,0xf6,0x9c,0x8a,0x70,0xa8,0x5f,0x2e, - 0xdd,0xf7,0x06,0x99,0x0c,0x8f,0x79,0x5f,0x11,0xbb,0xd5,0x74,0xad,0x60,0xc3,0x30, - 0xd6,0xcb,0x43,0x5d,0x72,0xe5,0x95,0x3a,0xd0,0xf6,0xfa,0xa2,0x46,0xcf,0x85,0xf6, - 0xee,0xe3,0x6c,0xeb,0xbc,0xc8,0x4e,0x3c,0x75,0x38,0x4c,0x3e,0x76,0xe0,0x38,0x24, - 0xc5,0xe3,0xe6,0x26,0xfe,0x34,0x58,0xcd,0x49,0x0f,0x6c,0x00,0x72,0x22,0xb3,0x98, - 0x77,0xd5,0x8e,0x23,0x0d,0x69,0x6b,0xf9,0x54,0xa4,0x06,0xef,0x5e,0x4e,0x6f,0x2b, - 0x7f,0x90,0x2d,0x3b,0x7b,0x63,0x7a,0xf6,0x70,0x03,0xf8,0xea,0xe6,0x54,0xb1,0x5c, - 0x3d,0x4d,0x23,0x6d,0xed,0x5e,0x81,0x76,0x8e,0xe8,0x11,0x28,0x9e,0xdc,0xbc,0xce, - 0x50,0xcd,0x3e,0x3f,0x01,0x24,0x97,0xc9,0x64,0x97,0x20,0xd3,0x01,0xbc,0x56,0xf3, - 0xf6,0x41,0x5b,0x06,0x5d,0x8f,0x2e,0x03,0xcb,0xc9,0x79,0xff,0xf6,0x94,0x17,0x19, - 0x61,0xcd,0xcd,0x53,0x0b,0x31,0xc2,0xb1,0xfd,0x68,0xaf,0x91,0x5d,0xb2,0xeb,0x79, - 0xe4,0x8d,0x9a,0xd8,0x4b,0xb1,0x66,0x15,0x6f,0x0e,0x72,0x86,0xce,0x42,0x27,0x02, - 0x61,0x79,0x9c,0x70,0x93,0xb6,0x9a,0x22,0x18,0x58,0x91,0x89,0x96,0xc1,0x49,0x40, - 0xbf,0x01,0xbd,0x1e,0xaf,0xc2,0x14,0x07,0x39,0x13,0xf1,0x66,0x4c,0xe7,0xdb,0x62, - 0x45,0x8f,0xca,0x09,0xf5,0x48,0xd7,0x1e,0x4c,0xfc,0x4a,0x2b,0x3a,0x5b,0x7b,0x03, - 0xcf,0x2c,0x1b,0x6a,0x35,0x47,0x56,0xb4,0x29,0x5d,0xe8,0x4d,0x95,0x5e,0xcf,0x84, - 0x7c,0xeb,0x1f,0xec,0x0c,0xe7,0x63,0x96,0x47,0xd1,0x95,0xb2,0xe2,0x3d,0xf1,0x92, - 0xf3,0xb5,0xfc,0x17,0xb6,0xe4,0x0b,0x50,0xf8,0xd2,0xc5,0x99,0x60,0xf3,0x96,0x0c, - 0x13,0x15,0xad,0xf2,0xcb,0x6c,0x14,0x82,0x13,0xc1,0x97,0xe3,0xf5,0xe7,0x5e,0xee, - 0xa1,0x7e,0x6b,0xa6,0xa9,0xd7,0xd2,0x2c,0xf5,0xd7,0xcd,0xc4,0x1e,0x96,0x47,0x8a, - 0x45,0xbb,0xbe,0x35,0x35,0xbd,0xa0,0x99,0x09,0x53,0xa1,0xbc,0x3e,0x7f,0x5a,0x9a, - 0xa7,0x9e,0x36,0x77,0xbd,0x5e,0x6d,0x4f,0x54,0xd2,0xc1,0x35,0x4c,0x33,0x75,0x5b, - 0x7f,0xea,0x8b,0x17,0x4e,0x8b,0x21,0xb0,0x63,0x85,0x24,0x77,0x45,0xb4,0x39,0x70, - 0xf6,0xe6,0x16,0xfb,0xf4,0xd0,0x67,0x8a,0xdf,0x25,0xf5,0xfb,0xfd,0xd3,0x52,0xf5, - 0x20,0x5b,0x2e,0x8b,0x24,0x99,0x1c,0x9d,0x39,0x61,0x4d,0x87,0xf6,0x32,0x4a,0x48, - 0x72,0xf4,0x9c,0x52,0xff,0xd9,0xd3,0x79,0xb0,0x66,0x84,0x0c,0x1c,0xd0,0x81,0xb3, - 0x70,0x99,0x46,0x1b,0x47,0xf9,0x08,0xb5,0xc8,0x26,0x2b,0xca,0x01,0x55,0x9e,0x1c, - 0x93,0x85,0x78,0xbb,0x68,0xa1,0x01,0x9b,0x70,0xa2,0xe8,0xc7,0xb4,0xf4,0xc9,0x91, - 0x78,0xe4,0xf7,0xf5,0x9a,0x85,0xcb,0x47,0x67,0x11,0xe2,0xcd,0xb3,0x1c,0x39,0x93, - 0xc2,0x8b,0xc7,0x25,0x49,0x78,0x48,0x3e,0xef,0xf2,0xfa,0xe6,0xce,0x8e,0xfa,0xb7, - 0x53,0xba,0x6c,0x29,0x91,0x9e,0xd5,0x2b,0x50,0xde,0x8f,0x9c,0x99,0x19,0x78,0x4d, - 0x2e,0xbe,0xb8,0xe3,0x2f,0x0f,0x66,0xf2,0x40,0x34,0x28,0xec,0xe6,0xa6,0xd3,0xd1, - 0x2c,0x89,0x59,0x2d,0x34,0x24,0x33,0x6d,0xfd,0x50,0x6f,0xb7,0x87,0xa4,0x96,0x4d, - 0x80,0xc3,0x92,0xa4,0xa9,0x3c,0xa9,0x96,0x7a,0x82,0x95,0x8d,0x5d,0xb0,0xcc,0x74, - 0xfb,0xb4,0xbb,0x14,0xe6,0xa9,0x76,0xc6,0x62,0x2e,0x4d,0x45,0x7e,0x50,0x42,0x0f, - 0x5d,0xc1,0xb4,0xe1,0x3e,0x75,0x81,0xe8,0xb8,0x42,0x42,0x9e,0x50,0x84,0xdf,0x6a, - 0x99,0x05,0xcc,0xb5,0x9a,0x42,0x3e,0xa7,0x27,0xf7,0x98,0xd4,0x95,0xde,0x4a,0xd1, - 0xbd,0xc3,0x54,0x62,0x60,0x07,0x39,0xe9,0x05,0x2b,0xeb,0x16,0x87,0x5f,0xec,0x36, - 0xf1,0xdf,0xea,0xe9,0x51,0xae,0x5d,0xf0,0xa0,0xa5,0x10,0xec,0x7c,0x03,0xab,0xab, - 0xe1,0xeb,0xfb,0x3d,0x8d,0xbc,0x2e,0x6b,0x61,0xf5,0x1f,0x62,0xa2,0x3b,0x74,0xc8, - 0x2d,0x87,0x76,0x19,0x9f,0xb7,0x2c,0x2e,0x1e,0xdc,0x9c,0x4e,0xa5,0xf7,0xe0,0xe5, - 0xb5,0x05,0x11,0x56,0x2d,0x73,0xff,0x13,0x86,0x95,0x27,0x3d,0xb7,0xdd,0x8d,0x43, - 0x73,0xb7,0xf4,0xfe,0x64,0xb9,0xac,0xd5,0xca,0x63,0xf1,0xc5,0x4e,0x73,0xad,0xdc, - 0xce,0xb7,0xb1,0xde,0xa0,0xfb,0x8f,0x60,0xe0,0x37,0xc2,0x2e,0xca,0x24,0xfb,0xf2, - 0x0a,0x2b,0x06,0x10,0x62,0x1c,0x80,0x3a,0xf3,0x60,0xe5,0x42,0x47,0x68,0x90,0x80, - 0xbe,0xde,0xdc,0x3b,0x82,0xc3,0xfa,0x49,0xaf,0x45,0xee,0xc0,0xe1,0x55,0x9a,0x62, - 0x07,0x74,0x28,0x14,0x61,0x8b,0xc4,0x6d,0x42,0xc6,0xb1,0x7d,0x6c,0x59,0x16,0xa1, - 0xac,0x3e,0xeb,0x74,0x0b,0x0e,0xfb,0x65,0xe8,0x93,0x72,0x8f,0xfb,0x5b,0xbf,0x67, - 0xe4,0x16,0x22,0x81,0xca,0xb4,0xf7,0xb9,0xf5,0x6f,0x87,0xef,0xde,0x36,0x8c,0xbf, - 0x6e,0x04,0x62,0x8d,0x74,0x6a,0xf7,0xe8,0xe2,0x49,0xde,0x99,0xd9,0x6a,0xdb,0x3a, - 0xd9,0xdb,0x4e,0xce,0xee,0xe2,0xca,0x28,0xc1,0xde,0xf9,0xbf,0xb3,0x1f,0x84,0x9b, - 0xcc,0x78,0xe1,0x6d,0x5c,0xf8,0xa3,0xad,0x43,0xe4,0xb6,0x95,0xdd,0xb5,0x1f,0xa3, - 0xda,0xdd,0xae,0x58,0x6b,0x68,0xf7,0xc3,0x9a,0xe5,0xb4,0xbf,0xd3,0xa4,0x78,0x94, - 0xf9,0x66,0x13,0x85,0x67,0xc9,0xa0,0x87,0x63,0x77,0xc7,0x05,0x30,0x72,0x6d,0x19, - 0xaf,0xed,0x7b,0x9c,0xb1,0x7a,0x62,0xe3,0x4f,0x34,0xad,0x11,0x46,0x80,0xd0,0xcf, - 0x43,0x66,0x32,0x96,0xa6,0x44,0x00,0x47,0x10,0xa7,0xd2,0x43,0x92,0x91,0xeb,0x77, - 0xf3,0xaf,0x31,0x29,0x91,0xd5,0x01,0xa4,0xc8,0xe4,0x8c,0xcf,0xce,0x74,0x63,0x6f, - 0xf6,0xf1,0x74,0xc8,0xce,0x97,0x1e,0x55,0xd2,0xc8,0xb1,0x2a,0x97,0xe4,0x6c,0xed, - 0xb5,0xfc,0x34,0x2f,0xdf,0x50,0x45,0x8f,0x58,0x43,0xc5,0x8b,0x6a,0x1f,0xc9,0x0f, - 0xe5,0x25,0x3b,0x42,0x4e,0x48,0xe8,0x68,0x91,0xa5,0xca,0xe8,0xa9,0xc0,0x98,0x8e, - 0xca,0x73,0xe7,0x83,0x3d,0xdb,0x69,0xb1,0xbb,0x81,0x00,0xc1,0xa6,0x3d,0xe0,0xcf, - 0xf9,0xf8,0xa4,0xc2,0x6a,0xe4,0x96,0x8f,0xe5,0xdc,0x25,0x33,0xcf,0x2f,0x44,0x61, - 0x6d,0x70,0xc2,0xb3,0xae,0x6c,0x83,0x2f,0xd3,0xe8,0x16,0xe1,0xb1,0x1f,0x19,0x6f, - 0xd1,0x7b,0xf4,0xdc,0x7a,0x44,0x56,0xb5,0x5f,0xa3,0x0a,0xf9,0xf2,0xfa,0x96,0xb7, - 0x99,0x9f,0xad,0x7c,0xfc,0x9e,0x3a,0x1f,0x2c,0x43,0x92,0x17,0x1f,0xb3,0xbd,0xe2, - 0x76,0x15,0x83,0xe8,0x1a,0x62,0x72,0xb9,0xc7,0x5b,0xdd,0x96,0x11,0x64,0xfc,0x51, - 0x06,0x0f,0x93,0x97,0xba,0xd5,0xd3,0xb3,0xca,0x52,0x4f,0xa1,0x49,0x54,0x5a,0xca, - 0x51,0xad,0xc5,0x15,0xa3,0x47,0xb5,0x6d,0xa6,0x5b,0xd6,0xc2,0x2a,0xa5,0x5b,0x7b, - 0xe3,0xcf,0x34,0x34,0x6b,0x68,0xee,0x92,0x9d,0xa7,0x4d,0x67,0x39,0x5b,0x56,0x90, - 0x79,0x43,0x5f,0x27,0x7f,0x46,0x38,0xfb,0x2f,0xd2,0xc7,0xf1,0x7e,0x60,0xbd,0x7e, - 0x4e,0x3b,0xe3,0x84,0x1d,0x98,0xf5,0x67,0xac,0xa4,0xeb,0x48,0xdc,0x06,0xbe,0x6b, - 0xec,0x8c,0xb7,0xd2,0x58,0xa2,0x7e,0xff,0x7c,0xa7,0xf9,0x05,0xa3,0xa6,0xb6,0x2d, - 0x32,0xe8,0x8e,0xe7,0x1e,0x45,0x5e,0x29,0x02,0x40,0x6d,0x71,0x79,0x54,0x96,0x9e, - 0xf6,0x79,0x00,0x6f,0xc1,0xa5,0xf5,0x1f,0x2a,0x19,0xfc,0xad,0x87,0xdb,0x54,0x72, - 0xe2,0x3b,0xb9,0x02,0x8a,0x9e,0x2c,0x10,0xd6,0xd8,0x5c,0x80,0x29,0xb6,0x85,0x88, - 0x9e,0x50,0xc6,0x72,0xcc,0x29,0x1b,0x09,0x06,0x8b,0xc0,0xb5,0x65,0x0e,0x1b,0xdb, - 0xc0,0x52,0x1c,0x03,0xeb,0x01,0xb4,0x24,0xc6,0x54,0x27,0xe3,0xaa,0xec,0x70,0x72, - 0x36,0xcf,0x57,0xbe,0x2c,0x46,0xf9,0x5c,0xf4,0x13,0xdd,0x4a,0x27,0x8b,0x38,0x7f, - 0xd5,0x06,0x23,0xba,0xc0,0x00,0x09,0x87,0xf4,0x02,0x34,0xb3,0x4e,0xb7,0x82,0xc1, - 0x8f,0x14,0x84,0x98,0x63,0x6b,0x13,0x3f,0xad,0x7b,0xec,0xba,0x60,0xb3,0xfb,0xbf, - 0x5b,0x3e,0x8a,0x25,0x2f,0x3d,0x1f,0xf8,0x25,0x2a,0xfa,0xd8,0x20,0x13,0x3b,0x2c, - 0x2a,0xaf,0x11,0x1c,0xb9,0x36,0x49,0x58,0x0f,0x52,0x43,0x69,0x04,0xfd,0x40,0xbd, - 0x06,0x76,0x86,0xa4,0x9e,0x4d,0x88,0x17,0x4e,0xa9,0xeb,0x1b,0xa1,0xd2,0x74,0x4b, - 0x19,0xbc,0x8a,0x40,0xce,0x23,0x0e,0x3b,0x1b,0xc1,0x07,0x25,0x86,0xd3,0x89,0xbe, - 0x2e,0x7f,0x05,0x6b,0x28,0x78,0x15,0xa8,0x32,0xda,0xd6,0xf0,0xbd,0x95,0x4f,0xb4, - 0xf9,0xf9,0xe2,0xda,0x36,0x4f,0xd3,0xf2,0xff,0x13,0x19,0xe4,0xf7,0x67,0x36,0x5f, - 0x16,0x67,0x41,0xd7,0xa9,0x2c,0xeb,0xae,0x07,0xd9,0x55,0x67,0x48,0xb7,0x6c,0xc8, - 0xa4,0x2c,0x29,0xd4,0xa3,0xb9,0xa5,0x3b,0x76,0x6b,0x9c,0x54,0x07,0x86,0xb5,0xb7, - 0x91,0x0d,0xdc,0x75,0x1d,0xab,0xb2,0xb5,0x70,0x85,0xdb,0x1c,0x31,0x42,0xb9,0xe0, - 0x35,0x0b,0x69,0x90,0x83,0xea,0xff,0xb6,0xb6,0x98,0xcd,0xea,0x28,0x99,0x72,0xc1, - 0x86,0xae,0x4f,0x4e,0x96,0x4d,0x66,0x73,0xf5,0xf3,0xda,0xde,0xd7,0xb3,0xe7,0xc2, - 0x74,0x2e,0xfe,0xab,0x64,0x5d,0xc4,0x1f,0xfa,0xe4,0xde,0x8d,0xea,0x39,0xea,0xf0, - 0xf1,0xd1,0x39,0xc5,0x34,0xb8,0x62,0xff,0x9c,0x07,0xac,0xf4,0x45,0x7b,0x83,0x53, - 0x70,0x45,0x31,0x07,0x67,0xeb,0xf3,0x7b,0x00,0x6a,0xcf,0x44,0x8f,0xd0,0x65,0xde, - 0x91,0x8b,0xb6,0x6e,0x67,0x66,0xee,0x42,0x64,0xdd,0x4a,0x46,0x50,0xb3,0x83,0x11, - 0x4c,0x48,0x2d,0x05,0x90,0x4f,0xe4,0x1c,0x2b,0xbc,0xd5,0x25,0xe3,0x6b,0xfd,0xfa, - 0x5a,0xb2,0x61,0x31,0x68,0xf2,0x74,0x28,0x56,0x54,0xca,0x51,0x16,0x66,0x94,0x2b, - 0x02,0x88,0xe1,0x4f,0x9d,0x32,0x70,0x71,0xa6,0x55,0x19,0xf2,0x39,0x71,0x28,0x2e, - 0xb5,0x02,0xe7,0x86,0x17,0xb9,0x08,0x2e,0x01,0x13,0x06,0xc3,0xf2,0x6e,0x7a,0xcb, - 0xc6,0x2b,0x95,0x36,0x43,0xb8,0x3d,0xc2,0x91,0x05,0xad,0x62,0x5d,0xa6,0x7f,0xdd, - 0x6c,0x3c,0xdb,0x31,0x48,0xe2,0x15,0x5a,0xf8,0xfb,0x4f,0x82,0x59,0xb8,0x54,0x76, - 0x59,0xf4,0xe8,0xca,0xf4,0x8a,0x0d,0x0b,0x46,0xd5,0xe0,0x5f,0xd8,0xae,0x98,0xb1, - 0x10,0xb7,0x1f,0x9c,0xd1,0xd0,0xa2,0x19,0x9d,0x81,0x05,0xc0,0xfe,0x0c,0x8d,0x43, - 0x43,0x4b,0x2b,0x25,0xbe,0x45,0x56,0x46,0x4c,0x10,0x03,0x98,0x47,0x6a,0x00,0x63, - 0x5d,0x2b,0x61,0xd7,0x66,0xf1,0x42,0x1f,0x59,0xfa,0xdb,0xde,0x59,0x74,0x4b,0x96, - 0x33,0x2c,0xc2,0x72,0xc4,0x3e,0x17,0x57,0x25,0xcd,0x20,0xe3,0xf7,0x1b,0x84,0xfb, - 0x44,0x6a,0xa7,0xdb,0x0e,0x08,0x23,0x45,0x01,0xa0,0x15,0xf4,0x60,0xbe,0x21,0x52, - 0xc1,0x94,0xfe,0xa5,0x07,0xb0,0x0b,0xb1,0x58,0x38,0x64,0xb2,0x78,0xef,0x66,0x84, - 0x10,0xcb,0x37,0x3c,0x3d,0xdf,0x32,0xf6,0xc2,0x2f,0xf0,0x44,0xfb,0x34,0xfa,0xbd, - 0x98,0x8f,0x86,0x2f,0x36,0xfe,0x6f,0x1f,0xc1,0x54,0x00,0x13,0xce,0x01,0x00, + 0x67,0xee,0x95,0x37,0x7d,0x3d,0x73,0x1d,0xdf,0xab,0x02,0x67,0x43,0xe9,0xfc,0x3f, + 0x3b,0x57,0xde,0xdc,0x36,0xae,0xe4,0xff,0x9f,0x4f,0xd1,0xc5,0xad,0x4a,0xe4,0xda, + 0x88,0x96,0x64,0x59,0x39,0x1c,0x6b,0x2a,0xe7,0x9c,0x3e,0x36,0xf6,0x3b,0xfe,0xdb, + 0x82,0x48,0xc8,0xc2,0x0b,0x45,0x70,0x00,0x30,0xb2,0xe6,0xd3,0x6f,0xa3,0x01,0x88, + 0x94,0x68,0x2a,0xf4,0xb1,0xf7,0x7b,0x6f,0x66,0x24,0x11,0x57,0xa3,0xbb,0xf1,0xeb, + 0x03,0x4d,0x23,0x83,0x2b,0xc4,0x76,0xb9,0xb4,0xb7,0x87,0xae,0xa4,0x1e,0xbf,0xf8, + 0x57,0x00,0x6c,0x7c,0xe1,0x5f,0x08,0xe0,0x0a,0xbf,0x60,0x2d,0x2d,0xb8,0x0a,0xff, + 0x68,0x34,0x89,0xc0,0x79,0x3d,0xf4,0x9d,0x4a,0xf8,0xdf,0xcb,0xdb,0xd3,0x88,0x6a, + 0x92,0xc6,0xf8,0x4f,0x04,0x36,0x59,0x7f,0x1a,0x59,0xd5,0x8e,0x40,0x1b,0x25,0xbf, + 0xf2,0xd3,0xa8,0xca,0x62,0x84,0x67,0xfd,0x30,0x63,0x78,0x40,0x56,0x30,0x61,0xc5, + 0x69,0x44,0xbb,0x88,0x70,0xe1,0x44,0xa8,0x24,0xe3,0x90,0xe0,0xfc,0x43,0xec,0x97, + 0xac,0xdd,0xa7,0xc2,0x51,0xf1,0x28,0x2c,0xd4,0x9c,0xda,0x2f,0x7e,0x88,0x33,0x14, + 0xcc,0x2c,0x20,0x3d,0x8d,0xce,0x5e,0xc6,0x2f,0x01,0xff,0x65,0x13,0x98,0xc0,0xc0, + 0xff,0xff,0x55,0x3c,0x39,0x1b,0x4e,0xe2,0xa3,0xad,0x86,0xa1,0x6f,0x18,0xc7,0xaf, + 0x01,0xff,0x65,0x43,0x7c,0x44,0xdd,0x5d,0xeb,0x38,0x1e,0x9d,0x0d,0x5f,0xc7,0xc3, + 0x9d,0xb6,0xa1,0x6f,0xa3,0x45,0x0f,0x91,0x61,0xf8,0x81,0x2e,0x39,0x24,0x19,0xd3, + 0xfa,0x34,0xa2,0x4a,0x63,0x7a,0xc9,0x62,0x08,0x22,0xc5,0xdf,0x7d,0xfb,0x2a,0x45, + 0xb4,0x79,0xcb,0x01,0x59,0x3f,0xf4,0x23,0x5c,0xb3,0x2e,0x67,0xd1,0x34,0x91,0x39, + 0x72,0xc4,0xa0,0xac,0x9e,0x2d,0xc8,0x65,0x39,0x79,0x7b,0x88,0x5d,0xb0,0xa3,0xff, + 0xa0,0xba,0x0c,0xbf,0x04,0x95,0x9a,0x82,0x4d,0x28,0x44,0x7e,0x0e,0x7a,0x12,0x4d, + 0x91,0x1c,0xec,0x86,0xbd,0x9d,0xba,0x87,0xfe,0x54,0xf4,0xba,0xd5,0x3f,0xa1,0xd8, + 0x18,0x7f,0x52,0x75,0x5e,0xe4,0xba,0x47,0x20,0x73,0x54,0xce,0xe4,0xeb,0x69,0x44, + 0x6e,0xc8,0x07,0xd7,0xa9,0x77,0x10,0xfd,0x60,0x84,0xc9,0xb0,0x9f,0x7f,0x02,0xfd, + 0x3e,0xe8,0xaf,0xa8,0xc2,0x54,0xed,0x0a,0x2c,0x4f,0xa1,0x60,0xda,0x70,0x60,0x50, + 0x28,0x6e,0x6f,0x84,0x52,0x48,0xe8,0x5d,0x8e,0xe8,0x07,0xa6,0x04,0xeb,0x53,0x15, + 0xe3,0x69,0x74,0x51,0xf0,0x1c,0xc2,0xd2,0xd3,0x67,0x37,0xe6,0xe4,0xdf,0xdf,0x1e, + 0xba,0xb5,0x83,0x4a,0x92,0x12,0x2e,0x99,0xb0,0x0f,0xb4,0x8b,0xb3,0x89,0xe4,0x6f, + 0xfd,0x4c,0xe2,0x59,0x8b,0xc2,0x96,0x68,0x33,0xdb,0x8c,0xb7,0xc9,0x70,0xe2,0xfb, + 0x68,0xfa,0x2e,0x45,0xb7,0x05,0x68,0x04,0x4e,0x3b,0xb2,0xca,0x01,0xa4,0xf9,0xa7, + 0x51,0x23,0x31,0xd5,0x72,0xaa,0xbd,0x89,0xa1,0x33,0x1c,0x4d,0x3f,0x59,0x7e,0x80, + 0x59,0x08,0x0d,0xb9,0x4c,0xf9,0x73,0x0d,0x8c,0x96,0x08,0xf5,0x8f,0xd0,0x33,0x0b, + 0x0e,0x1a,0x05,0x8d,0x3c,0xe4,0x50,0x6a,0xe4,0xc0,0x5c,0x2a,0x50,0x7c,0x29,0x0d, + 0x87,0x0f,0xbf,0xff,0xe2,0x06,0x1c,0xc4,0x6f,0x0f,0x0b,0x24,0x07,0xdb,0x96,0xb4, + 0x2f,0xa2,0xb1,0x6f,0x7f,0xee,0xec,0x66,0x8e,0xd2,0x24,0xb6,0xd9,0x79,0x42,0xbf, + 0x62,0x85,0x3b,0xbc,0xf4,0x6b,0xbe,0x3d,0xa4,0x76,0x1c,0x46,0xd5,0x1b,0x5e,0x94, + 0x81,0x22,0x92,0x74,0x6d,0x18,0x95,0x14,0x27,0x72,0x59,0x64,0xdc,0x60,0x37,0xc4, + 0x3c,0xc5,0x91,0x13,0xbe,0xbb,0x6f,0x27,0x2f,0x6b,0x4a,0x2a,0xd7,0x50,0x22,0xb4, + 0x2e,0x41,0x5d,0x50,0x63,0x97,0xc2,0xd4,0x57,0xb0,0x8d,0xd3,0x2b,0xf4,0x63,0x41, + 0xe4,0x41,0xa4,0xdb,0xfb,0x09,0xd9,0xc5,0xfa,0x28,0x7c,0x16,0x6d,0x56,0x3b,0xb4, + 0x4c,0xc0,0xcf,0xf0,0xd3,0x4b,0xbf,0xa1,0x07,0x2b,0xf1,0x27,0x0a,0x7a,0x9f,0x22, + 0xe4,0xd2,0x78,0x45,0x4f,0x72,0xd6,0xa7,0x5f,0xd3,0x5f,0x72,0xb0,0x12,0xfa,0x9b, + 0xf8,0x2c,0x40,0x93,0xbf,0x8d,0xc2,0x93,0x45,0x59,0xfc,0x08,0xbf,0x18,0x1c,0x28, + 0x35,0xd7,0x20,0xe6,0xb0,0x96,0xa5,0x82,0x62,0x61,0x85,0xa8,0x33,0xce,0x0b,0x1d, + 0xff,0xf0,0x96,0xc1,0x42,0xf1,0xf9,0x69,0xf4,0x2f,0xb5,0x03,0x82,0x63,0x2f,0x4a, + 0xd3,0x3b,0x38,0x51,0x78,0x04,0x54,0x0e,0x73,0x96,0x69,0x1e,0x05,0x25,0x6b,0xc6, + 0x1a,0xd1,0x94,0x94,0x5f,0xe4,0x6e,0x85,0x99,0x92,0x2b,0xcd,0xd5,0xdb,0x43,0x36, + 0x05,0x23,0xe1,0x2b,0xae,0xe4,0x97,0x56,0xf2,0x46,0x71,0xad,0x63,0xcf,0x87,0xfa, + 0xbe,0xe8,0x32,0x01,0x19,0x26,0x68,0x6f,0xda,0x14,0xc3,0x0d,0x17,0x64,0x6e,0x19, + 0x29,0x6a,0x6d,0xa3,0xdd,0x07,0x47,0xbb,0x0f,0xc6,0xfe,0x41,0xb5,0x10,0xb5,0xac, + 0xfe,0x1c,0xb6,0x1f,0xac,0x2b,0x24,0x01,0x86,0xf0,0x6c,0x29,0xd2,0x54,0x9a,0x13, + 0xe2,0xe7,0x93,0x9c,0x30,0xbf,0x34,0x4a,0x77,0x2e,0x10,0x9d,0x8a,0x75,0x34,0xfd, + 0xe0,0x20,0xb1,0x3a,0x75,0x96,0x53,0xc4,0x24,0x92,0x62,0xce,0x0d,0x2a,0xee,0x57, + 0xd0,0x12,0x04,0x4a,0x90,0xe5,0xa0,0x38,0x4b,0x16,0x24,0xe6,0xb3,0x7f,0xbb,0xbe, + 0x06,0xe4,0x2f,0x7a,0xcc,0x96,0x93,0x45,0x53,0x3f,0x70,0xef,0xb3,0xe9,0x25,0x81, + 0x15,0x62,0x6e,0xfd,0xac,0xa6,0xbc,0xc8,0xe4,0x7a,0xc9,0x73,0xf3,0x23,0x6a,0xf2, + 0x14,0xae,0xed,0xf2,0x4e,0xe9,0xc0,0x70,0x6d,0x74,0xa5,0x48,0x2e,0x5d,0x82,0x03, + 0x67,0x52,0x1a,0x87,0xd0,0x29,0x33,0xac,0x4f,0x96,0xed,0x68,0xf4,0x72,0x82,0xaf, + 0xd3,0x41,0x99,0x67,0x5c,0x6b,0x4b,0x38,0xa0,0x8e,0x48,0xfb,0xbe,0x5d,0x7e,0xc3, + 0x69,0x12,0xbd,0x20,0xa8,0xfc,0x74,0x75,0xd9,0x3f,0xbf,0xf8,0x1b,0xb5,0xe4,0x3c, + 0xf3,0x20,0x1e,0xc3,0x2f,0x73,0xea,0x55,0x11,0xb4,0xd9,0x33,0x31,0xc4,0x00,0xfb, + 0xc6,0x44,0x66,0xfd,0x19,0x58,0x70,0xc5,0x5f,0x58,0xd8,0x81,0xbf,0x5c,0xbd,0xb7, + 0x3b,0x17,0x2c,0x03,0x66,0x00,0x37,0xe9,0x80,0x38,0x5e,0xa2,0xf9,0x49,0x90,0xda, + 0x58,0x48,0xbb,0x2d,0x02,0x6d,0x55,0xe6,0xb6,0x87,0x0d,0x6f,0x2d,0xdf,0x63,0xad, + 0x45,0x0a,0x71,0x1c,0x87,0x0e,0x5b,0x8d,0xc5,0x6a,0xd3,0x16,0x23,0x53,0xb8,0x13, + 0x89,0x2d,0x2f,0x21,0x8e,0x2c,0xb1,0x97,0x59,0xd8,0x8c,0x4d,0x65,0xca,0xdc,0x22, + 0xdc,0x28,0x81,0x7d,0xd8,0xdc,0x70,0x55,0xdb,0x8c,0xd3,0xf0,0x16,0xd0,0x9b,0x9e, + 0xfb,0x9d,0x5a,0xdb,0x09,0xbd,0xab,0xab,0x5f,0x3e,0x1e,0x78,0xbc,0xdb,0x1e,0x81, + 0xe7,0x68,0x73,0xea,0xbc,0xb7,0x1b,0xed,0x20,0xa2,0x43,0x1d,0x12,0x0c,0x1e,0xdc, + 0xcd,0x46,0x37,0x2a,0x87,0x3f,0x02,0x3c,0xb2,0x42,0x18,0x96,0xa1,0xea,0xe2,0x89, + 0x9a,0xcf,0x03,0x66,0x2a,0x9b,0xf0,0xf5,0x4f,0xfc,0x52,0x2e,0x38,0x8e,0xee,0x02, + 0x49,0x40,0xb8,0xaa,0xe6,0x4e,0x18,0x81,0xe3,0xae,0xa1,0x25,0xab,0x68,0xd3,0x6c, + 0x4a,0x66,0x38,0x8c,0xba,0xd1,0x1d,0xa7,0x6f,0xe2,0xb7,0xf8,0x2b,0xe5,0x38,0x89, + 0x07,0x16,0x99,0x2f,0xa5,0xb5,0x2a,0x72,0x95,0x9f,0x46,0x74,0xb1,0x16,0x17,0x8a, + 0x3e,0x3f,0x92,0xdb,0x8a,0x50,0x54,0x43,0x27,0x89,0x58,0x73,0x85,0x73,0xf6,0x9e, + 0xfb,0xfd,0x3d,0x3f,0x88,0xa6,0xf8,0xa0,0x8e,0xcd,0xc4,0xfd,0xbd,0x32,0x68,0x1a, + 0x9a,0x5a,0x37,0x2a,0x6f,0x8d,0x5a,0x8d,0x4f,0x60,0x77,0x50,0x9d,0xed,0x03,0x4e, + 0x0f,0x30,0x83,0x96,0xf1,0xfc,0xc6,0x3a,0x86,0x93,0xf1,0xae,0x7d,0x42,0x66,0xb7, + 0x72,0x17,0xf4,0x12,0x5c,0x59,0xed,0x9d,0x6c,0x2d,0x2c,0x7e,0x6e,0x58,0xd7,0xe0, + 0x75,0x9d,0x86,0x8a,0x63,0x46,0xde,0xdc,0x64,0xdc,0x9e,0xea,0xb0,0xeb,0x9e,0xc5, + 0x1d,0xcb,0x36,0x5c,0x67,0x87,0x6d,0x3b,0x0e,0x9f,0xc8,0x4d,0x34,0xfd,0x9d,0xe3, + 0x49,0x80,0x59,0xc6,0xf2,0xaf,0x84,0x26,0x2c,0x07,0x2b,0x85,0x70,0x64,0x63,0xa8, + 0xe1,0x43,0x58,0xbf,0x6f,0x87,0x12,0x9b,0x8b,0x85,0x62,0x9a,0x6b,0xe4,0xc9,0x1a, + 0x51,0x05,0xca,0xc2,0x62,0xdd,0xe4,0x88,0x5e,0xce,0x65,0x89,0xe1,0x4a,0x9f,0x00, + 0x83,0xc9,0xb8,0xbf,0x79,0x00,0x78,0xb3,0x07,0xcb,0x52,0x1b,0xdb,0x7f,0xc1,0x6f, + 0x59,0xca,0x13,0xb1,0x64,0x59,0xec,0xe1,0x03,0x46,0xf1,0xf8,0x99,0xc1,0x05,0x74, + 0x71,0xf2,0xd3,0xcf,0x7f,0x06,0x3a,0x34,0x6e,0x39,0x5b,0xc7,0x7b,0xa4,0xdf,0x84, + 0x30,0xaf,0x0e,0x01,0xa6,0x0e,0x09,0xfc,0x02,0x5a,0xdd,0xed,0x85,0xb8,0x57,0x40, + 0x2a,0x35,0xe0,0xba,0x40,0x3b,0x18,0xfb,0x31,0x28,0x7b,0x81,0x6a,0x3c,0x24,0x1d, + 0xc0,0xcf,0x23,0x7b,0xae,0x78,0x41,0x4f,0xfc,0x01,0xab,0xee,0x8b,0x87,0xa3,0x01, + 0x9d,0xe9,0x26,0xcb,0xcf,0xec,0xee,0x97,0xcc,0x78,0xd0,0xdf,0xd9,0xb0,0x92,0x25, + 0xb2,0x89,0x20,0x08,0xcf,0x89,0x5a,0x07,0x98,0x25,0xdc,0x8a,0xc1,0x9e,0x86,0x9c, + 0xa0,0x5f,0x64,0x19,0x21,0x98,0x1f,0xf1,0x5c,0x87,0xad,0xc5,0xf0,0x17,0xcd,0x89, + 0x5f,0xc0,0xc2,0x33,0x28,0xb8,0x5a,0x0a,0x63,0x78,0x0a,0x19,0xe2,0x45,0x86,0xbc, + 0x84,0x77,0x1b,0x4c,0x67,0x5f,0xb9,0x06,0x3e,0x9f,0x23,0x5e,0x78,0xbc,0x73,0xb6, + 0xe1,0x05,0x68,0xe9,0xb8,0x26,0x34,0xfc,0x43,0x8a,0x9c,0xa7,0xbe,0x9d,0xd6,0xa5, + 0x3e,0x60,0xa4,0x8c,0x3b,0x9c,0xca,0x73,0x24,0x9f,0x60,0xb1,0xc9,0xf9,0x26,0xda, + 0xd9,0x7e,0x5b,0x27,0xed,0x68,0x78,0x17,0x2b,0xc3,0xe1,0xb4,0xdd,0x49,0x29,0x9d, + 0xda,0xe7,0x20,0x9d,0xdb,0x64,0x8d,0x07,0x71,0x52,0xe4,0xde,0xb6,0x1a,0x66,0x4a, + 0x6d,0x9f,0x6b,0x76,0xc3,0xf5,0x0e,0xdd,0xed,0xfe,0x63,0x38,0x6f,0xb8,0xd8,0x4f, + 0xb2,0x37,0xc2,0xe3,0x75,0x8e,0xf4,0xbe,0x81,0x2f,0x2c,0x15,0xf2,0xce,0x53,0xe6, + 0x49,0x1b,0x75,0xf4,0xfc,0xc9,0x41,0x19,0x55,0x0e,0x0a,0x4d,0xfc,0x24,0x1e,0x0a, + 0x31,0xde,0x1d,0x1f,0x58,0x70,0xa6,0x80,0xbc,0x0d,0x89,0xec,0x51,0x40,0xce,0x29, + 0xcf,0xa9,0x6c,0x16,0x94,0x5d,0xd2,0x86,0x46,0xd6,0x04,0xea,0x18,0x2e,0x71,0xc3, + 0xc4,0x45,0x0b,0x4c,0xdc,0x90,0x0b,0xe3,0x94,0xc7,0xf1,0xb5,0xd4,0xc4,0xc0,0xa2, + 0x4d,0xe0,0x78,0xab,0x29,0x64,0xee,0x47,0x57,0x42,0x77,0xaf,0xf5,0x04,0xc9,0xa9, + 0x82,0x98,0x4b,0x7a,0x68,0x1f,0xd0,0xbe,0xaf,0x78,0xe6,0x51,0x0c,0x45,0xe3,0xfa, + 0xef,0x11,0xbe,0x2a,0xfa,0x49,0x89,0x0e,0x79,0x07,0x1d,0xbc,0xfe,0x3b,0x14,0x72, + 0xc5,0x15,0xf4,0xd2,0xf7,0xcb,0x83,0x6e,0x10,0x60,0x6e,0xfd,0xb1,0xef,0xbf,0xf6, + 0xe7,0xfe,0x68,0x70,0xbf,0xe3,0xee,0xfe,0xa6,0x00,0x64,0xfc,0x86,0x65,0x7e,0xfd, + 0x6f,0x8c,0x7c,0x8b,0xd9,0x1a,0x14,0x71,0x09,0x05,0x9f,0x32,0xbd,0x38,0x01,0x2a, + 0x65,0xf7,0x5c,0x56,0x65,0xd6,0x50,0xd1,0x86,0x3b,0x78,0xce,0x79,0xba,0x11,0x1a, + 0x8a,0x8b,0x19,0xb0,0x95,0x8d,0xcf,0x0d,0xd8,0x7a,0x23,0x9e,0xfe,0x08,0x1f,0x16, + 0x52,0x6a,0x6e,0x7d,0xa2,0xdf,0xac,0xbb,0xee,0x23,0xa8,0xcd,0x18,0xeb,0x18,0xbd, + 0x00,0x5b,0x8d,0xa1,0x17,0x2e,0x30,0x7e,0x61,0xa5,0x9e,0xdb,0x47,0xbc,0x6f,0xca, + 0x9c,0x83,0x70,0xa7,0xa9,0x19,0x50,0x84,0x88,0xfb,0x5d,0x51,0xec,0x86,0x14,0x18, + 0xcb,0x7e,0x63,0x79,0x82,0xc4,0xf1,0x54,0x18,0x49,0x21,0x43,0x5c,0x3f,0x68,0xcd, + 0xa3,0xb0,0x89,0x4a,0xfb,0x8d,0x90,0x38,0xb4,0x3c,0xcd,0x89,0xf8,0xc2,0x29,0xd9, + 0xee,0xd0,0x73,0xce,0x12,0x24,0x6f,0xbd,0x59,0x22,0xb6,0x81,0x95,0xd0,0x2e,0x16, + 0x36,0x12,0xb4,0x8b,0x0e,0xc9,0x55,0x85,0x8c,0x05,0x6c,0x36,0xd2,0x45,0xc6,0x42, + 0x7b,0x38,0x24,0x7c,0xf6,0xce,0x38,0x1e,0x35,0x9b,0xf5,0xde,0x60,0xd0,0xbe,0x63, + 0x72,0xce,0x57,0x50,0x74,0x0c,0x8d,0xbd,0x4e,0x56,0x4f,0xea,0x10,0x39,0x3c,0xde, + 0x75,0x46,0x72,0xbe,0xaa,0x02,0xe5,0x7d,0xaa,0x39,0x3c,0xae,0x59,0xec,0x2e,0x60, + 0x4e,0x7f,0xf1,0x42,0x2d,0xef,0x47,0x38,0xe6,0x33,0x1f,0x48,0x7a,0xbb,0xde,0xa0, + 0x33,0xd7,0xee,0xcd,0xee,0xc0,0xf6,0x10,0xf1,0xe4,0x3d,0xa6,0x20,0x03,0x5e,0xb7, + 0x8d,0xa3,0x8c,0xd3,0xae,0xcb,0x1c,0xd0,0x86,0x50,0xb2,0x6f,0xb3,0x48,0x5b,0xd3, + 0x5f,0xe1,0x03,0xc2,0xae,0x1e,0x2e,0x62,0x7f,0x00,0x75,0xdc,0xb7,0xd4,0xfe,0x15, + 0x72,0xb2,0x87,0xb5,0x15,0xd0,0xa6,0xfb,0x05,0xbc,0xf1,0x21,0x8b,0xd6,0xb4,0x3d, + 0x0d,0x13,0x74,0x74,0x1f,0x13,0x74,0x54,0x99,0x20,0x37,0x3d,0x36,0xb4,0xe8,0xc0, + 0xc5,0xcc,0x45,0xaa,0x3e,0xd6,0x91,0x4a,0xe0,0x41,0x3b,0xe8,0x62,0xdd,0x97,0x7f, + 0x18,0x13,0xbb,0xfe,0x77,0x06,0x30,0x77,0xea,0xea,0xcf,0x72,0xe5,0x42,0x6a,0xe9, + 0xd7,0xf5,0xa6,0x6b,0x6e,0x81,0x54,0x18,0xcd,0xb3,0x39,0x58,0xa4,0x28,0x67,0x19, + 0x22,0x19,0x4f,0xbd,0xad,0x3f,0x2c,0x50,0xe2,0xdc,0x54,0x26,0x1f,0x7e,0xc9,0xe7, + 0x52,0xb9,0x92,0x34,0x96,0x39,0xbb,0x18,0xd0,0x37,0x97,0xa6,0xca,0x81,0x19,0x59, + 0x88,0x04,0x97,0x53,0x96,0xc4,0x05,0x59,0x49,0x1a,0x84,0x96,0x51,0x71,0xeb,0x7d, + 0xf1,0x94,0x62,0xc7,0xcd,0xe1,0x27,0x46,0x74,0x39,0x3d,0xbf,0xbc,0xbb,0x7e,0x17, + 0x80,0x3f,0xc1,0x81,0x9d,0x79,0x26,0xf0,0xc7,0xb6,0x5b,0xd4,0xe4,0x5f,0x75,0x90, + 0x37,0x0a,0xd6,0x5a,0xe0,0xda,0xc5,0x7c,0x9d,0x73,0xa6,0xb8,0x36,0xc0,0x84,0xb2, + 0x65,0x5f,0x44,0xf0,0x0b,0xe0,0xf1,0x4d,0x6c,0x4d,0xca,0xc7,0x4f,0xe7,0x2e,0xb2, + 0x46,0xf5,0x24,0x37,0x8b,0xb8,0x06,0x36,0xa7,0xdd,0x09,0x48,0x2e,0x56,0x39,0x57, + 0x4e,0x68,0x89,0x0d,0x0d,0xba,0xab,0x8f,0x1d,0xd8,0x0c,0xc6,0xba,0x45,0xc3,0x75, + 0xac,0x69,0xd7,0xb8,0x8b,0xc2,0xeb,0x88,0x57,0x8f,0x10,0xc7,0xd8,0xb0,0xa5,0x46, + 0x32,0x48,0x9f,0x7e,0xb3,0x33,0xb2,0x1c,0x87,0x78,0x57,0xfd,0x17,0x3c,0xbc,0x65, + 0x4a,0x6c,0x21,0x15,0x82,0x5f,0xff,0x76,0xad,0x41,0x4b,0xca,0xf0,0x88,0x84,0x7b, + 0x73,0xad,0xcb,0x82,0x18,0xeb,0xb3,0x41,0x99,0x73,0xb5,0x2c,0x29,0x62,0x59,0x25, + 0x91,0xba,0x33,0x93,0xde,0x59,0xbf,0x9b,0x8f,0xd4,0xb4,0xc3,0x48,0x7a,0xd6,0xe4, + 0x5c,0x67,0xa6,0x50,0x72,0x48,0xdc,0xb5,0x55,0x3a,0x45,0xb4,0x0d,0xf4,0x33,0xaa, + 0x9d,0x58,0xaf,0x53,0xcb,0x25,0x0f,0x6c,0xd8,0xd1,0x13,0x82,0x22,0x97,0x02,0xab, + 0xa1,0x4f,0xc8,0x4b,0x64,0xd2,0xe8,0xa7,0xb2,0x07,0xa3,0x8e,0xf6,0x60,0x07,0xa8, + 0x1b,0xb8,0x7f,0x86,0x6c,0x0c,0xb0,0xef,0x51,0xb3,0x33,0xea,0xef,0x42,0x7c,0x98, + 0xeb,0x0b,0xb7,0xd7,0x56,0x1d,0xd0,0x7d,0xdc,0x0d,0xdd,0x37,0xc6,0x85,0xe6,0xed, + 0xd3,0xbd,0x48,0xe4,0x20,0x7f,0x5c,0x41,0xbe,0x5b,0x15,0x9e,0xb1,0x65,0x71,0x42, + 0x29,0xb2,0x86,0x04,0xfc,0x04,0xed,0x22,0x08,0x7e,0xe9,0x15,0xfb,0x46,0x52,0xdf, + 0x64,0x1e,0x9d,0x1f,0xcf,0x53,0x8a,0x27,0x5f,0x80,0x4d,0x83,0x50,0x43,0xb8,0x98, + 0x40,0x8b,0xbf,0xc9,0x13,0xb2,0x34,0xb5,0xc9,0x10,0xe7,0x88,0xfa,0x38,0x53,0x03, + 0xea,0x9f,0x04,0x57,0x5f,0x63,0x73,0x14,0xca,0xa3,0xf1,0xb5,0xcf,0x43,0x53,0xa8, + 0x82,0x10,0x5f,0x4b,0x2f,0x92,0xbb,0xf6,0x62,0x2b,0x5f,0xc8,0x67,0xa5,0x40,0x9e, + 0x13,0x68,0xdd,0x57,0x7f,0x76,0x98,0x68,0xaf,0x33,0x77,0x75,0xea,0xc8,0xeb,0xd4, + 0x43,0x0c,0xbf,0x65,0x78,0x7d,0x3e,0xca,0xdd,0x22,0x1f,0x39,0x29,0x17,0x7e,0x7a, + 0xc1,0x38,0x7e,0x34,0x74,0xa3,0xfd,0xd6,0x02,0xe7,0xc6,0x07,0x0d,0x99,0x6d,0xbc, + 0xe8,0x66,0x19,0x79,0x75,0x43,0x4c,0x05,0x9d,0x38,0xf4,0x3e,0xbe,0xff,0x5d,0xde, + 0x39,0x4e,0x72,0x57,0x48,0x40,0x8e,0x71,0xfb,0xa5,0x09,0x2b,0x8a,0x7d,0xfa,0x6d, + 0xd8,0x4c,0xd3,0x16,0xdd,0xb7,0x8a,0xd9,0x84,0x70,0x88,0xf6,0xe4,0x4b,0x6d,0xdd, + 0x36,0x6c,0x45,0xec,0x8d,0x01,0x04,0x89,0xd1,0x94,0x0e,0x71,0x5b,0x1f,0xca,0x0d, + 0x46,0x53,0xab,0xc6,0xed,0x7d,0xac,0xf3,0xa1,0x51,0x6a,0xf6,0xa3,0xbd,0x57,0x92, + 0xe1,0x44,0x78,0xc9,0xd6,0x9e,0x41,0x30,0xce,0x1d,0x6c,0x3d,0xd7,0x14,0xdd,0xef, + 0xf3,0xd2,0xce,0x6b,0x19,0x97,0x7b,0x26,0x5c,0xbe,0x9b,0x67,0x1b,0x4e,0x8e,0x5e, + 0x8d,0x37,0x2b,0xbd,0xcf,0x4a,0x6e,0xa4,0x34,0x8b,0xce,0x59,0x9e,0x59,0x18,0x11, + 0xdf,0xb5,0x3c,0xd4,0x2a,0xa2,0x4e,0x23,0x9b,0xd2,0x0a,0x57,0xd1,0xfd,0x67,0x99, + 0x39,0xd9,0x78,0x5c,0xf6,0x3e,0x76,0xbf,0xa9,0x0a,0xa6,0x1e,0x2a,0x12,0xe9,0xef, + 0x00,0x7a,0x8f,0x0d,0xea,0x39,0x50,0x23,0x61,0x2e,0xb3,0x4c,0xae,0x3a,0xb8,0x75, + 0x4d,0x8e,0x4c,0x8e,0x8f,0x8f,0x26,0x4d,0x8e,0x04,0x40,0xbb,0x1f,0x53,0x96,0x2c, + 0xd9,0xe2,0xc9,0x68,0xdc,0xe4,0x49,0x08,0x5f,0xc3,0x0a,0x77,0x32,0xc2,0xf6,0xfb, + 0x30,0xc2,0xd7,0xec,0xf0,0xe5,0x8e,0x37,0x47,0x47,0x6f,0xc6,0xe3,0x37,0xc7,0xc7, + 0x08,0x8b,0x2c,0x4f,0xe5,0x32,0x7c,0xf6,0x29,0xdb,0xd8,0x77,0x69,0x3f,0xa9,0xc2, + 0x53,0x4a,0xf7,0xf5,0xfd,0xdd,0x48,0x0c,0x1f,0x32,0xce,0xb0,0x8d,0x6b,0x5c,0x94, + 0x1c,0x98,0x06,0x05,0xb1,0xbb,0x79,0x4a,0x25,0xa7,0xcb,0x9e,0xad,0x7b,0x23,0xc3, + 0x59,0x86,0xdc,0x98,0x67,0xec,0xa6,0x23,0x43,0xb1,0x3e,0x70,0xf0,0x72,0xd4,0xe4, + 0x68,0x98,0xab,0x91,0x57,0x6a,0xb2,0xd1,0xf7,0xc4,0x39,0x24,0x29,0x04,0x26,0x5f, + 0xb0,0xcd,0x7b,0x38,0x17,0xf3,0xf9,0xdb,0x43,0xf7,0xbc,0xd1,0x9e,0x63,0x73,0x5e, + 0xb5,0xb6,0x67,0xa2,0xf0,0x96,0x36,0xe5,0x05,0xa7,0x42,0x2b,0x90,0x74,0xfb,0x15, + 0xb8,0x11,0xd2,0x2c,0x98,0x6d,0x4d,0xe9,0x05,0x75,0xcd,0xbd,0x09,0xcb,0xd6,0x50, + 0xe6,0x46,0x64,0x40,0x7f,0xda,0x0e,0x0a,0x26,0x14,0xf6,0xf3,0x26,0x8f,0x25,0x09, + 0x2f,0x0c,0x05,0x27,0xce,0x49,0x9c,0x49,0x9c,0x3d,0x85,0x82,0x73,0x85,0x53,0xe5, + 0x9b,0xe9,0x95,0x34,0x8c,0x88,0x56,0x5c,0x22,0x05,0x3a,0xcc,0x83,0x92,0x22,0xbe, + 0x6b,0x6c,0xf8,0xa3,0x14,0x0a,0x09,0xf2,0x76,0xa3,0x95,0xf1,0x64,0xfb,0xea,0xac, + 0x8f,0xda,0x30,0xe5,0x77,0x5c,0xd2,0x94,0x55,0xdc,0xb2,0x37,0x7f,0x96,0x31,0x13, + 0xd2,0xe4,0x2c,0x5f,0x7b,0x50,0x69,0x9d,0x59,0xe6,0x37,0xf7,0x98,0x5a,0xe6,0x77, + 0x4e,0xfd,0x44,0x59,0xa6,0xa6,0x4f,0x83,0x16,0x52,0x6f,0x72,0x41,0x78,0x3e,0xea, + 0x91,0x21,0xd7,0x3e,0xf9,0xe3,0x4b,0x2c,0x10,0x74,0x96,0xd8,0x45,0x6f,0x67,0x82, + 0x1a,0x60,0x13,0x5c,0x97,0x90,0x97,0xab,0xe5,0xa1,0xf6,0x64,0x67,0xfe,0xdb,0x93, + 0x49,0xff,0x3b,0xb2,0x43,0x95,0x84,0x51,0xb3,0xbe,0x30,0x9f,0xe2,0xde,0xaa,0x49, + 0xb2,0x25,0x68,0xc0,0x95,0xaa,0x95,0x19,0x51,0x2f,0x7a,0x19,0x3c,0x9a,0x6e,0xee, + 0x38,0x80,0x15,0x45,0xb6,0xf6,0x97,0x54,0x6d,0x0a,0xf2,0xd9,0x1e,0x36,0x9e,0x27, + 0xeb,0x17,0x30,0x43,0xd9,0xfb,0xbf,0x32,0x7b,0xf5,0x99,0x74,0xe5,0xc3,0x17,0x58, + 0x56,0x37,0x3f,0x14,0x31,0x52,0x1e,0x9d,0xdf,0xa2,0x64,0x6b,0x49,0x08,0x06,0x2b, + 0x85,0xc7,0x80,0x60,0xc8,0xdf,0xcd,0xd4,0x83,0xa7,0xb9,0xc7,0x17,0xa1,0x36,0xf8, + 0x71,0xcb,0x53,0xd2,0x32,0x7f,0x81,0xde,0xe6,0xd7,0xb6,0x88,0xab,0xa2,0x1a,0x7a, + 0x67,0x3f,0xff,0x79,0xf0,0xfd,0xa3,0xa7,0x6e,0x70,0x38,0x0e,0x0a,0x87,0x6f,0x10, + 0x0f,0x06,0xc3,0x70,0x39,0x76,0x3c,0xf0,0x69,0xf2,0x11,0x96,0xe2,0x7f,0x47,0x51, + 0xde,0x07,0x26,0x41,0xef,0x6b,0xe7,0x95,0x67,0xab,0xda,0xba,0x61,0xd9,0x97,0x7e, + 0xd1,0xfa,0x9a,0xf7,0x64,0xc3,0x55,0xa1,0x38,0xb3,0x55,0x87,0xde,0xa2,0x35,0x4d, + 0x4b,0xa0,0x40,0xdb,0x41,0xde,0x2c,0x1c,0xef,0x9a,0x8f,0xe9,0xa4,0xf1,0xe4,0x65, + 0xe3,0xc9,0xab,0xc6,0x93,0xd7,0x8d,0x27,0xc3,0x41,0xf3,0xd1,0xb0,0xf9,0x68,0xd4, + 0xb4,0x50,0xdf,0x39,0x9c,0xb4,0x47,0xc5,0x0c,0x6f,0xdf,0x61,0xa2,0x9e,0x6e,0x87, + 0x0d,0xb2,0xee,0x7f,0x43,0xf3,0x84,0x17,0x34,0xfb,0xc1,0xa2,0x86,0x02,0xbe,0x2a, + 0xb6,0x1f,0xee,0x49,0x3c,0x8e,0x7c,0x74,0x8f,0x09,0x01,0x3a,0xab,0xd6,0x45,0x8e, + 0x78,0x60,0x0c,0x57,0x9b,0xfc,0xd6,0xae,0xbb,0xe2,0x57,0x8b,0x97,0x32,0xe5,0x8f, + 0xf3,0x54,0x1a,0xad,0xbe,0xc8,0x60,0xfa,0x9e,0x3e,0xdb,0x7a,0x79,0xbf,0xc1,0x96, + 0xe9,0xd1,0x17,0xf2,0x3d,0xf6,0x4f,0xd9,0xf7,0x63,0xc2,0xd4,0xf0,0xaf,0xe0,0x9f, + 0xb4,0x8d,0xb3,0x28,0x6e,0x33,0xaf,0x09,0xc6,0x82,0xe1,0xeb,0x3d,0xd5,0xf7,0x5a, + 0x2c,0xb9,0xad,0xd6,0xe9,0x69,0x9e,0xc8,0x3c,0xd5,0xdd,0x74,0x24,0xb0,0xd7,0xb8, + 0xd1,0x3b,0x17,0xf9,0xf8,0x32,0xf1,0xa0,0xba,0xca,0x7f,0x20,0x7c,0x5c,0xe4,0x54, + 0xc3,0x44,0xda,0xfb,0x3d,0x29,0x97,0x7a,0xf6,0xc4,0x92,0xfe,0xa7,0xa4,0x9b,0x2c, + 0x7e,0xac,0xb4,0xc9,0xb7,0xaf,0xc8,0xf7,0x29,0x2b,0x6d,0x98,0x0a,0xd5,0xc3,0xe1, + 0x52,0x01,0xb0,0x70,0x32,0xe3,0xce,0x2e,0x17,0x05,0x08,0x0d,0x48,0x86,0x8f,0x99, + 0x78,0x8a,0xbe,0x78,0x55,0x5a,0x46,0x8e,0x9f,0xa6,0xae,0x9e,0x54,0x6b,0xf1,0x7d, + 0x5e,0x40,0xaa,0xc0,0x57,0x20,0x9b,0xac,0x5d,0x4a,0x78,0x85,0x3e,0x00,0x08,0x13, + 0x57,0x0a,0x06,0x29,0x37,0x3e,0x51,0xe2,0x22,0x0f,0x1d,0x4a,0x1e,0x66,0x12,0x61, + 0x2c,0xee,0xe4,0x12,0x85,0x74,0x4c,0x3b,0x96,0xb5,0x04,0x65,0x55,0x3c,0xf6,0x4e, + 0x28,0xcb,0x64,0x6f,0x31,0x3b,0x09,0x88,0xcd,0x2b,0xf3,0x1d,0xac,0xf7,0xa0,0xb5, + 0xb8,0x83,0xcd,0xfb,0x29,0xea,0x50,0xb7,0x60,0x71,0x5c,0xd5,0x1e,0xfc,0x1d,0xf9, + 0x82,0xbc,0x45,0xd8,0xd5,0xdd,0x62,0x09,0x75,0x4b,0x03,0x9a,0xb4,0x6d,0xdc,0x99, + 0x56,0xc7,0xa2,0x41,0xc7,0xf1,0x70,0x54,0x69,0xb1,0xa7,0xe4,0x3e,0x2c,0x32,0xdf, + 0xa5,0x65,0x9f,0x7d,0x6b,0xd0,0xa6,0xb7,0xc2,0x3a,0x5b,0x18,0xe5,0x9c,0xd8,0xd9, + 0xf4,0xc3,0xbb,0x8f,0xd0,0xa3,0x3a,0x81,0x3c,0x14,0x85,0xd2,0x35,0xd1,0x52,0x18, + 0x3c,0x6d,0x33,0xa4,0x72,0xfa,0xc1,0xd7,0x0f,0x21,0xf5,0xe2,0x9b,0x30,0xeb,0x4a, + 0xf3,0x5c,0x11,0x2e,0x4d,0xb5,0x5d,0xe6,0x6f,0x6e,0xb2,0x68,0x7b,0x83,0x54,0xd5, + 0x30,0x93,0xb7,0xd5,0x16,0x13,0x66,0x1d,0xf7,0x12,0x27,0x28,0xfd,0x24,0xdf,0xa7, + 0x7c,0x38,0xa9,0x48,0xb7,0x12,0x46,0xcf,0x1c,0x29,0x4f,0xe1,0x86,0x89,0xdc,0x53, + 0x7b,0xf5,0xf7,0xe1,0x68,0x72,0x0b,0x8a,0x27,0x5c,0xd8,0x1b,0x04,0xc2,0xb6,0x47, + 0x11,0x4a,0xc1,0x40,0xac,0x6e,0xed,0x22,0xf7,0xa6,0x78,0x34,0x18,0xd7,0xd9,0xfd, + 0xf9,0xd3,0x19,0x04,0xba,0x3d,0xc1,0x9f,0x6e,0x0d,0x57,0x36,0x47,0x35,0x57,0x36, + 0x59,0x8a,0x27,0xb9,0x8f,0x86,0xa1,0xcc,0x38,0xfc,0x7e,0xfe,0xee,0x09,0x08,0x9f, + 0xf3,0xe5,0x43,0x89,0x7f,0x35,0x7c,0x3d,0xaa,0x11,0xff,0x91,0x32,0x66,0x1e,0x7e, + 0x34,0x65,0xf7,0xfd,0x1e,0xbe,0xf0,0xb4,0xc4,0x96,0x94,0x3a,0x10,0x2e,0xfe,0x74, + 0x79,0x05,0x22,0xcd,0x7c,0xef,0x47,0x6d,0x83,0x66,0x70,0xcb,0xed,0xd9,0x41,0x1d, + 0x04,0x06,0xaf,0x27,0x3e,0x8e,0xbb,0x2d,0x74,0x9f,0x8a,0xd8,0x1b,0xdb,0xac,0xeb, + 0xd1,0x5d,0x5b,0xfa,0x58,0x9a,0x75,0x3f,0x59,0x27,0x1e,0xd4,0x29,0x78,0x0c,0x4a, + 0x75,0x62,0x63,0x30,0x8a,0xdb,0x35,0xd8,0xf2,0x4c,0x91,0x97,0xb2,0xd4,0xa1,0xf9, + 0xe1,0x9b,0xb5,0xe4,0xda,0x9c,0xba,0xbd,0xb9,0xe8,0x70,0x38,0x08,0xa4,0xab,0x7d, + 0x3a,0xd3,0xaa,0xdb,0xdc,0x13,0xdc,0x27,0xca,0x24,0xc3,0x1c,0x5f,0xd6,0xe2,0xf5, + 0xd3,0xea,0xd4,0xa1,0xe1,0x95,0xa0,0x95,0x1c,0x42,0x0f,0xf7,0x6a,0x6f,0xec,0xe8, + 0x65,0xf5,0x83,0x36,0xbb,0x8f,0x1a,0x33,0x6a,0x6b,0xc3,0x4a,0xfe,0xa3,0xb6,0x36, + 0x84,0xee,0x71,0x5b,0xdb,0x71,0x34,0x3d,0x86,0xde,0x8c,0x65,0x64,0xad,0x5a,0x97, + 0x46,0x74,0x98,0xb4,0xb5,0xbd,0x8c,0xa6,0x2f,0xdb,0xda,0xf0,0x84,0xbe,0x6a,0x6b, + 0x7b,0x1d,0x55,0x81,0x59,0x83,0x2b,0x03,0x64,0xcb,0xa0,0xad,0x75,0xc9,0xf2,0x92, + 0x21,0x2b,0xcf,0xe8,0x13,0x0c,0x5d,0x82,0xea,0x86,0x0b,0xb4,0x93,0x13,0x71,0xaf, + 0x82,0x37,0xd1,0xa7,0xd0,0x2d,0x91,0x74,0xa5,0x00,0x36,0x7a,0x5d,0xa2,0xea,0xf4, + 0xe7,0x82,0x67,0x69,0x55,0x0c,0xed,0x1f,0xef,0x93,0x7a,0x18,0xda,0x10,0xfc,0xc0, + 0xb9,0x3f,0x16,0x9c,0x96,0xa0,0x1b,0xf1,0x71,0x0b,0x5f,0x26,0xc8,0x97,0x09,0xe8, + 0xf5,0x72,0x26,0x33,0xdd,0xaa,0x0c,0x23,0xd4,0x86,0x51,0xe8,0xd5,0x3d,0x58,0x24, + 0xbd,0x0f,0x61,0x5a,0xd8,0xbb,0x67,0x76,0xab,0xee,0xbb,0xa3,0x09,0x2b,0x91,0xa7, + 0x38,0xb8,0x87,0xf7,0x9d,0x89,0x92,0x27,0x5d,0x3c,0x4a,0x62,0x10,0x2e,0x12,0x7c, + 0xc8,0xc1,0x60,0xb0,0x09,0x32,0xe9,0x7f,0x4d,0x57,0xb2,0x2d,0xbd,0x90,0x71,0x5e, + 0x3c,0x9c,0x04,0x6d,0x87,0x77,0xa7,0xa2,0xdd,0xa1,0xad,0xb8,0x46,0x3f,0x1b,0xdd, + 0x5b,0xcc,0x01,0x09,0xac,0x42,0x4d,0x5e,0x70,0x16,0x6c,0xd8,0x67,0xa9,0x56,0x4c, + 0xa5,0x2e,0x9b,0x65,0x14,0x9b,0xcf,0x45,0x12,0x03,0x46,0x31,0x70,0x0a,0xce,0xb9, + 0xe8,0x53,0x22,0xbb,0xa7,0x8d,0xc8,0xb2,0x50,0xbf,0xa3,0xc9,0x52,0x84,0x72,0x1d, + 0x7d,0x10,0x3f,0xce,0xda,0x11,0x41,0x5d,0x51,0x33,0x38,0x4f,0xd5,0x2d,0xa7,0xbd, + 0xe4,0xac,0xdf,0xe3,0x8c,0xdb,0x93,0xdf,0x54,0x9b,0xc9,0x28,0x9b,0x0f,0x3d,0x94, + 0x47,0xb7,0xb8,0xc4,0x0d,0x88,0x91,0xe5,0x16,0x43,0xb3,0x5d,0x87,0x6e,0x7c,0xa7, + 0x0b,0x3c,0x1d,0xc0,0xa9,0xb5,0x36,0x1d,0x6a,0x3f,0x3e,0x67,0x52,0xa6,0x1b,0xb2, + 0x16,0xaa,0x63,0xb8,0x34,0xb7,0xc3,0xe2,0xfd,0xc4,0x0d,0x27,0xaf,0xf6,0x11,0xf7, + 0x02,0x78,0xa6,0x39,0x1c,0x3d,0xcb,0x29,0x7f,0x89,0xbd,0x89,0xd0,0x6e,0xd9,0xf8, + 0x7a,0xc6,0x95,0x68,0xa9,0x67,0xe5,0x69,0x4f,0x08,0x38,0xfe,0xde,0x1b,0x7f,0x15, + 0xba,0x2d,0xf5,0xfa,0xb3,0x2c,0x20,0x43,0x90,0x35,0xae,0xec,0x84,0xe6,0x0a,0xca, + 0x58,0x4b,0x9f,0xce,0x9d,0xae,0x6a,0xcc,0xc3,0x93,0xd5,0x27,0x34,0x72,0x76,0x9c, + 0x89,0x1c,0xfb,0x08,0xbd,0x86,0xdc,0xbe,0x3d,0x3c,0x93,0xa5,0x7d,0x7b,0xc1,0x48, + 0x89,0x0b,0xaf,0x7c,0x1e,0xb6,0x60,0xca,0xe8,0x70,0xc5,0x43,0xfa,0x2e,0x4b,0x63, + 0x7f,0xd3,0x3b,0x5c,0x71,0x87,0x4b,0x95,0xd1,0xab,0x56,0xcd,0xc2,0x7c,0xbf,0xa7, + 0x7b,0x41,0x1b,0xed,0x2c,0x3e,0x94,0xd2,0x8e,0xc8,0x1a,0xfa,0xeb,0x25,0xe6,0x65, + 0x34,0x19,0xc7,0xe0,0xdf,0xbf,0x01,0xfc,0xde,0x41,0xbd,0x90,0xb6,0xa0,0x5c,0xf7, + 0x27,0xce,0xeb,0xd7,0xc3,0x69,0x7c,0xe5,0x49,0xec,0x18,0x7f,0x11,0x93,0x6b,0x84, + 0x97,0xb9,0x4e,0x64,0xc1,0xd3,0x07,0x73,0x37,0x0e,0x33,0x34,0xb7,0x70,0x9f,0x4a, + 0x70,0x2c,0x95,0xc8,0x04,0xd7,0x60,0x24,0xb8,0xaa,0x44,0xed,0x0a,0x08,0x73,0x19, + 0xaa,0x01,0x69,0x95,0x18,0x02,0x0f,0xf6,0xca,0xa6,0x03,0x8c,0x8d,0x8e,0x27,0x35, + 0xdc,0x92,0x45,0x15,0xbc,0xb5,0xde,0x9b,0xda,0x43,0x16,0xbb,0x6e,0xf7,0xce,0x4e, + 0x21,0x6f,0xc4,0x92,0x9c,0x1e,0xf7,0xa5,0xb5,0x9f,0x4c,0xb9,0xcd,0x3f,0x63,0x47, + 0xff,0xad,0xad,0xa7,0x36,0x4a,0x58,0x42,0xae,0xe8,0xb3,0xd3,0x5d,0xec,0x47,0x85, + 0xe2,0xf5,0x92,0xf6,0x5c,0xf6,0x65,0xf1,0x99,0xf5,0x5f,0xd6,0x80,0x00,0xa3,0xd6, + 0x5b,0xef,0x44,0x2f,0x90,0xd7,0x31,0xb8,0x35,0xb8,0x42,0x54,0x9b,0x73,0x8b,0x0d, + 0xce,0xa6,0x58,0x71,0x65,0x44,0x64,0x1a,0x62,0xe4,0x14,0x97,0x28,0x10,0x97,0xee, + 0xd6,0xca,0x46,0x05,0x07,0xd5,0x94,0x74,0xab,0xc1,0xa5,0x97,0x54,0x5c,0xe2,0x88, + 0xdc,0xf9,0x7d,0x95,0x1d,0xfb,0x2d,0xa2,0x2f,0xee,0x0b,0xd1,0x04,0x7c,0xa2,0x6f, + 0x60,0x17,0xa8,0x64,0xdf,0x60,0xde,0x75,0xa9,0x72,0x77,0xc5,0x24,0xab,0x14,0x96, + 0x65,0x5d,0x06,0x33,0x25,0xbf,0x72,0xe5,0x53,0x5d,0x14,0xfe,0xb8,0xaa,0x3e,0x2e, + 0x54,0xf5,0xd2,0x48,0x93,0x21,0xad,0x5b,0xfd,0x85,0xaa,0x77,0xcd,0xfa,0xe1,0x25, + 0xc6,0xff,0xed,0x15,0xc6,0x21,0xfd,0x77,0x02,0xa2,0x51,0x53,0x1c,0xc3,0x7b,0xba, + 0xe2,0x3d,0x7d,0x9a,0xd2,0xe0,0xff,0xee,0xca,0xe0,0x87,0x55,0xf1,0xfe,0xa7,0x15, + 0xf1,0xb6,0x48,0xb0,0xb5,0x40,0x97,0xec,0x35,0xad,0xf6,0x5c,0xef,0xd4,0xe9,0xa2, + 0x5a,0xf9,0x3a,0xa1,0x83,0x07,0xd6,0xd8,0x76,0x2c,0xb1,0xed,0x76,0x2c,0x2e,0x9d, + 0x76,0xe1,0x69,0x6a,0xf3,0x74,0xae,0x03,0x72,0x91,0x9e,0xd1,0x4b,0x82,0xb6,0xba, + 0xb1,0x2c,0x32,0xc9,0x52,0x7a,0x9d,0xc7,0x9e,0x5e,0x42,0x92,0x3e,0xe0,0x10,0x3b, + 0x97,0x8b,0xe0,0x98,0x3f,0xc4,0x80,0x13,0x88,0xfc,0x1f,0x94,0x9c,0x76,0x55,0x95, + 0xc1,0x9d,0xf1,0x1c,0x68,0x4d,0x97,0x50,0xb9,0x99,0xaf,0xac,0xf7,0xde,0xff,0x25, + 0x57,0x42,0xa6,0xc8,0xe9,0x05,0x95,0xd9,0x1c,0xda,0x46,0x0d,0x34,0x67,0xe8,0xe9, + 0x8a,0xc2,0x1f,0xe5,0xdf,0x13,0x1f,0xdd,0x6c,0x2d,0x4e,0x7e,0x2b,0xc9,0x9e,0xa3, + 0xde,0x18,0x04,0xb2,0xcf,0x18,0xbd,0xb8,0xa3,0xd1,0x00,0x27,0x0b,0x72,0x19,0x11, + 0xe4,0x7c,0x9f,0x8d,0xdf,0x88,0xd2,0x95,0xab,0xc7,0xd3,0xed,0x57,0xbe,0x2f,0xe1, + 0xef,0xd2,0x14,0x14,0x5b,0x01,0xfd,0x21,0xdc,0x40,0xf7,0xbb,0x8c,0x0a,0xc8,0xf3, + 0xd4,0xd5,0x5e,0x95,0x59,0x46,0xda,0x4e,0x7d,0x3c,0xd7,0x69,0xd0,0x13,0xb1,0x1c, + 0xa7,0xba,0x2f,0xd9,0x3e,0xda,0x4e,0xb7,0x19,0x8e,0x8f,0xa9,0xca,0xdd,0x3f,0xa4, + 0x57,0x11,0x7d,0xd5,0x82,0x2f,0x67,0x78,0x02,0x62,0x6f,0x1f,0xaa,0x1b,0xde,0xe3, + 0x57,0x0d,0xa5,0x0e,0x0d,0x60,0xc8,0x7c,0xb2,0x3c,0x75,0x3e,0x9a,0x86,0xde,0xe5, + 0xd5,0x97,0x77,0x67,0xee,0xbe,0xc5,0xe5,0x99,0x0f,0x1e,0xbf,0x83,0x0d,0x1d,0x8f, + 0x8b,0x64,0x5b,0xaf,0xd4,0x7c,0x72,0xdf,0x54,0xd2,0x69,0x75,0x04,0x89,0x1e,0x73, + 0xfb,0xa0,0x2b,0xca,0x77,0x59,0x06,0xd7,0x7f,0x6f,0xeb,0xe1,0xa3,0x01,0x0b,0xa5, + 0xe0,0xbe,0x3b,0xfe,0x75,0x71,0xef,0x76,0xd4,0xa8,0x72,0xe3,0xe8,0x4c,0xe8,0x2e, + 0x08,0x7e,0xe5,0x30,0x29,0x04,0xbb,0x9d,0x63,0x78,0xcf,0x92,0x30,0x6e,0xe7,0x56, + 0x71,0xd2,0xbc,0x1e,0x7a,0x9c,0xac,0xce,0xbd,0x2a,0xd4,0x29,0x5d,0xc8,0xb2,0x53, + 0x60,0xdf,0x50,0xa7,0x06,0xd5,0xa3,0x90,0x3f,0x3a,0x9a,0xb4,0xfa,0x42,0x72,0x6e, + 0x78,0x0e,0x46,0xfe,0x47,0x7b,0xff,0xde,0xdf,0xb6,0x91,0xeb,0x8f,0xe3,0xff,0xfb, + 0x51,0x30,0xdc,0x1e,0x87,0xac,0x28,0x59,0xb6,0x93,0xb4,0x2b,0x85,0xf1,0x2b,0x75, + 0xd3,0x6d,0x4e,0xd3,0x24,0x27,0x76,0xb7,0x7b,0x3e,0x8e,0x37,0x1f,0xd9,0xa2,0x63, + 0x35,0xba,0xad,0x28,0x5f,0xb2,0x96,0x7f,0x8f,0xfd,0x87,0x37,0x30,0xe0,0x5c,0x44, + 0xc9,0xce,0xe6,0xec,0xf7,0x9e,0xbe,0x6a,0x91,0x43,0x0c,0x06,0x83,0xb9,0x61,0x30, + 0x18,0x40,0x25,0x1e,0xb1,0x88,0xf5,0x07,0x04,0x85,0xcf,0x6b,0x12,0x8e,0x2c,0x32, + 0x5e,0xc8,0xc8,0xbb,0x56,0xda,0xfa,0x92,0xfd,0xff,0xba,0x0b,0x1f,0x74,0x96,0x7a, + 0xf7,0x8d,0x0f,0x8b,0x05,0x27,0xc6,0x6a,0x23,0x7f,0xf0,0xfa,0xd7,0xb7,0x6b,0xcd, + 0xa2,0x0f,0xdf,0x1a,0x47,0x2b,0xf7,0x95,0x55,0xc6,0xf3,0x69,0xad,0x68,0x12,0xd8, + 0xe4,0x4e,0x27,0x93,0x21,0x60,0x49,0xfa,0xfc,0x58,0xc7,0x59,0x71,0xc9,0x84,0x05, + 0x1b,0x0e,0xc0,0x74,0xb5,0x3e,0x85,0x59,0xed,0x7a,0xcb,0xcc,0x75,0xc7,0xe4,0xff, + 0x24,0x54,0x34,0x21,0xbd,0x39,0x78,0xf9,0xb7,0xfb,0x48,0xc7,0x73,0x93,0xe5,0x3e, + 0xf5,0xf9,0xf5,0xe0,0xf0,0xbb,0x5f,0x7f,0x3c,0xcc,0x7e,0xdd,0x6d,0xed,0xb4,0xda, + 0xd9,0xaf,0x14,0xab,0x63,0xbb,0xb5,0xc2,0xae,0xab,0x6e,0x33,0x0c,0x5f,0x89,0x15, + 0xad,0xbf,0x1d,0xee,0x63,0x77,0x41,0xdb,0x85,0x7b,0xf5,0x61,0xa5,0xb3,0x25,0x79, + 0xd4,0xcc,0xa7,0xea,0xbc,0xdb,0x8f,0x2c,0x1d,0x77,0x4c,0xf4,0xe8,0x0f,0x11,0xc9, + 0xea,0xe3,0x79,0xb5,0x1c,0xf1,0x41,0xbe,0x9a,0xc7,0xf6,0xbf,0x6a,0xee,0x2e,0xc7, + 0xa3,0xe9,0xdd,0x33,0xb6,0x6d,0x34,0x21,0x07,0x16,0xa2,0x17,0xe3,0xc1,0xfc,0x2e, + 0x71,0x59,0x4b,0x68,0x55,0x19,0xea,0x1b,0xee,0xce,0x8d,0x28,0x2e,0x2e,0xdc,0x73, + 0x23,0xca,0x4e,0x1f,0xec,0x46,0x74,0x95,0x2c,0xca,0x46,0xc6,0x90,0x2f,0x19,0x7e, + 0x26,0x3c,0x15,0xeb,0x06,0x9b,0x59,0x2d,0x1b,0x79,0xb2,0x96,0x2b,0x3a,0x57,0x50, + 0x04,0x63,0x1b,0x8d,0x15,0xd5,0xbd,0x3d,0x4d,0x43,0x9e,0x46,0x82,0x5a,0x33,0xb8, + 0x97,0x82,0x5a,0xd1,0x4f,0x03,0x82,0x85,0x82,0x0f,0xa9,0x2f,0xdf,0x8a,0x4c,0x0b, + 0x3b,0x4a,0xf5,0x99,0x31,0x11,0x59,0x42,0xac,0x20,0xd5,0x61,0xdb,0xff,0x35,0xfc, + 0xf5,0x50,0xbd,0xfe,0x6d,0x0e,0x7b,0x80,0xfc,0xff,0x7c,0x8f,0x3d,0x20,0xe2,0xff, + 0x42,0x2e,0x7b,0x40,0xce,0xff,0xd9,0x3e,0x7b,0x40,0xc4,0xff,0x2b,0x9c,0xf6,0xfc, + 0x3f,0xc2,0x2d,0x8f,0x5a,0xba,0x6c,0x37,0xb7,0x77,0xa3,0x2b,0x98,0xf8,0xab,0xab, + 0x1c,0xeb,0x3c,0x47,0x3c,0x88,0xad,0x75,0xd1,0x63,0x8d,0xbc,0xa1,0x53,0x2c,0x86, + 0xea,0x52,0x8c,0xf6,0x0d,0xc0,0xdf,0xd7,0x46,0x12,0x07,0x3e,0x98,0xcf,0xb4,0xee, + 0x5d,0x3c,0x7c,0xd9,0x9d,0x8d,0x40,0xef,0xdd,0xde,0x79,0x64,0x87,0x94,0x5a,0x35, + 0xd4,0x1f,0xfd,0xda,0x11,0x03,0x38,0x80,0xc5,0x35,0xea,0x5c,0xa3,0xca,0xbd,0x18, + 0xad,0x92,0xe5,0x21,0xc4,0xc0,0xc5,0x0c,0xe4,0x8f,0x21,0x61,0x2a,0xe7,0xb8,0x74, + 0x09,0x63,0xf2,0xb4,0x36,0x8b,0xb4,0x85,0xf5,0x3c,0x91,0x18,0xbb,0xd8,0xf4,0xde, + 0x27,0xc0,0x81,0xc2,0xb4,0x07,0xc9,0x76,0x0c,0xcb,0x80,0x7a,0x33,0xb6,0x2f,0xbf, + 0xd4,0xdb,0x9f,0xbc,0x03,0xd3,0xcd,0x35,0x5c,0x3c,0x71,0xbb,0x7e,0xe9,0x2d,0x61, + 0xf5,0x17,0x49,0x7d,0x05,0xf3,0xb2,0x57,0xc0,0x2b,0x24,0xa3,0x00,0xf1,0x3d,0x49, + 0xcf,0x16,0xfb,0x5d,0x8b,0x38,0xeb,0x57,0xee,0xb7,0x8a,0xab,0xcd,0x8e,0xcc,0x06, + 0xc8,0xce,0x99,0x9b,0xb4,0x02,0x3b,0xd4,0x4e,0x7a,0x73,0x13,0x13,0x26,0xf4,0xa3, + 0x1f,0x68,0x07,0xd1,0xd6,0x61,0x4c,0x2c,0x48,0x82,0xab,0xee,0x44,0x70,0x18,0x3d, + 0xf0,0x41,0x1f,0xef,0xd5,0xa4,0xb8,0x8e,0x80,0x49,0xa6,0x37,0x8d,0x92,0x5f,0x7e, + 0x48,0x19,0xed,0x53,0x09,0x04,0xc7,0xa8,0xa8,0xb0,0xd9,0xa7,0x26,0xbe,0x5b,0x37, + 0xbf,0x7c,0xcc,0xb1,0x25,0x40,0x7a,0x2d,0x12,0x37,0xad,0x70,0x0a,0xa0,0xa6,0xe4, + 0xf5,0x78,0xc6,0x80,0xab,0x47,0x74,0xc7,0x99,0x25,0x36,0x05,0x4d,0xe1,0x67,0xa8, + 0xc0,0x2f,0x6b,0x77,0x33,0x80,0x35,0xdb,0x99,0x7b,0xbb,0xaf,0xc1,0xd0,0xe2,0xe1, + 0x1a,0x7d,0x2e,0xe6,0xad,0xbb,0xba,0xc6,0xe9,0xf0,0x6e,0xf1,0x4e,0x8b,0x76,0xa3, + 0x62,0x06,0x70,0x70,0x3e,0x8d,0x3a,0xca,0x53,0xf8,0x51,0x62,0x8d,0xc4,0x81,0x94, + 0x5c,0x4e,0x97,0xbc,0xf8,0x06,0xeb,0xa5,0x43,0x97,0x45,0xde,0x64,0x87,0x43,0xf7, + 0x13,0x3a,0x36,0xaa,0x01,0x84,0xe5,0xf8,0x77,0xbe,0x1d,0x8d,0x21,0xb4,0x39,0xa4, + 0x03,0x9d,0x6e,0xc4,0x98,0x74,0x18,0xd5,0x13,0xf1,0xa5,0xc2,0x0d,0xfd,0xfc,0x5c, + 0x0c,0xa7,0x28,0xe4,0x9c,0x7e,0x15,0xf9,0x97,0xd5,0xd0,0x1e,0xa3,0x7c,0x69,0x35, + 0x07,0x67,0xc9,0x03,0x7a,0x6c,0x9d,0x5c,0x94,0x9f,0x53,0x7a,0x78,0x77,0x31,0x4e, + 0x8e,0x1e,0x5a,0x7c,0x0f,0x8f,0x89,0x30,0xfb,0xfa,0x3f,0x5e,0x77,0xbe,0xeb,0x89, + 0xca,0x9f,0xe2,0x61,0xad,0x58,0xa2,0x61,0x4f,0x6c,0xbd,0xf1,0x56,0xbb,0x4b,0x74, + 0x82,0xa0,0xd0,0xf7,0xe0,0x03,0x22,0x94,0x44,0xca,0x40,0x9b,0xb4,0xc6,0x00,0xb8, + 0x0a,0x4e,0x11,0xf6,0x48,0x13,0x35,0x42,0xfc,0x35,0x4b,0xd7,0xac,0x13,0xd8,0x6d, + 0x39,0x83,0x71,0x28,0x18,0xd6,0x8b,0xe6,0xb5,0x12,0xfc,0x46,0x39,0x25,0xf7,0xd7, + 0xbc,0x33,0xac,0x84,0x41,0xbe,0x1e,0x4f,0x92,0x13,0xc4,0x0b,0xda,0x35,0x4c,0x82, + 0x9d,0x35,0x88,0x88,0x7a,0x7a,0x4f,0x30,0x58,0xa8,0xb4,0x02,0xc8,0xf5,0xe5,0xcd, + 0xb8,0xe1,0x36,0xe3,0x01,0x7b,0x3d,0x46,0x3b,0xce,0x2e,0x42,0xa9,0xbc,0xb6,0x31, + 0x8d,0xa3,0x77,0x50,0x24,0x33,0x3b,0x79,0x7c,0x7f,0x76,0xd8,0x3b,0x79,0xba,0x85, + 0x87,0x48,0xf9,0xa3,0xf3,0xbe,0x85,0xd9,0xbc,0xc0,0x48,0x14,0x30,0x49,0xe8,0xdb, + 0x04,0x6a,0xd6,0x12,0xf7,0x84,0x25,0x9b,0x87,0xfb,0x45,0x79,0x6a,0x60,0xa8,0x37, + 0x8f,0x06,0x65,0xe9,0xa1,0x16,0x17,0xdd,0x23,0xaa,0xd9,0x80,0xca,0x45,0x00,0x39, + 0x39,0x42,0xa7,0xda,0x40,0xaa,0x92,0xbb,0x6b,0x4a,0x4d,0x50,0xad,0x1a,0xaf,0xcc, + 0x5b,0xf0,0xd2,0xed,0x57,0xd8,0xc4,0x1a,0x46,0x5f,0xb0,0x2f,0x68,0x8f,0x2a,0xa1, + 0x49,0x92,0x10,0x14,0x07,0xeb,0xe7,0xbc,0xba,0xdd,0x83,0x33,0xa4,0xd0,0x4a,0xb3, + 0x39,0xe9,0x46,0x45,0xb2,0xc0,0xcb,0x7a,0xa1,0x62,0x64,0x29,0xf2,0x45,0x08,0x6c, + 0x2c,0x5c,0xc7,0x10,0x2a,0x38,0xae,0x1d,0xa3,0x36,0x1e,0xa5,0x0e,0x30,0x7f,0x3b, + 0x38,0x9b,0x60,0x5d,0x90,0xb3,0xc7,0x38,0x72,0xfd,0x9f,0xc3,0x05,0xd0,0xc9,0x67, + 0xcf,0x7d,0x71,0x69,0x20,0xc4,0x60,0x91,0x3a,0xeb,0xec,0x22,0x5c,0x6e,0x4c,0x94, + 0xce,0xf8,0x99,0xc9,0xae,0x39,0x85,0x87,0xc1,0xfe,0xf6,0x6e,0x3e,0x7e,0xd5,0x6c, + 0xc6,0x7a,0x09,0xde,0xa7,0x82,0x50,0x66,0x7f,0x69,0xf7,0xa8,0xff,0xbe,0x72,0xd9, + 0x41,0x37,0x97,0x4b,0x65,0xee,0xe3,0xa5,0x2a,0x32,0x5c,0xbe,0xab,0x18,0xa1,0xca, + 0x7b,0x3a,0x43,0x81,0x3a,0x71,0x38,0x98,0xeb,0xc6,0x12,0x0b,0x81,0xb2,0x1a,0xf9, + 0x56,0xfb,0xef,0xa8,0x56,0x77,0xe8,0x29,0xc2,0x5e,0x3b,0x18,0x57,0xfc,0xbe,0xeb, + 0xbc,0x1e,0xd1,0x2e,0x75,0x8e,0xc4,0x63,0xed,0x8c,0x6e,0x82,0x4c,0x0a,0x58,0x71, + 0xcd,0xd1,0xc0,0xb4,0x2f,0x2c,0xed,0xbf,0x1e,0x61,0xff,0x15,0x86,0xbd,0x95,0xb0, + 0x03,0x16,0x38,0x74,0xd9,0xb7,0x1c,0xe8,0x92,0xb8,0x29,0xa6,0xd7,0x45,0xe8,0x9b, + 0xdc,0xc4,0x29,0x98,0x0c,0x6b,0x84,0xac,0xc7,0x4b,0x91,0xf2,0xfe,0xdc,0xf5,0xc2, + 0xa7,0xec,0x84,0xf1,0x32,0xce,0x3e,0xa6,0x20,0x6e,0x38,0xa0,0x09,0x70,0xca,0x0e, + 0xaf,0x54,0x6b,0x4b,0xd6,0x08,0x78,0xdf,0xc7,0xd6,0x63,0x88,0x94,0x54,0xfd,0x24, + 0xd2,0x6a,0x81,0x33,0x62,0x3e,0x75,0x1e,0x94,0xc6,0xe4,0xb3,0xf5,0xf4,0x64,0xa6, + 0x2b,0x54,0x8d,0xf4,0x57,0x2b,0xfb,0x91,0x23,0xed,0x5e,0xf9,0xa9,0xe8,0x67,0xd1, + 0xa9,0xfa,0x70,0x64,0x5f,0x0e,0xbf,0x1b,0x8f,0xd5,0x2f,0xc1,0x09,0x1a,0x56,0x4c, + 0xcf,0x16,0xbe,0x1e,0xcc,0x69,0x4f,0x5f,0x5d,0x3c,0x42,0xba,0xdd,0xa2,0x53,0x1d, + 0x50,0x11,0x71,0xe8,0x7e,0xd0,0x3b,0xa3,0x2e,0x05,0x8d,0xd9,0xfe,0xf9,0x6c,0xc2, + 0xee,0xff,0x85,0x5a,0xb1,0xe2,0x6f,0x59,0xf0,0xbf,0x4c,0x68,0xb2,0x25,0xdc,0x35, + 0x54,0x7f,0x47,0x9d,0xcb,0x36,0xfa,0xc5,0x6c,0x48,0x72,0xd2,0x7c,0x3e,0xed,0x6c, + 0x6d,0xd1,0xd5,0x81,0x16,0x19,0x02,0xb6,0x1e,0xb5,0xb6,0x41,0x84,0xc1,0xb6,0x35, + 0x19,0xd6,0x28,0x11,0x6b,0xce,0x45,0xb6,0x1f,0x11,0xe6,0xa0,0x32,0xa0,0xc2,0xa1, + 0xf0,0x61,0x89,0xfa,0xb2,0xd0,0xc7,0x13,0x13,0x8a,0xb1,0xfa,0x8f,0xff,0x76,0x7d, + 0xd2,0xcb,0x75,0xfd,0x41,0x09,0xa7,0x98,0x30,0xfe,0x19,0xe8,0x75,0x69,0xab,0x97, + 0x2c,0x44,0x7c,0xb4,0x1a,0x4c,0x69,0x4a,0xed,0x53,0x99,0xd1,0x07,0x0c,0xe0,0xad, + 0x6b,0x76,0x49,0x23,0xb3,0x94,0x4c,0xa7,0xb3,0x82,0x98,0x89,0x98,0xa5,0x30,0x07, + 0xfa,0x42,0xc7,0x3a,0xed,0x95,0x8e,0x75,0xfa,0x14,0xcf,0x80,0x7d,0x8d,0x7f,0x2c, + 0xe6,0x2f,0x86,0x05,0x1e,0x7f,0xf8,0xfc,0xb2,0x9f,0x3c,0x34,0xa3,0xeb,0x61,0xda, + 0x62,0x0e,0xbe,0xa2,0xe9,0xa2,0x05,0xaf,0x03,0xb4,0x14,0x3c,0x84,0x54,0xfc,0xf0, + 0x7e,0x9e,0x78,0xd0,0xa8,0xf0,0x5e,0x64,0x3d,0xf0,0x08,0xe5,0x77,0x0d,0x6e,0xd1, + 0x46,0xe8,0xf0,0x06,0xe8,0xf2,0xd4,0xa2,0x45,0xca,0x70,0xdf,0x7d,0x64,0x23,0xcb, + 0xe2,0x59,0x67,0x9e,0x9a,0x01,0xcf,0x9e,0x86,0x22,0x0e,0x7d,0xec,0x96,0x26,0xbe, + 0xaa,0x74,0x2b,0xee,0x06,0x1a,0x91,0x81,0x3e,0x75,0x61,0x47,0xe5,0xc7,0x8a,0x80, + 0x25,0x57,0xa0,0xc1,0x24,0x14,0x9b,0xaa,0x4f,0x03,0xc1,0xdd,0x62,0x1b,0x4c,0x57, + 0x77,0xce,0xd7,0xcb,0xee,0xaa,0x3a,0x18,0xe2,0x4f,0x7b,0x3e,0x06,0xc8,0xa6,0x9f, + 0x62,0x6d,0xe3,0x9a,0x06,0x01,0x29,0x61,0x48,0x6a,0x90,0xd6,0x53,0xf2,0x56,0x90, + 0xd0,0x75,0x50,0x3c,0xa9,0x41,0xe1,0x92,0x71,0x3a,0xb9,0x80,0x86,0xab,0xae,0xa9, + 0xa9,0x0b,0x0f,0xa6,0x74,0xd2,0x1a,0xc3,0x09,0xbf,0x31,0xb7,0xeb,0x6e,0x10,0xd7, + 0xa2,0x83,0x17,0xaf,0x0f,0x5f,0xbe,0x7e,0xf1,0x2a,0x8f,0xbf,0x35,0xff,0xe4,0x03, + 0x41,0xe5,0x37,0x30,0xe1,0xeb,0xc4,0x71,0xc6,0x0e,0x30,0xfa,0x1d,0xee,0x6d,0x19, + 0xd9,0xd1,0xc1,0x7f,0x99,0x7d,0xdb,0x1f,0x0e,0xcc,0x0b,0x54,0x4d,0x6f,0xcb,0x4f, + 0x4f,0x1e,0x99,0x77,0x55,0xdf,0x1e,0x88,0xf3,0xbb,0x0a,0xc5,0xb8,0x28,0xfa,0xa5, + 0xd1,0x8a,0x6a,0x1a,0x5b,0x07,0xab,0x33,0x1f,0x93,0x56,0xaa,0xbf,0x4d,0xe7,0xdd, + 0x29,0x9b,0xc4,0xf3,0xb2,0xd3,0xce,0x4e,0xcf,0x3e,0x76,0xc6,0x64,0x22,0x91,0xc1, + 0x14,0xac,0x73,0x73,0x9b,0xf5,0x07,0xb3,0xf9,0x67,0x3c,0x88,0x57,0xe2,0xb2,0x73, + 0x74,0x9c,0x8d,0xb1,0x27,0x07,0x34,0x6f,0xe6,0x71,0x9c,0x36,0xa3,0x17,0x48,0xab, + 0x9d,0x1b,0xa8,0x19,0x18,0x06,0x6a,0x02,0x7a,0xb8,0xcd,0xb0,0x4c,0x1f,0x52,0x4b, + 0x14,0x73,0x54,0x1f,0x6f,0x9a,0x03,0xcf,0x2f,0xa6,0x93,0xd3,0x73,0x7a,0x96,0xe0, + 0x05,0xfa,0x66,0x3c,0x79,0xd1,0x77,0xcc,0xbd,0x5a,0x57,0x03,0xf4,0x8a,0xac,0x76, + 0xf6,0x7b,0x53,0x1a,0xb4,0x85,0xd0,0x0a,0x56,0x29,0x07,0x70,0xfb,0x82,0xb7,0x61, + 0x9a,0xe9,0x96,0xa2,0x52,0x5d,0x8c,0xe5,0x58,0xe5,0x9b,0xa4,0x4c,0x6f,0xcc,0x70, + 0xaf,0x66,0x0c,0x92,0x86,0x67,0x9f,0x45,0xed,0x38,0x99,0x11,0xc0,0xad,0x03,0xef, + 0x66,0x78,0x3e,0x9b,0xd1,0x2d,0x59,0x9a,0x22,0xe7,0x13,0x08,0x38,0xad,0x72,0x88, + 0x69,0x1f,0xea,0xce,0xa4,0x1e,0x17,0xe4,0xd6,0x32,0x75,0xf1,0xb1,0x44,0x90,0x8c, + 0xd2,0x1b,0x74,0x8a,0x79,0xfe,0x4d,0x12,0xff,0x89,0x93,0xe2,0xb4,0x3b,0x6f,0x61, + 0xea,0xdb,0x97,0x78,0x9c,0xf9,0x88,0xde,0xed,0x7c,0x45,0xa3,0x25,0xe1,0x2d,0x3c, + 0xc1,0xf1,0xce,0xd2,0x5c,0xf4,0x4d,0xe6,0xad,0x0f,0x08,0x5a,0x46,0x7f,0x73,0x6a, + 0x1b,0x4d,0xd5,0xe2,0x92,0xf4,0x66,0xbe,0x34,0xeb,0x29,0xa2,0xdb,0x6c,0x87,0x6e, + 0xf5,0xba,0xc4,0x91,0x7c,0x67,0x6b,0xcb,0xb6,0x9d,0xe3,0x8f,0x94,0x40,0xf9,0x78, + 0x13,0x96,0x6c,0x1d,0x6d,0x3e,0x7d,0x16,0x1f,0x6f,0x7d,0xcc,0xaa,0x02,0x4e,0x15, + 0xfc,0x26,0xde,0x8c,0x3b,0x31,0x1f,0x24,0xc7,0x59,0xfc,0x14,0xcf,0xc3,0x39,0x1e, + 0x9f,0xe1,0xf1,0x23,0x1e,0x1f,0xc6,0x0f,0xe9,0xf1,0x1f,0x17,0x13,0x7a,0xb9,0x3d, + 0x3a,0x3d,0xbe,0x75,0xcb,0xae,0xd1,0xef,0x93,0x40,0x99,0xde,0xf0,0xe8,0xe1,0x1d, + 0x68,0x5e,0x3f,0xc3,0x33,0x1c,0x92,0x9e,0xcf,0x89,0x60,0x12,0x14,0xa9,0x82,0xde, + 0x91,0x42,0x9c,0xa6,0xdd,0x0d,0xe8,0x05,0x18,0x4b,0x2a,0xe4,0xca,0xa8,0x04,0x23, + 0x72,0x4e,0x6e,0xb1,0xc4,0x9a,0x3b,0x67,0x24,0x94,0xc7,0x7e,0x00,0xe0,0x9e,0x6c, + 0x7e,0x3b,0x2e,0x08,0x8a,0x76,0x5b,0x4d,0xe0,0x7e,0xc6,0xa4,0xd8,0x89,0x71,0x30, + 0x61,0x60,0xca,0x80,0x3c,0x7b,0x0c,0x12,0x67,0x9c,0x47,0x24,0xd4,0x8e,0xd9,0x06, + 0xa7,0xf5,0xb9,0x74,0x77,0x11,0x67,0xc9,0x72,0x41,0x69,0x23,0x96,0xdd,0x46,0x45, + 0x5e,0xaa,0x55,0xe0,0x50,0x3f,0x09,0xbd,0x5a,0x7e,0xa3,0xea,0xb3,0xf9,0x5f,0x8b, + 0x59,0x62,0x58,0x7c,0x76,0x95,0x97,0x04,0x79,0xb5,0x58,0xd0,0x10,0x1d,0xe5,0x5b, + 0x7f,0x4f,0x2e,0xf7,0xde,0xf7,0x1b,0xef,0x5b,0xfa,0x27,0xd9,0xeb,0xf0,0x6f,0xba, + 0x97,0x6e,0xb5,0x8a,0xeb,0xe2,0x34,0x39,0xbb,0x4a,0x0d,0x1b,0xf3,0xd1,0xde,0xe8, + 0x68,0xfb,0xb8,0x93,0x70,0xfe,0x8b,0xf1,0xa7,0x31,0x1c,0xca,0x43,0x9f,0x87,0x7d, + 0x91,0xb0,0x7f,0xab,0x49,0x42,0x48,0xd2,0x5c,0x7c,0x43,0xd9,0xe1,0xe1,0x10,0xd9, + 0xd3,0xb2,0x91,0xc7,0x48,0x8f,0xbb,0x91,0xf3,0x6f,0x6b,0x2b,0x7a,0x73,0xf8,0xfc, + 0xc3,0xfe,0xcf,0xcf,0x5f,0xd3,0x5c,0xfa,0xe1,0xf0,0xf9,0x5f,0xf2,0x93,0x62,0xde, + 0x03,0xe0,0x06,0xdf,0x9b,0x60,0x74,0x48,0xaa,0xc5,0x87,0x0f,0x40,0x28,0x98,0x7a, + 0x11,0xde,0xf9,0x36,0x8d,0x1e,0x1a,0x64,0x84,0x80,0x4f,0x21,0x36,0x4c,0x57,0xa7, + 0x9a,0x93,0x8b,0xc3,0x61,0x7f,0xaf,0x24,0x26,0x26,0x71,0x43,0xdf,0x1b,0x71,0x1a, + 0x77,0x4a,0x8f,0x6f,0xa4,0xc3,0x48,0xe0,0xa9,0x35,0x23,0xd5,0x7b,0x49,0xbc,0xc3, + 0x4f,0x8e,0x3f,0x8b,0xc5,0xcd,0xad,0xf4,0x33,0xbc,0xd1,0xac,0x40,0x8a,0x8d,0xd4, + 0x3e,0x42,0x70,0x6b,0xb2,0x07,0xb0,0xb8,0x0b,0xb2,0x06,0x6f,0x0e,0x22,0xfe,0x50, + 0x42,0xc3,0x41,0x6b,0xd4,0xcf,0x87,0x64,0x5e,0xf1,0xfc,0xed,0xcb,0xe8,0x2f,0x2f, + 0x0e,0xcb,0xa8,0x47,0x37,0x9d,0xd8,0x13,0x56,0x09,0x16,0x96,0xc0,0x0b,0x5c,0x7a, + 0x3d,0x7f,0x73,0xd3,0x48,0xc8,0xcf,0x4f,0xa8,0x19,0xf7,0xa5,0xa7,0x93,0xc5,0xb5, + 0x69,0x4c,0xf2,0x8d,0x93,0xe3,0xc0,0x37,0xf8,0x4a,0x5d,0x80,0x91,0xc0,0x3d,0x77, + 0x6f,0x98,0x13,0x94,0x79,0xec,0x6e,0xd4,0x4f,0x1e,0x80,0xe8,0x01,0x47,0x42,0xb3, + 0x85,0x5b,0x3e,0xf7,0x25,0x95,0x9a,0x0a,0x3a,0xb6,0x71,0x78,0xd2,0x82,0x7b,0x27, + 0x8b,0x85,0x68,0x02,0xf5,0x33,0x63,0x89,0x48,0x63,0xec,0x51,0x7b,0x3b,0xbd,0x41, + 0x07,0x7e,0x85,0xc8,0x50,0x44,0xd4,0xfc,0x1c,0xf7,0xd3,0x40,0xf0,0x8b,0xd9,0x8c, + 0x66,0xe0,0x18,0x2b,0x64,0x9c,0x56,0x25,0xcc,0x5a,0x7f,0x94,0xa0,0x87,0x38,0x49, + 0x45,0x59,0xd4,0x8a,0x79,0xf2,0x29,0x0d,0x51,0x50,0x27,0x84,0xe5,0x3a,0xdb,0xdb, + 0x60,0xfa,0xfa,0xcc,0x27,0xdf,0x7a,0x6a,0x8e,0x11,0xa6,0xc8,0xd1,0x6a,0xb7,0x21, + 0xd1,0x7f,0x08,0xea,0x07,0xc0,0xbd,0xb9,0xa9,0xb4,0x3f,0xc8,0x73,0x0a,0xb0,0x6a, + 0x78,0x5c,0xe4,0xb6,0xb4,0x3f,0x5a,0x05,0x7e,0x17,0x8b,0x24,0xe6,0x66,0x8c,0x1b, + 0x9a,0x85,0xe6,0x9e,0x42,0x6b,0xae,0x69,0x94,0x42,0x87,0x55,0x24,0x6a,0xfc,0x21, + 0xbf,0xf4,0x4e,0x1a,0x2f,0x7a,0xa3,0xbf,0x86,0x17,0x85,0xc3,0xdf,0x3f,0xe8,0x19, + 0xfc,0xf6,0xc7,0xef,0x74,0x52,0xce,0x85,0xe9,0x08,0xeb,0xa7,0xb3,0xb0,0xed,0x9e, + 0x37,0xa3,0x82,0x36,0x3c,0xfd,0x4e,0x4c,0x16,0x2e,0x87,0x71,0x26,0xf1,0xd6,0xca, + 0xce,0x4d,0x6c,0xa6,0xaa,0xe6,0xe1,0xe7,0x29,0xe6,0x0e,0xb8,0x68,0x32,0x4e,0x9a, + 0xb7,0xc0,0xe5,0xf8,0x96,0x11,0x76,0xfe,0xf3,0xe0,0xcd,0xeb,0x56,0xc9,0x4b,0x00, + 0x45,0xef,0x4f,0xb8,0x10,0x6f,0xc2,0x1e,0x7d,0x7a,0x57,0xfc,0x83,0x66,0x5f,0xc3, + 0x8e,0x1e,0xb3,0xe3,0x37,0x52,0xdb,0x7d,0xcf,0xcb,0x64,0xf2,0xbd,0x0c,0x7b,0xd3, + 0x4f,0x4f,0x67,0x9f,0xa7,0xf3,0xc9,0xe6,0xa6,0xfc,0x62,0xba,0x7e,0xc7,0xbe,0xf2, + 0xfe,0xca,0x77,0x89,0xd2,0xfa,0xe4,0xa4,0x97,0x76,0x65,0xc0,0x9f,0x11,0x93,0x79, + 0x21,0xc8,0xdb,0xdd,0xc1,0xd3,0xef,0xbb,0x83,0x46,0x23,0xed,0x1d,0x0d,0x8e,0xf3, + 0x5f,0xa9,0xae,0x2d,0x3e,0xb2,0x48,0xf8,0x71,0xc6,0xd9,0x93,0xf4,0x5b,0xba,0xc6, + 0x41,0x99,0x57,0x2c,0xdc,0xa3,0xde,0x54,0x96,0xed,0x9e,0x5d,0xc9,0x4e,0xd2,0x1b, + 0x01,0xa7,0xc7,0xa7,0xdb,0x4f,0xf6,0xe2,0x36,0x71,0x87,0x66,0x55,0x72,0x89,0x31, + 0x31,0x4b,0xe1,0x36,0x50,0x52,0x5f,0x41,0x54,0x8f,0x84,0xbe,0x05,0x13,0x03,0xf5, + 0xb2,0x9f,0x8a,0x1e,0x84,0x92,0x12,0x5c,0x21,0xd1,0xe1,0xe1,0x91,0x1e,0x34,0x1e, + 0xd3,0xf6,0x83,0x2a,0xf1,0xa2,0xe7,0xf6,0xdf,0x62,0x48,0x60,0xc5,0xd0,0x59,0xa1, + 0x65,0x15,0x4c,0x44,0xac,0xce,0x1e,0x24,0x94,0x04,0xb1,0x6c,0xf3,0x35,0x1f,0xe6, + 0x26,0x04,0x0b,0x84,0x65,0xc1,0xc9,0x69,0x0a,0x0a,0xcc,0x1c,0x0c,0x1e,0x90,0x4c, + 0x34,0xeb,0xb3,0x4c,0xb1,0x74,0x39,0x4c,0x1a,0xa3,0x02,0x4a,0xab,0xa7,0x7b,0x14, + 0x9e,0xd0,0xdd,0xa0,0x05,0xf8,0x89,0xf2,0xa8,0x56,0x71,0xcb,0x77,0x07,0xb7,0xa2, + 0x66,0xeb,0x2a,0x46,0x29,0x4b,0xd2,0x6c,0x8a,0xaa,0x08,0xd3,0x42,0xeb,0x04,0xe5, + 0x5e,0x5d,0x19,0xb4,0x43,0x79,0x25,0x66,0x0a,0x84,0xb4,0x12,0x99,0xf7,0x48,0x6a, + 0x7e,0xb2,0xeb,0x60,0x0c,0x4f,0xf5,0xd7,0x36,0x88,0xbb,0xa4,0xbb,0x58,0x37,0xf6, + 0xa2,0xf8,0x7f,0xd8,0x1a,0x20,0xde,0xe8,0xdc,0x17,0x67,0x2b,0x96,0xe6,0x46,0x03, + 0xfb,0x5e,0xf5,0xd3,0xb5,0x9c,0xf6,0xf6,0x02,0xd2,0x11,0x90,0x2c,0x7b,0x0d,0x5d, + 0x31,0x86,0x03,0xd2,0x56,0xe7,0xc4,0xab,0x3f,0xc1,0x2d,0xac,0x71,0xae,0x72,0xe4, + 0x38,0x5d,0x45,0x23,0x74,0x29,0xab,0x40,0xa6,0xf2,0xa3,0x22,0xa5,0xa1,0x4a,0x8e, + 0xd3,0xd2,0x50,0x70,0x05,0x29,0x32,0x5a,0x28,0x3f,0x25,0xca,0x9e,0xc7,0x17,0xc5, + 0x70,0x34,0xb8,0x8e,0x02,0x7c,0x57,0x12,0x0c,0x6c,0x8a,0xdf,0x3a,0x22,0x90,0xbe, + 0x8a,0x0a,0x65,0xdf,0xee,0x7a,0x80,0x72,0x3e,0xbd,0x03,0x22,0x3c,0xcb,0x5c,0x0b, + 0xec,0x45,0xbb,0x4b,0xbd,0xfe,0x15,0x7f,0x49,0xec,0xbb,0xd2,0xc4,0xda,0xbc,0x10, + 0x47,0xce,0x62,0x18,0x46,0xd9,0xac,0xfb,0x66,0x4a,0xe4,0xbc,0xaf,0x9e,0xbf,0x6e, + 0xc5,0x5a,0xb8,0x0d,0xf6,0x13,0x16,0xce,0xa1,0x7f,0x50,0xa0,0x04,0xb7,0x41,0xf1, + 0xa5,0x1b,0x09,0x48,0x71,0x78,0x31,0x16,0x42,0x24,0xe2,0x02,0x5b,0x21,0x7d,0x87, + 0xd9,0x04,0x3b,0xa0,0xfa,0xcd,0x7e,0x3e,0xfc,0x95,0x76,0xc5,0x12,0x2f,0x61,0x8d, + 0xf3,0xec,0x10,0x89,0x38,0x8c,0x4e,0x5b,0xaa,0xe6,0x71,0xd6,0x7e,0xe3,0x8f,0xfc, + 0xd6,0x9b,0x85,0xb1,0x75,0xc7,0xe4,0x8b,0x75,0x30,0xde,0xa2,0xbf,0x5b,0xe6,0x02, + 0x44,0xb8,0xc2,0x43,0x76,0xa3,0x96,0xc2,0x9e,0x3c,0x2f,0xf9,0xa7,0x4b,0xaf,0xb2, + 0x35,0xa7,0x04,0x3c,0x74,0x6d,0x57,0xcd,0x1f,0x3c,0x20,0x20,0x7a,0xe8,0x56,0x03, + 0x87,0x93,0x88,0xa8,0x2e,0xd0,0x94,0x73,0xb8,0x03,0x38,0x84,0xc9,0x0b,0x24,0x2b, + 0x7c,0x9a,0x9b,0x97,0x0f,0xf2,0x0d,0x19,0x35,0x89,0x0c,0x39,0x72,0x07,0x80,0x66, + 0xb0,0x0f,0xe6,0x44,0x6b,0xb1,0x78,0xfc,0x68,0x5b,0x58,0x10,0x1e,0x84,0xae,0x19, + 0xe3,0x21,0x01,0x18,0xe4,0xee,0xb4,0xc5,0xf4,0xe0,0xed,0xc3,0x14,0xaf,0xf8,0xb8, + 0x3c,0xfd,0x32,0x90,0xa6,0x7e,0x28,0x35,0x19,0x74,0x7b,0x0a,0x06,0xc0,0x49,0xca, + 0x07,0x85,0x06,0x42,0x7f,0x96,0x01,0x90,0xa4,0x7c,0x98,0x98,0x24,0x00,0x49,0xbe, + 0x03,0xa8,0x0d,0x1d,0x34,0x25,0xde,0xbb,0x66,0xb5,0xc9,0x4b,0xfc,0xf4,0x4e,0x06, + 0xa4,0xc3,0x1f,0x14,0x24,0x55,0xb7,0x39,0xa3,0x28,0x1c,0x72,0xdb,0x22,0x7b,0xbc, + 0xdc,0x53,0x6d,0x93,0xb2,0xc5,0x7e,0x76,0x8a,0x0f,0x00,0xa1,0x0c,0x54,0x30,0x9c, + 0x3c,0x8e,0xaa,0x84,0x76,0xb6,0x94,0x14,0xe6,0x69,0xa7,0x1d,0x2a,0x07,0xb3,0x53, + 0x8b,0x5b,0x63,0xd4,0x2f,0x9f,0xb5,0x53,0xf2,0x32,0xfd,0xe1,0xd7,0xe7,0x7f,0xcb, + 0x6d,0x22,0xd3,0x82,0xad,0x92,0xd9,0x29,0x75,0x75,0xa7,0x40,0x29,0xfc,0xfb,0x81, + 0xe6,0xab,0x42,0xbf,0xf0,0xe9,0x50,0xc9,0x3f,0x9a,0xc4,0x57,0x1f,0x00,0x8c,0x5f, + 0x4e,0x84,0xe8,0xfd,0x03,0xde,0xf6,0x09,0x7f,0x62,0xbe,0x70,0x61,0x66,0xee,0x90, + 0xa0,0xc2,0xc1,0x98,0x2b,0x5b,0x94,0x08,0xac,0xea,0xdf,0x39,0x56,0x60,0x84,0x18, + 0x0e,0x61,0x41,0x01,0xed,0x6c,0xbe,0x25,0xc1,0xd4,0xee,0xfb,0x34,0x41,0x4a,0x94, + 0x59,0xf8,0x84,0xa5,0x07,0x8d,0x31,0x9c,0x76,0x4f,0x6a,0xb4,0x07,0x32,0xaf,0x29, + 0xb7,0x26,0x7d,0xde,0x36,0x8b,0x4d,0x42,0x7a,0x73,0x12,0x4c,0x2f,0x2f,0x0e,0x7f, + 0x7b,0x1b,0x03,0x8d,0x37,0x37,0x2a,0xf8,0x2d,0x84,0xbb,0x30,0x0f,0xcd,0x5c,0xf1, + 0xad,0x54,0x46,0x63,0x17,0xaf,0x9e,0x5c,0x7d,0xa9,0xcb,0x4a,0x7c,0x4e,0x47,0xb1, + 0x53,0x81,0x51,0x60,0xc5,0xcb,0x1b,0x09,0x55,0x62,0x58,0x15,0xd7,0xed,0x6d,0xda, + 0x71,0x5f,0x6b,0x36,0x09,0x53,0x99,0x42,0x0c,0x50,0x3e,0xd5,0xa7,0xc5,0xe2,0xe8, + 0xd8,0xac,0xb2,0x3a,0xa3,0x78,0xfb,0x9d,0xdb,0x6a,0x13,0x4b,0xdf,0x43,0x06,0x5a, + 0x3b,0x0d,0x05,0xbc,0x51,0x97,0xf1,0x48,0xb8,0x5d,0xa2,0xbd,0x90,0xad,0x4a,0xd1, + 0x32,0x37,0x2b,0x69,0x93,0x62,0xf6,0x4f,0x37,0xab,0x3a,0x44,0xec,0xd8,0x19,0x9f, + 0xf5,0x06,0x08,0xca,0xd2,0xe4,0xd8,0x9d,0x9f,0xe1,0x31,0xa8,0xeb,0xec,0x05,0xd9, + 0xb3,0xf5,0x4e,0x1b,0x6a,0xa2,0x70,0x03,0x02,0x42,0x93,0xcb,0xf4,0xe6,0x28,0xfe, + 0x93,0x06,0x6c,0xce,0xf0,0x28,0x8a,0x3b,0x3c,0x8b,0x2b,0xfa,0xe3,0x65,0x31,0x6b, + 0xd0,0x07,0x6d,0xf4,0xb7,0xbe,0x55,0xa9,0xa0,0x6f,0x08,0xf3,0x9a,0xae,0x57,0x69, + 0x82,0xb0,0x2d,0xa9,0x81,0x23,0x01,0x42,0x24,0x91,0xae,0xe8,0x00,0x66,0x45,0xb3, + 0x37,0x1b,0xe1,0x32,0xf2,0x67,0x5e,0xd9,0xe8,0x7b,0xc4,0xeb,0x09,0xce,0x28,0x64, + 0xb1,0xa3,0xb1,0x8e,0x85,0x14,0x8f,0x1c,0x10,0x18,0xeb,0xe2,0xc6,0xc5,0x14,0xc3, + 0x19,0xa7,0xc5,0x3f,0xc0,0xaa,0x23,0xa8,0xbd,0x34,0xa7,0x34,0x59,0x62,0xb9,0x90, + 0x4a,0xe7,0x75,0xa2,0x3d,0xa7,0xa8,0xdd,0x0b,0x9c,0x77,0x82,0xca,0x62,0x4c,0xa3, + 0x4f,0xe3,0x2a,0x67,0xb6,0x1d,0x2f,0x21,0x7b,0x5e,0x2e,0x9d,0x8c,0x9a,0x81,0x39, + 0x1f,0xe7,0x16,0x2b,0xbd,0x51,0xdd,0xa0,0x22,0xd2,0x20,0xf7,0x39,0xf4,0x47,0x5d, + 0x0b,0x41,0xfb,0xd1,0xa0,0xd1,0x31,0xd5,0xc8,0x56,0x5d,0x06,0x83,0x10,0xfb,0x35, + 0xfb,0xc4,0x8d,0xba,0x8d,0xe2,0x8d,0x2e,0x0a,0x1d,0x4b,0x0c,0x44,0xf8,0xb4,0xc5, + 0xa6,0x8c,0xb7,0xd4,0xba,0x1b,0xcb,0x1a,0x82,0x70,0xa3,0x1f,0xee,0xc6,0x75,0x7c, + 0x96,0x1d,0xdd,0x44,0x67,0x7f,0x74,0xfe,0xb8,0xad,0xc3,0x76,0x4d,0x6c,0xf4,0x38, + 0xc3,0x2a,0x35,0x1e,0x8f,0xd7,0x2d,0xa8,0x1f,0xa8,0x3b,0xa7,0x37,0x3a,0x32,0x95, + 0x71,0x75,0xb4,0x82,0x65,0xf7,0x18,0xa4,0xe1,0x18,0x35,0xc3,0x7b,0x5d,0x5b,0x5c, + 0xb7,0x2a,0x8d,0x41,0x0c,0x18,0x1d,0x86,0x10,0xf0,0x6b,0x26,0xa7,0x9a,0xea,0x04, + 0xd8,0x57,0x0e,0x6f,0x2e,0x25,0x36,0xfa,0x03,0xdb,0x7d,0xad,0x39,0xe5,0x0d,0x2b, + 0x12,0xb4,0x4b,0x20,0x8d,0xfa,0xc4,0xd2,0x54,0x67,0x19,0xa6,0x04,0x38,0x03,0xa0, + 0x8e,0x64,0x4f,0x55,0x40,0x47,0x0a,0xb4,0xa1,0x4f,0x3e,0xa5,0x37,0x18,0x8c,0xb4, + 0xf9,0xa6,0xcd,0xd1,0xff,0x26,0x5e,0xfe,0x6f,0xde,0x15,0xcd,0x45,0xb0,0x55,0x5f, + 0xde,0xe2,0xc2,0x59,0x3a,0x54,0x26,0x5a,0x1b,0x2a,0x9b,0x50,0xc8,0x3e,0x25,0x97, + 0x97,0x6c,0x94,0xcd,0xf2,0x53,0x11,0x31,0xb2,0x7f,0xd0,0x13,0x84,0x33,0x52,0xc1, + 0xf1,0x7a,0xce,0x87,0x0e,0x57,0x94,0x08,0x99,0x87,0x5b,0x3e,0x19,0xe5,0x9f,0x5a, + 0x23,0x26,0x72,0xeb,0xef,0x00,0x4d,0x8e,0xb6,0x9b,0x7f,0x3e,0x4e,0xdf,0xb7,0x92, + 0xf7,0x57,0x8d,0xf4,0x9b,0xad,0x34,0x15,0x95,0x7c,0x99,0x27,0xff,0x68,0x01,0x09, + 0xcf,0xe2,0xe9,0x51,0x03,0x7a,0xcd,0xe6,0xf6,0x31,0x6b,0xf7,0x00,0x70,0x99,0x97, + 0x47,0xa3,0xa3,0x9d,0xe3,0x63,0x73,0x68,0x48,0x09,0x39,0x8e,0x20,0xf6,0xe2,0xb8, + 0x63,0xd4,0x04,0x97,0x54,0x77,0xb9,0x23,0x8b,0x2a,0x6f,0xe0,0x6e,0xb8,0xc4,0x8a, + 0xe8,0x54,0xdd,0x1c,0xaf,0x5d,0x7c,0x08,0xe3,0x39,0x58,0x90,0xea,0xc3,0x07,0x7c, + 0x10,0x51,0xc1,0xe6,0xd0,0x60,0x07,0xb5,0x19,0x28,0xbd,0x16,0x5e,0xbd,0xfa,0xd7, + 0xe5,0x31,0xdf,0xf6,0x70,0x17,0xb1,0x03,0xf3,0x2c,0xcd,0x0e,0x5f,0xf4,0x9a,0xc1, + 0x54,0x70,0xd6,0xa2,0xc4,0xb4,0x2b,0x9f,0x01,0x1f,0x7e,0xa6,0xc4,0xd4,0x64,0x9f, + 0x5f,0x2f,0x7f,0x9e,0x5f,0x9b,0xcc,0xbd,0xb3,0xe5,0x8f,0xbd,0x33,0xcd,0xaa,0xee, + 0x25,0x97,0x40,0xcc,0x07,0x83,0x64,0xbe,0x0a,0xcc,0x7c,0x50,0x74,0x70,0x9f,0x68, + 0x6b,0x4e,0x6f,0x6e,0x5d,0x01,0xe1,0xfb,0x2d,0xb4,0xa0,0x92,0xb0,0xcc,0x99,0xd0, + 0x5b,0xa0,0xcd,0x82,0xc4,0x0f,0x6b,0xb2,0xa9,0x7f,0x32,0xcd,0x80,0x97,0x7d,0x1e, + 0x24,0x17,0x45,0x32,0x53,0x82,0x5d,0x37,0x7e,0x16,0xb5,0x93,0xba,0x8c,0xdb,0x73, + 0x89,0xac,0x79,0x12,0x19,0x32,0x2d,0xf3,0x11,0x5d,0x39,0x05,0x04,0x3a,0x95,0xec, + 0xb2,0x83,0xec,0xaa,0xe5,0x0d,0x59,0x5a,0x87,0x48,0x61,0x17,0x8b,0xed,0xc7,0x4a, + 0x78,0xe8,0xb2,0x77,0x2d,0x25,0x80,0xfa,0xb0,0x8e,0x1a,0x00,0xdc,0x9b,0x22,0x45, + 0xb8,0x4c,0x95,0xba,0xbb,0xb2,0x9c,0x94,0x84,0x65,0x26,0xaa,0x0b,0x9b,0x9a,0x9e, + 0xcb,0x9f,0xb0,0x61,0x53,0xa4,0xa1,0xbf,0x9e,0x35,0x59,0x3e,0x08,0x44,0x98,0xd3, + 0x3a,0xca,0x59,0x97,0x57,0x61,0x34,0xb7,0x75,0x39,0xe3,0xd6,0x08,0xa9,0x1f,0x24, + 0x55,0xe0,0x42,0x17,0x5a,0xcb,0x45,0x08,0xc0,0x07,0x05,0xf0,0xa9,0xbb,0x23,0xb7, + 0x12,0xb8,0x02,0x87,0x4a,0x02,0x9a,0x4d,0x67,0x24,0xe7,0x9e,0x97,0x22,0xbc,0xe2, + 0x57,0x19,0x85,0xaa,0xf5,0xb3,0x1f,0xf1,0x66,0xbf,0xd9,0xdb,0x17,0x16,0xc2,0xa6, + 0x49,0x11,0xc1,0x6d,0x97,0x90,0xf0,0xab,0x96,0x7c,0xff,0x60,0xbe,0x53,0x37,0x51, + 0xa2,0x3d,0x17,0x30,0x9a,0xed,0x1f,0x9a,0xb2,0xdc,0x59,0x5c,0xaf,0x29,0x16,0x5c, + 0x12,0x84,0x66,0xeb,0x6b,0xc4,0x7e,0xc7,0xab,0x8b,0x40,0x64,0x1a,0x0b,0x60,0x12, + 0xc2,0x19,0xca,0x73,0x8d,0x60,0xa1,0x35,0xa5,0x9e,0x3a,0xf8,0x23,0xb0,0xb0,0x78, + 0xab,0x47,0x3b,0xbf,0xb6,0x50,0xf4,0xe2,0x7c,0x99,0x39,0x5f,0xe8,0xa5,0xb6,0x98, + 0xd5,0xbd,0x84,0x6a,0x1b,0x74,0x8c,0xe0,0xda,0xbe,0xc5,0xad,0x69,0x61,0xc5,0xc3, + 0x2c,0xab,0xcb,0xb2,0x30,0x1f,0xea,0x4b,0x9d,0x4f,0x6d,0x79,0x78,0xb3,0x1f,0xd5, + 0xb5,0x8a,0xfd,0xcc,0xef,0x5a,0xbe,0xfa,0x24,0xb1,0xdf,0xe5,0x5d,0x10,0xd8,0xfb, + 0xc1,0xf6,0xb3,0x26,0x09,0x86,0xe0,0x62,0x6e,0x48,0xb9,0x05,0xff,0x20,0x00,0x4a, + 0x36,0xdf,0x93,0xb5,0x48,0xf1,0x1a,0x72,0x27,0xb8,0xe9,0x1a,0x40,0x7f,0xa8,0x3e, + 0x60,0xff,0x66,0x87,0xa2,0x7b,0xf0,0x3f,0x84,0x7c,0x56,0x0c,0xcd,0x56,0x72,0xa8, + 0xa7,0xe1,0xf6,0xda,0x6e,0x6a,0x50,0xd2,0x37,0x4e,0x0b,0x86,0x82,0xfd,0xca,0xe2, + 0x9b,0x87,0x9c,0xea,0xf2,0x02,0xc8,0xb3,0xcb,0x35,0xe8,0x2d,0xde,0x3c,0xb9,0xa4, + 0x4f,0x40,0xae,0x87,0x3f,0x8a,0x35,0xbf,0x74,0xf1,0x6a,0x40,0xa5,0xfd,0xca,0x22, + 0xe4,0x45,0x9f,0xe4,0xc8,0xe4,0x54,0xec,0x42,0xcc,0x01,0x9e,0xbe,0xb9,0xaa,0x66, + 0x6a,0xd6,0x32,0x7f,0x73,0x02,0x5f,0x2e,0xf6,0x4c,0x08,0xea,0x02,0x72,0xae,0xf0, + 0x76,0x86,0x28,0x79,0x60,0x15,0xe5,0x06,0x20,0x9f,0x13,0x29,0x52,0xa1,0xa3,0xcc, + 0x9c,0x19,0x2c,0xdd,0xd8,0xdc,0xf4,0xbf,0x1e,0x39,0x5f,0x8f,0x69,0x37,0x5e,0xca, + 0xfc,0xe0,0x25,0x53,0xa6,0x07,0x77,0x60,0x9f,0x5e,0x09,0x72,0x9b,0x5d,0x53,0x8f, + 0x89,0x3f,0x6a,0x68,0x44,0xd5,0xac,0x29,0x5d,0xe1,0xd0,0xcc,0xfa,0xb9,0xd6,0x44, + 0x46,0xf7,0x3f,0xa2,0x9a,0xbf,0x0b,0x34,0x67,0xe0,0xfa,0x0a,0x5b,0xd2,0xe2,0x58, + 0xcf,0x14,0x04,0xaa,0x7f,0x40,0x55,0xce,0xef,0xc7,0xcb,0xbd,0x35,0xac,0xec,0xd4, + 0x31,0x92,0xdb,0xc9,0x2b,0xa8,0x9e,0xe1,0x5f,0xc7,0x47,0x85,0xba,0x93,0x9b,0xba, + 0xd9,0xe4,0x4d,0x61,0x14,0x90,0xb6,0xa2,0x2f,0x88,0x16,0xe9,0xae,0xe6,0xb9,0xdd, + 0x90,0x1e,0x8b,0x43,0xe2,0x32,0xe0,0x61,0xcd,0x49,0x16,0x36,0x1e,0xb2,0x5d,0x09, + 0xaa,0xf5,0xe9,0x58,0x0c,0xba,0xf2,0x4b,0x4b,0x0e,0x25,0x7a,0x27,0x6f,0xf5,0x67, + 0x63,0x76,0x76,0xd0,0x33,0xc8,0x4f,0xc4,0x40,0x2a,0xc8,0x19,0xe0,0xdd,0xda,0x43, + 0x3f,0x2e,0x30,0x96,0x72,0x45,0x91,0x04,0x44,0xf2,0x4a,0x60,0xfc,0x40,0x34,0xd0, + 0xf8,0x66,0xb6,0xf5,0x0b,0x0e,0x3c,0xe7,0x7c,0x91,0xdd,0x6b,0x1d,0x03,0x4e,0x25, + 0x6c,0x52,0x3d,0x0b,0xbc,0x33,0xd8,0xb3,0xd1,0xca,0x6a,0xf9,0xb5,0x22,0x48,0xae, + 0x57,0x35,0xed,0x84,0x65,0x11,0x41,0xb7,0xa9,0xd6,0x42,0x3f,0xb2,0x54,0x9f,0xde, + 0x84,0x44,0xda,0x6f,0x6b,0x1a,0xa9,0x18,0xe6,0x4c,0xa7,0x46,0x92,0x79,0xd8,0xf8, + 0xd4,0x78,0xa8,0x87,0x5d,0x44,0x60,0xc5,0x60,0x0f,0x21,0x91,0x61,0xcf,0x7f,0x75, + 0x36,0xec,0xbf,0xc3,0xa7,0x9c,0x01,0xf6,0x27,0xe4,0x27,0x38,0x49,0x33,0x7e,0xf9, + 0x91,0x1b,0xfd,0xc1,0x29,0xd2,0x5e,0xfc,0x23,0xf1,0xc0,0x33,0xd3,0x0f,0x0c,0xa1, + 0xb6,0x2f,0x80,0x9c,0x95,0x5c,0x5b,0xd7,0xd4,0xb6,0xc8,0xd4,0xf0,0xc9,0x49,0xd1, + 0x86,0x95,0xe2,0x72,0x8f,0x94,0x9a,0x1e,0xa0,0x80,0xc1,0x24,0x85,0x3d,0x53,0x0d, + 0xbf,0xf5,0xd3,0x3d,0xd9,0x0d,0xd0,0x7b,0x30,0x1c,0x60,0x96,0xdf,0x64,0x97,0x4a, + 0x44,0x9f,0xbf,0xa3,0x44,0xb9,0x1b,0x21,0x03,0x54,0x0b,0x0a,0xb7,0x73,0x6a,0x4a, + 0x82,0xe4,0x0f,0x46,0x90,0x34,0x0b,0x92,0x2c,0x9f,0xa0,0x4a,0xfc,0x8c,0xe7,0xe6, + 0xa0,0xdf,0x00,0x73,0x5a,0x8a,0x13,0x0c,0x75,0x37,0x1d,0x00,0x68,0x32,0x60,0x98, + 0xcd,0x9c,0xe3,0x59,0xbe,0xbd,0xb9,0x29,0x7e,0xcb,0xf3,0xed,0xb6,0x16,0xc5,0x09, + 0x51,0xdc,0xe0,0xdf,0x46,0x92,0x54,0x28,0xf3,0x7c,0xfb,0xc9,0x62,0xe1,0xbc,0xee, + 0xee,0xa4,0x7b,0x71,0xa4,0x09,0x94,0x45,0x1f,0x3b,0x6c,0xf4,0x10,0x6c,0x02,0x84, + 0x92,0x19,0xed,0x51,0x48,0x67,0xf2,0xe4,0xf1,0x93,0x9d,0xc7,0x69,0x23,0xa6,0x4c, + 0xfe,0x77,0xf6,0xc5,0x2c,0x20,0xf0,0xbd,0xec,0xeb,0x92,0xe1,0x85,0x8d,0xb9,0xa9, + 0x06,0x4c,0x86,0x4b,0x61,0x3b,0x99,0x64,0xb4,0x54,0x26,0xfc,0x0a,0x00,0x38,0x11, + 0x9f,0x45,0xff,0x6e,0xe0,0x17,0x8b,0x07,0xfc,0xa1,0x92,0x02,0x4c,0x7a,0x25,0x72, + 0x3c,0x08,0x5a,0x47,0x5a,0x64,0xbc,0xaa,0x35,0xba,0x78,0xd2,0xd9,0x61,0xcc,0xdc, + 0x1e,0x83,0xd3,0x7b,0xa6,0xca,0xe3,0xb4,0xa3,0xbe,0xcc,0xbb,0x1b,0x01,0x85,0xca, + 0x4a,0x10,0x69,0x30,0xf8,0x8c,0x0a,0x9a,0x25,0x4c,0x45,0xeb,0xec,0x05,0x89,0x1d, + 0xb0,0x33,0x28,0x67,0x76,0x5d,0x5f,0x42,0xd0,0x54,0xcb,0x19,0xb9,0xa1,0x82,0xbc, + 0x2b,0x9b,0x31,0x18,0x0c,0xbc,0xfa,0xf9,0x4d,0xeb,0x7e,0x1e,0xd1,0xed,0xe1,0x7b, + 0x37,0xb0,0x36,0xce,0xda,0x86,0x56,0x2a,0xa5,0xc1,0x84,0xe7,0xb9,0x64,0xc8,0x73, + 0x6d,0x03,0x3b,0x78,0xee,0x6c,0x0b,0x39,0x44,0x73,0xfd,0xa3,0xaf,0x39,0x76,0x15, + 0x88,0xd4,0xe6,0x09,0xfc,0xc9,0xaf,0xc9,0xab,0x59,0x41,0xb6,0xeb,0x24,0x8c,0xbb, + 0xad,0x4e,0x11,0xe0,0x14,0xbe,0x08,0x30,0xd9,0x9e,0xac,0x69,0x62,0x1e,0x71,0xeb, + 0x5b,0x12,0x86,0x26,0xc1,0x1c,0xa0,0xf4,0xe2,0xcc,0xa8,0x1d,0xaf,0x1b,0xf3,0xb7, + 0x4c,0xa9,0xb9,0xb9,0xa6,0xe5,0x04,0xde,0xf6,0x31,0xec,0x04,0x42,0xe5,0x75,0xdb, + 0x34,0x22,0x73,0xa0,0x03,0x6c,0x6e,0x72,0xb2,0x2b,0x0c,0xb9,0x38,0xdc,0xc5,0x07, + 0x29,0xff,0xd2,0xf2,0xd3,0x77,0x56,0x1e,0xe9,0x75,0xf8,0xc3,0xab,0x4f,0xe2,0x96, + 0x96,0x31,0x29,0x99,0x10,0xed,0x34,0x64,0x9d,0xa9,0x84,0x4e,0x26,0xb0,0x01,0x22, + 0x57,0x6e,0x9d,0xe5,0x20,0x17,0xc6,0x71,0xbb,0x1b,0xe1,0x62,0xf8,0x99,0x0d,0x7c, + 0xaa,0x16,0x8c,0xf7,0x2f,0x68,0xb1,0x1b,0x69,0x96,0xad,0xd2,0x71,0x70,0x5f,0x46, + 0x24,0xf0,0x45,0x7c,0xce,0x02,0x17,0x93,0x23,0x3a,0xaf,0x22,0x35,0x41,0x31,0xfc, + 0x0c,0xa7,0x19,0x94,0x03,0xce,0xb6,0xe9,0x03,0x07,0x97,0x55,0x1f,0x17,0x40,0x1e, + 0xbf,0xa2,0xc6,0xd4,0x68,0x09,0xd1,0xa0,0x04,0xf2,0xde,0xf0,0xf4,0x62,0xc8,0xee, + 0x77,0x89,0x77,0x7e,0x28,0x71,0x89,0xac,0x68,0x63,0x2d,0xca,0x11,0x18,0x54,0x27, + 0xfd,0x96,0xbf,0x2b,0x74,0x85,0x08,0x19,0xb5,0xd3,0x9c,0xb4,0xe0,0xb0,0x00,0xab, + 0x84,0x83,0x55,0xc6,0x5f,0xd3,0x23,0x47,0xa2,0x22,0xb8,0x5c,0xe7,0xcb,0x5b,0xbb, + 0x80,0x4c,0x5b,0x08,0x88,0xd8,0x88,0x33,0xea,0x6c,0xad,0x93,0x2b,0xf3,0x50,0x9e, + 0x99,0x87,0xd3,0xd9,0xd2,0x1a,0x21,0x7b,0xbd,0x64,0x68,0xcd,0xff,0x75,0x3a,0xc1, + 0xad,0x81,0xbc,0x01,0xc3,0x5d,0xe7,0x1a,0x01,0x9a,0xdf,0x03,0x76,0x9e,0x5b,0x78, + 0x66,0xa8,0x9c,0x33,0x57,0x54,0xd9,0xe3,0x62,0xc1,0xb4,0x64,0x39,0x72,0x2a,0x0b, + 0x3a,0xe7,0x42,0x2f,0xf6,0x8a,0xd4,0x7d,0xb2,0xd9,0x07,0x88,0x7a,0x32,0x3f,0xed, + 0x9a,0xbe,0x0e,0xfe,0xa9,0x54,0x63,0x9e,0xab,0x5b,0x19,0xb2,0x77,0xd0,0x24,0xb6, + 0x3a,0xb1,0x58,0xd6,0xef,0x37,0x02,0xbb,0xaa,0x1b,0x36,0x45,0x38,0xc0,0x29,0x06, + 0x75,0x68,0xeb,0x11,0x2e,0xed,0xda,0x0f,0x6c,0x64,0xa3,0xe9,0xb7,0x1b,0xb6,0x51, + 0x3f,0xad,0x6a,0x53,0xe1,0xf4,0xa7,0xdc,0xdd,0x00,0x64,0x97,0x79,0x75,0xb8,0xc3, + 0x74,0xa2,0x92,0x22,0xca,0x07,0xbb,0x82,0xf0,0x90,0x56,0xc7,0xaa,0x99,0x03,0xc9, + 0x78,0x09,0x88,0xf9,0xee,0x27,0xce,0xa3,0x5a,0x67,0xf4,0x05,0x1f,0xa8,0x7d,0xe8, + 0xdb,0xe6,0x26,0xfd,0x09,0xee,0x69,0xc4,0x2d,0xc4,0x21,0x8d,0x59,0x66,0x23,0xc6, + 0x9f,0x9e,0x2b,0x66,0x23,0xa5,0xd9,0x2a,0x41,0xf6,0x5f,0x63,0xa5,0xa8,0x87,0x7d, + 0x9a,0xe9,0xce,0xce,0xad,0x79,0x74,0x6d,0x34,0xe7,0x50,0x41,0x97,0x5f,0x5f,0x6d, + 0x35,0xe4,0x0b,0x43,0x26,0xae,0x5b,0x70,0x4e,0x55,0xcf,0x6d,0x44,0xf4,0xa5,0xcc, + 0x91,0x18,0xdb,0x1c,0x05,0x51,0xeb,0x8e,0xb3,0x3b,0x20,0xc3,0x90,0x75,0xeb,0x26, + 0x5d,0xb3,0x06,0x3c,0x48,0x2a,0x6a,0x36,0x37,0xab,0xc7,0x96,0xc1,0x80,0xba,0xdb, + 0x23,0xcb,0x2a,0x17,0x2a,0x5d,0x7e,0x1e,0x9f,0xfe,0x28,0xd0,0xc6,0xca,0x80,0xed, + 0x36,0x54,0x04,0x54,0x66,0xda,0xee,0x84,0xf7,0x60,0x4b,0xd3,0xed,0x9d,0xfd,0x4c, + 0x33,0x34,0xf2,0x59,0xcb,0xe0,0x6d,0xb2,0x0c,0xce,0x2b,0x53,0x21,0x36,0x11,0xbe, + 0x31,0xd2,0x07,0x7a,0xfc,0x4f,0x58,0x92,0xcb,0xe4,0x1b,0x7f,0x44,0x64,0x83,0xb4, + 0x5b,0x0b,0x64,0x47,0x07,0x60,0x6e,0x99,0xec,0xb7,0x50,0xb3,0x12,0xcc,0x90,0x66, + 0x60,0x26,0xba,0x5e,0x05,0xe5,0x4d,0x39,0xdd,0xc0,0x88,0xc0,0x4e,0x7f,0x66,0x67, + 0xef,0x8b,0x4b,0xb5,0xdc,0xb9,0xd9,0x38,0xd2,0xc3,0x90,0x38,0x73,0x8f,0x45,0xea, + 0x8c,0x2b,0xa6,0x54,0x9d,0xc1,0xb5,0x19,0xad,0x38,0x57,0xf1,0x96,0xeb,0x87,0x0d, + 0xf9,0xde,0x78,0xd8,0xc2,0x37,0x57,0xf2,0xa9,0x07,0xd3,0x93,0x17,0x40,0xda,0x16, + 0x4d,0xf4,0x44,0x1c,0x42,0xcb,0x62,0x51,0xbd,0x8d,0x9d,0x17,0xed,0x4c,0xcb,0xb6, + 0xeb,0x76,0x31,0xa6,0x09,0x24,0x53,0xc5,0xc2,0x65,0xee,0x2a,0x24,0xd2,0x9b,0x65, + 0x35,0x80,0x1c,0xb5,0x7b,0x1a,0x03,0xde,0x12,0x12,0x86,0x75,0xd2,0xc0,0x27,0xdc, + 0x4c,0xd5,0x5c,0x22,0x13,0x40,0x73,0x81,0xd3,0xc7,0xd4,0x76,0x24,0x4d,0xf5,0x8e, + 0xd0,0x16,0x0b,0x49,0x0b,0x0f,0xb4,0xd2,0xda,0x76,0x0a,0xdb,0xda,0xaf,0xb5,0x16, + 0xa5,0xd7,0x07,0xd0,0xc9,0x38,0x54,0x9f,0x4c,0x61,0x0f,0x3c,0x25,0x25,0x41,0xe7, + 0xd3,0xde,0xac,0x2c,0x7e,0x82,0xaf,0xa1,0xc4,0xb6,0x0d,0xc8,0xb6,0xad,0x06,0x15, + 0xa9,0x27,0xa5,0x0c,0x4a,0xf2,0xf8,0x37,0x98,0x17,0x09,0x1d,0xa3,0x6e,0x6e,0xf6, + 0xce,0x9e,0xe5,0xed,0xbd,0xf8,0xff,0x47,0xe2,0x9c,0x31,0x8f,0xa7,0x4b,0x8d,0xfd, + 0x04,0xb1,0x70,0xb6,0x08,0xa2,0xb1,0x9d,0xa6,0x5b,0xb4,0x41,0x6c,0xc4,0xff,0x11, + 0xf5,0x29,0x7a,0x57,0xc4,0xd1,0xbb,0xe2,0x8e,0x68,0x87,0xd5,0xc8,0xa6,0xc6,0x78, + 0x05,0xd7,0x8a,0x42,0xdb,0x15,0xdd,0x5a,0x93,0x09,0xcb,0x9c,0xef,0xfa,0x75,0x6b, + 0xb4,0x45,0x56,0xa9,0x46,0x0a,0x50,0x82,0x84,0x89,0x29,0x96,0x33,0xf7,0xde,0x57, + 0x7a,0xf7,0x72,0x57,0x8f,0x58,0xb5,0x88,0xa7,0x00,0x7e,0x39,0x26,0x7b,0x56,0x62, + 0x44,0xdf,0x45,0x8d,0x5c,0x83,0x7e,0x56,0xa9,0xbb,0xd3,0x00,0x95,0x2a,0x15,0x6a, + 0x36,0xf8,0xa2,0xd1,0x0b,0x0a,0x56,0x0d,0x93,0x1d,0x36,0xee,0xd7,0xc6,0xc3,0xfa, + 0x89,0x74,0xc2,0x1a,0xa7,0x09,0xc9,0x0e,0x95,0xaa,0x61,0xe2,0xd0,0x84,0xc1,0x62, + 0x47,0x88,0x8b,0xd0,0x02,0xd1,0x53,0x3d,0x4d,0xd0,0x5e,0x85,0x7a,0x2f,0xa5,0xcb, + 0x42,0xdc,0x8b,0xb2,0x89,0x74,0x31,0x47,0x72,0xab,0x2f,0x71,0xf6,0x51,0x75,0x8d, + 0xfe,0x1c,0x7d,0xe7,0x5a,0x8a,0xe2,0x26,0xab,0x87,0xad,0x2a,0x28,0xad,0x62,0x0a, + 0x14,0x84,0x82,0x3c,0xc1,0x55,0xb7,0xd0,0xd4,0x72,0x18,0x42,0x01,0x59,0x9a,0xd8, + 0x38,0xf1,0x62,0x93,0x16,0x89,0x7d,0x1e,0xfb,0xd0,0x84,0x2f,0x0a,0x0a,0x6a,0x32, + 0xa6,0x09,0x9c,0x85,0x27,0xd2,0x0f,0xb7,0x4c,0x38,0xb8,0x96,0x78,0x3d,0xd4,0x19, + 0x34,0x6f,0x6e,0x77,0xdf,0x3d,0xff,0xf1,0xe5,0x9b,0x0f,0x6f,0xdf,0xbd,0x20,0x7b, + 0xc6,0x83,0x9a,0x29,0x37,0x1b,0x30,0xe3,0x54,0xb9,0x26,0xe5,0x08,0x1f,0xa6,0x29, + 0x11,0x98,0x8e,0xf2,0x01,0xaf,0x7d,0x86,0xa5,0x23,0x0c,0x4b,0x23,0x3c,0x8c,0xd2, + 0x4e,0xa2,0x75,0xf1,0x26,0xaa,0xbd,0x18,0xf4,0xc7,0x1d,0xc9,0xa4,0x4a,0x26,0x47, + 0xb1,0x0e,0xee,0x2c,0xdd,0x87,0x75,0x95,0x92,0x9b,0x9b,0x56,0xa4,0x72,0x9f,0xad, + 0xa2,0x8c,0xf6,0x10,0xe9,0xb2,0x5a,0x77,0x59,0x19,0xee,0x7e,0x3d,0xce,0xab,0x6e, + 0xb8,0x7e,0x88,0x5b,0x34,0x2b,0xc7,0xf3,0x83,0x55,0x93,0x00,0x91,0xab,0x85,0x00, + 0x67,0x2c,0x95,0x5f,0xd1,0xdf,0x97,0x14,0xb4,0xfe,0x77,0x10,0xac,0x8b,0x5c,0x7d, + 0xff,0xf5,0xce,0x8a,0x4c,0x67,0xf3,0xde,0x20,0xab,0x6b,0x65,0x6a,0x85,0x3d,0x97, + 0x27,0xb5,0x74,0x62,0x66,0x09,0xcb,0x41,0x92,0xfb,0xa2,0xa5,0x58,0x95,0x63,0x80, + 0x20,0x28,0xe6,0xd6,0x37,0xea,0x0a,0x16,0x9f,0x1b,0xa3,0xc4,0x72,0x35,0xa4,0x55, + 0xe7,0x32,0x9d,0xdc,0xac,0x35,0xd3,0xe9,0x5f,0x07,0xe5,0x00,0x1a,0x92,0x07,0x18, + 0x43,0x62,0xb8,0xe9,0x0a,0xa2,0x26,0xd6,0x53,0x19,0x5c,0x92,0x10,0xb7,0x3f,0x75, + 0x22,0xab,0xdc,0x31,0xce,0xc6,0x14,0x9a,0x68,0xd3,0xa2,0x77,0xf2,0x35,0xc7,0xc1, + 0xfe,0x7a,0xdc,0x48,0xc6,0xd0,0x79,0xed,0xc5,0xc6,0x33,0x4f,0xdc,0xd1,0xa7,0x32, + 0xb8,0x6a,0xe5,0x38,0x05,0xba,0x71,0xb6,0x85,0xe1,0x46,0xcd,0x6c,0xa5,0x79,0x68, + 0xea,0xb3,0xdc,0xbf,0x8e,0xc5,0x93,0x50,0xd1,0x87,0x1c,0x2e,0x63,0xea,0xe0,0xd5, + 0x9b,0x43,0x18,0x7b,0xbf,0x7a,0xf1,0x3a,0xbf,0x99,0x53,0xc4,0x87,0x71,0xe7,0xd1, + 0x77,0xd9,0x45,0x59,0xcc,0x60,0x7e,0xd5,0xd9,0xdd,0xae,0xae,0xdf,0xd3,0xbd,0xa2, + 0x4c,0xbc,0xd5,0xe1,0x89,0x63,0x06,0x74,0xfe,0xfc,0x38,0xeb,0x5d,0xf4,0x07,0x70, + 0xaa,0x44,0x89,0xb7,0xc2,0xd6,0xb7,0xbf,0x1c,0x7e,0x38,0xfc,0xef,0xb7,0x2f,0x0e, + 0xf2,0xa3,0xa3,0x76,0x16,0xbf,0x7b,0xf1,0x5f,0x24,0x89,0x1f,0x6d,0xe3,0xe9,0xe0, + 0xed,0x9b,0xd7,0x07,0x2f,0xf0,0xba,0x93,0xc5,0x87,0x7f,0xa3,0x92,0x0f,0xfe,0x82, + 0xb7,0xdd,0x2c,0x7e,0xbe,0xff,0x0b,0x9e,0x1e,0xd1,0xd3,0x8f,0x7f,0x7d,0xf1,0xee, + 0x90,0x5e,0x36,0x8e,0x1e,0x67,0xf1,0x5f,0xde,0xbd,0xfd,0x40,0x90,0xf8,0xf6,0x44, + 0xde,0x7e,0xa4,0xb8,0x27,0x78,0xfd,0x8e,0x40,0x5f,0xbf,0x79,0xfd,0xc1,0x14,0xf0, + 0x7d,0x16,0xbf,0x7d,0x7e,0xf8,0x33,0x1e,0xff,0x4c,0xc8,0xdf,0x3d,0xdf,0x7f,0xc1, + 0x38,0xb6,0x89,0x86,0x5f,0x7f,0x7b,0x75,0xf8,0xf2,0xed,0x73,0xc2,0x0a,0x4a,0x88, + 0x94,0xfd,0x37,0xaf,0x0f,0xdf,0xbd,0x79,0xc5,0xaf,0x44,0xca,0xac,0xe0,0x9a,0xf5, + 0xf9,0x7d,0x37,0x78,0x7f,0x64,0xdf,0x05,0x21,0x51,0xf5,0xee,0xf9,0xef,0x1f,0xf6, + 0x7f,0x3b,0x38,0x7c,0xf3,0x6b,0x7c,0x7c,0x6c,0xab,0xfd,0xfa,0xf9,0xaf,0x2f,0x7e, + 0xd4,0x9e,0x47,0x0e,0x3f,0xa8,0x5f,0x26,0xb0,0x92,0xa3,0x76,0x54,0xae,0xd4,0xcd, + 0xa3,0xdc,0x54,0xd3,0xa3,0x6d,0x1c,0x9b,0xda,0xb2,0xd2,0x0a,0xe3,0x11,0xbe,0x51, + 0x17,0xe3,0x38,0x64,0xfb,0x34,0x2c,0x92,0xf4,0x38,0x9f,0x1e,0xb5,0x8f,0xbd,0x71, + 0x70,0xc6,0x02,0x3a,0x05,0xab,0xf8,0x94,0xa0,0x83,0x99,0x81,0x30,0xd7,0xdd,0x1a, + 0xd2,0xac,0xcd,0x1e,0x43,0xb4,0xe8,0xcb,0xc8,0x08,0x81,0x73,0x9e,0x6f,0x16,0x0b, + 0xfe,0xa5,0xf3,0xca,0xea,0xe8,0xbb,0x7d,0xfd,0x13,0xfd,0xb3,0x30,0x70,0xed,0x68, + 0x3f,0xaa,0x06,0xb2,0xfc,0x94,0xb7,0xb3,0xc9,0x27,0x73,0x6e,0x47,0x7b,0x79,0xea, + 0x77,0xd4,0xe1,0xb2,0xba,0xf5,0x8f,0x04,0xbc,0x8a,0x3a,0xca,0x82,0x57,0x43,0x49, + 0x36,0xc6,0xb2,0x83,0xa2,0xb6,0xfe,0x7e,0xd4,0x26,0x4b,0xc5,0xc6,0x37,0xe6,0x96, + 0x33,0x01,0xa6,0xe9,0x58,0x64,0xc3,0x97,0x63,0x7e,0xcf,0x48,0x84,0xb3,0x33,0x1b, + 0x25,0xf8,0x1c,0xa2,0x45,0xc5,0xb6,0x09,0x65,0xb5,0xdc,0x5c,0x02,0x95,0xe3,0xd4, + 0xf1,0xd3,0xf6,0x62,0x31,0x7e,0x46,0x96,0x53,0x37,0x44,0x95,0x88,0x5c,0x52,0xcd, + 0xdb,0x0d,0x54,0x70,0x91,0x27,0xdb,0x4f,0x9f,0x42,0x5f,0xe6,0x28,0x73,0x26,0x9f, + 0xf6,0xf0,0xad,0xa3,0x5c,0xba,0x0d,0xdb,0xe3,0x90,0x18,0x9d,0x00,0x44,0x66,0x41, + 0x3c,0x11,0x17,0x05,0xdc,0x70,0x91,0xd9,0xdd,0x75,0xbf,0xea,0x07,0xe6,0xb5,0xb0, + 0x98,0x44,0xed,0x1c,0xf6,0xf5,0xfe,0x95,0xd0,0xed,0x27,0xbc,0xe1,0x33,0x59,0x37, + 0x41,0xe0,0x20,0x4d,0x09,0xb6,0x35,0xbd,0x28,0xcf,0x93,0x81,0x25,0x14,0x69,0x72, + 0x81,0x33,0x0b,0xa6,0x95,0x52,0x37,0x80,0x3f,0xcf,0x47,0xc3,0x64,0x90,0x9d,0x65, + 0x30,0x0c,0xc8,0xf8,0xca,0x7d,0x06,0x8d,0x60,0x75,0x43,0xf4,0xa1,0xe7,0x4e,0x36, + 0x2a,0xcf,0x9a,0x0f,0x1b,0x67,0x8d,0x87,0x95,0x1f,0xd9,0x87,0x0d,0xfe,0x6d,0x3c, + 0xac,0xf5,0x52,0xfe,0xb0,0x81,0x5f,0x02,0xf7,0x9c,0xe5,0x3f,0x6c,0x0c,0x68,0xb7, + 0x25,0x78,0xee,0xe9,0xf0,0xba,0xc6,0xf5,0x1e,0x15,0x9d,0x80,0xd4,0x3d,0x8f,0x44, + 0xa4,0xe0,0x13,0x7e,0x41,0x14,0xdc,0x98,0x3c,0xec,0x3c,0x7c,0x98,0x56,0x2f,0xfe, + 0xdd,0x62,0x67,0x9f,0x2b,0xbc,0x30,0xbd,0x94,0x4c,0x35,0x8a,0x32,0xb7,0x23,0x98, + 0x4c,0x79,0xbd,0xd1,0xab,0xec,0x11,0x36,0x68,0xe9,0xd3,0x4f,0xeb,0x9d,0xc1,0x4f, + 0xcf,0xf2,0x98,0x6b,0x1f,0x8b,0x2a,0x1c,0x6f,0x18,0xd4,0x60,0x68,0x24,0xfe,0xec, + 0x34,0x21,0xc2,0xc3,0x36,0x3d,0x58,0x0f,0x4d,0xc2,0xf0,0xe0,0x5e,0xee,0xaa,0x66, + 0x92,0xae,0x68,0xfd,0xfd,0xa2,0xa2,0x42,0x55,0x59,0xa1,0xda,0x20,0xec,0xf5,0xf1, + 0x65,0xc3,0xc6,0x52,0x6c,0xc8,0x62,0x8b,0x42,0x85,0x3f,0x82,0xdb,0xcc,0x2d,0xe5, + 0xf0,0x32,0x4c,0x8f,0xc8,0x58,0xe7,0x13,0x73,0x38,0xfe,0xa4,0x0c,0x82,0x3d,0x90, + 0xe1,0x51,0x07,0x63,0x04,0xc1,0x42,0xd4,0x29,0x9a,0x60,0xfe,0x17,0x10,0x59,0x37, + 0xc4,0x3e,0x2a,0xd7,0x3b,0x11,0x65,0xb8,0x18,0x05,0x9e,0xcf,0x00,0xb4,0xdc,0xb9, + 0x7e,0x3f,0x1f,0x9c,0x22,0x5e,0xd0,0x67,0x2c,0xc8,0x4c,0x87,0xe8,0xb3,0x25,0xc4, + 0x92,0x75,0x45,0x65,0xc2,0x29,0xb5,0x22,0x27,0xb0,0x1f,0x79,0x2d,0xd3,0x50,0x43, + 0xa2,0xeb,0xee,0x5d,0x99,0x7c,0x65,0x57,0xc3,0x21,0x21,0x5d,0x6d,0xbb,0x04,0xf3, + 0x18,0x6b,0xb8,0x99,0x5c,0xe0,0x65,0x1a,0x32,0x25,0x26,0x78,0xf1,0x2f,0x8d,0xbe, + 0xaa,0x48,0x34,0xa2,0x93,0xba,0x84,0xae,0xe9,0xf2,0x35,0xea,0x1d,0x6f,0x6f,0xf7, + 0x4d,0x1e,0x6b,0x73,0xd7,0xee,0x9c,0x74,0xbb,0x30,0xc8,0xcf,0xad,0x34,0x5c,0x6f, + 0x71,0xbe,0x95,0x52,0x0f,0x96,0xb9,0x0c,0x17,0x47,0x29,0x83,0xd5,0x7a,0x62,0x0a, + 0x32,0xea,0x00,0x7c,0x53,0x8d,0x80,0x5d,0x5b,0x9c,0xb5,0xed,0xbc,0xda,0x17,0x00, + 0x74,0xc9,0xf1,0x8c,0x92,0x6e,0x47,0x57,0x2d,0xe1,0xa7,0x27,0x10,0xd3,0x4f,0xaa, + 0xa3,0x50,0x3b,0x7f,0xea,0x12,0x43,0x20,0x52,0x12,0xd6,0x99,0x34,0xa5,0xa5,0xb9, + 0x6d,0xcd,0x0e,0xa8,0x7b,0xe4,0xcb,0xc5,0x53,0x4d,0xa4,0xe7,0xc8,0x92,0x4a,0x4f, + 0x29,0xfd,0xef,0x89,0x7b,0xde,0xfc,0xbf,0x87,0x99,0x5f,0x3a,0x4d,0xdc,0x49,0xf4, + 0xd3,0x5e,0x6c,0xda,0xad,0xea,0x44,0x71,0x27,0x5c,0x4b,0x0c,0x19,0x88,0x58,0xee, + 0x31,0xf2,0xcc,0x14,0x8d,0x0f,0x29,0xfe,0xac,0xde,0x67,0xda,0x06,0x0b,0x15,0x45, + 0xb7,0xe9,0xca,0x69,0x71,0x9f,0x05,0xd3,0x3e,0xad,0x12,0xdc,0x4e,0x37,0xce,0xea, + 0xff,0xf5,0xed,0x01,0xc2,0x6d,0x93,0xa4,0x76,0xcd,0xad,0x6f,0x12,0xdb,0x1a,0x66, + 0x76,0x8a,0x09,0x7d,0xd5,0x5d,0x49,0x45,0x1f,0x32,0x2d,0xb8,0x66,0xaf,0xd6,0x0f, + 0xf5,0xdd,0xfa,0x5c,0x0f,0xf3,0x50,0x88,0xa7,0xb9,0xa3,0xf7,0x9a,0x61,0xe3,0xb1, + 0xcc,0x39,0x6f,0x28,0xab,0x23,0x84,0xf3,0x49,0x09,0xcf,0x47,0x48,0xe0,0x9e,0x8e, + 0x77,0xaf,0xa7,0x9f,0xd3,0x9a,0x83,0x3d,0xdf,0x1d,0xca,0x5d,0x86,0x65,0xff,0x2b, + 0x0f,0x6b,0x3d,0xac,0x37,0x23,0xfc,0x46,0x4d,0x75,0x93,0x8e,0x21,0x6f,0xef,0xeb, + 0xd5,0x8a,0x9f,0xc0,0xd6,0x08,0xd0,0x81,0x41,0xf0,0x8c,0x34,0xe5,0x1b,0x1a,0x29, + 0x56,0xa5,0x20,0xc1,0x16,0x00,0x1e,0xd5,0xe3,0x38,0xe5,0x83,0xbf,0xf8,0x99,0xfc, + 0xb6,0x5a,0x2d,0x97,0x2a,0x54,0x18,0x59,0x9c,0x59,0x15,0xf5,0x34,0xb3,0x36,0x1e, + 0xb5,0xcf,0x2c,0xcd,0xbe,0xf0,0x2f,0x09,0x27,0x86,0x04,0x13,0x31,0x08,0x4d,0xe6, + 0x35,0x13,0x75,0x10,0x3a,0x82,0x59,0xa0,0x2b,0x5e,0x5d,0x14,0x2b,0x46,0x65,0x58, + 0x85,0xfa,0xa2,0x52,0xc0,0x2d,0xa0,0xb6,0x80,0x50,0x66,0x8a,0x79,0xeb,0x14,0x67, + 0xd6,0xf8,0x9b,0x36,0x27,0xa7,0xa7,0xf0,0x28,0xa8,0x5f,0xe2,0xb4,0x26,0x9b,0x6e, + 0xb4,0xe8,0x3b,0x66,0x09,0xfa,0xf9,0x4d,0x53,0xea,0x73,0xd8,0x02,0xbc,0x47,0xd5, + 0x1f,0xac,0xca,0x25,0x1b,0x37,0x5b,0xca,0x01,0xde,0xa5,0x4b,0xae,0x2c,0x68,0x32, + 0xc3,0x37,0x89,0xa7,0x80,0x22,0xe4,0xbd,0x1d,0x11,0xcd,0x72,0x61,0x50,0xe3,0x38, + 0x01,0x12,0x2e,0x2c,0x7b,0x12,0x63,0xae,0x14,0xdc,0xbf,0xbd,0x7b,0x55,0x8b,0x97, + 0x77,0x8e,0x96,0x92,0x43,0xbc,0x46,0xf3,0x62,0x34,0xc5,0xc1,0x2d,0xca,0xb1,0x8e, + 0x8f,0xcb,0x4e,0x74,0x03,0x93,0xf1,0xdb,0xe8,0x46,0x3c,0x39,0xd2,0x03,0x66,0x4b, + 0xfc,0x80,0xab,0xb7,0xb5,0x05,0xe8,0x8e,0xd4,0x96,0xf1,0x9f,0xbf,0x1f,0x46,0x4e, + 0xaa,0xde,0xd6,0x8e,0x9a,0x4e,0x5c,0x0c,0xb4,0xc4,0x16,0x38,0x0a,0xe9,0xf2,0x1c, + 0x88,0x6b,0xc4,0xc1,0x0d,0x4f,0x70,0x04,0xf7,0x9c,0x5b,0xfe,0xe8,0xcd,0xc1,0x7e, + 0x3d,0x3c,0x60,0x41,0x8e,0x0c,0x52,0x65,0x38,0xfe,0xed,0xb2,0x88,0x54,0x7f,0x12, + 0xd5,0x29,0x0b,0x15,0x75,0xe6,0xd0,0xfa,0xd5,0x52,0xba,0xee,0x8b,0xa1,0xae,0x4e, + 0x21,0x9e,0xfa,0xae,0x0e,0x7c,0x92,0x1f,0x5d,0x2f,0x57,0x24,0x8e,0x91,0x09,0x1a, + 0x9b,0x37,0x8f,0xdd,0x3b,0xa6,0x12,0xa2,0x4a,0x26,0x08,0x5a,0xca,0xf0,0x93,0x22, + 0xe3,0x54,0x67,0x6a,0xbe,0xf9,0x9e,0x9b,0xcf,0x3a,0x39,0xec,0xe9,0x43,0x27,0x21, + 0xe0,0x3d,0xfa,0xbf,0xc5,0x70,0x1d,0xb3,0xd7,0xb4,0x4e,0xcb,0x7e,0xed,0x4d,0x55, + 0x4b,0xc1,0x10,0x84,0x44,0x47,0x9e,0x8e,0x24,0xfb,0x01,0x29,0x68,0x50,0xda,0xd4, + 0x6a,0x9a,0x16,0x94,0x6d,0xe8,0xd8,0x59,0x0f,0xae,0x50,0x35,0x28,0x54,0x17,0xb2, + 0x8c,0x1a,0xc3,0x61,0x39,0x99,0xbb,0xfd,0x72,0xb2,0x76,0xcb,0xe5,0x2f,0xb2,0x7a, + 0x75,0x50,0xa7,0x07,0xba,0xed,0xbe,0xf5,0xad,0x41,0x0d,0x4b,0x6a,0x16,0xb0,0x33, + 0xb3,0x4c,0x5c,0xd5,0x4b,0x29,0xb4,0x25,0x88,0x1b,0x67,0xdc,0x85,0xae,0xd2,0xab, + 0x35,0x1e,0x16,0xa4,0x80,0xa3,0x33,0x35,0x01,0x5c,0x7b,0x3c,0x22,0x5a,0xab,0xbb, + 0xce,0x47,0xb2,0xd1,0x92,0xfa,0x74,0x73,0x33,0x19,0xe5,0x48,0x58,0x2f,0x41,0x4a, + 0xb7,0x93,0x4b,0x8b,0x1b,0x47,0xee,0x79,0x66,0x66,0xcf,0x2d,0xeb,0xce,0x06,0xb1, + 0xe4,0xd6,0x9e,0x89,0xe2,0x43,0xc6,0x77,0x1d,0xd3,0x55,0x6a,0xfe,0xa9,0xb2,0x12, + 0x8c,0x04,0x91,0xa1,0xd4,0xca,0xb5,0xe1,0x71,0x58,0x27,0x28,0x79,0x98,0x44,0x68, + 0xea,0x8a,0x02,0x73,0x2d,0x27,0x71,0x49,0xbb,0x8e,0x91,0x27,0x96,0x8f,0x4a,0xc8, + 0xde,0x52,0x0a,0x1f,0x3f,0xe8,0xb6,0x87,0x4e,0x20,0xd8,0x57,0xa4,0x58,0x06,0x9e, + 0xf8,0x93,0x05,0xfc,0xd7,0xe6,0x27,0x96,0x42,0x64,0x50,0xd5,0x4d,0x07,0x27,0xc0, + 0x39,0x83,0xd0,0x1e,0x34,0x23,0x49,0x55,0x5e,0x88,0x59,0xaa,0x22,0x72,0xa6,0xad, + 0x93,0x3b,0xa5,0xf9,0xaf,0x97,0x0f,0x1d,0x71,0x9d,0x4a,0x07,0x0b,0xd7,0x88,0xa6, + 0xc1,0xcd,0x5f,0xd8,0x4c,0xfc,0x34,0x99,0xc1,0x30,0x83,0x34,0x47,0xa3,0x52,0x0f, + 0x6f,0x6a,0x0d,0x30,0x40,0x39,0x7d,0xf0,0x78,0x45,0x0b,0x52,0xbe,0xde,0x18,0x83, + 0x20,0x52,0xfa,0xdf,0x9a,0x63,0x08,0x77,0xd4,0x7f,0xa3,0x2a,0x04,0x8d,0x0b,0xc7, + 0x24,0xc6,0xde,0x32,0xc6,0x36,0x46,0xc6,0xdf,0x6b,0x4c,0x8a,0x31,0xd0,0xe1,0xd8, + 0x92,0xf4,0x4a,0xf1,0xe4,0x13,0x35,0x02,0xdf,0x73,0xee,0x9e,0x7a,0x9b,0x08,0x22, + 0xbf,0xbb,0x51,0x43,0x8c,0x78,0x49,0x4c,0x5b,0x88,0x8c,0x36,0xee,0xef,0x9f,0x93, + 0x10,0x9a,0x9c,0xfa,0x92,0x29,0x74,0xd0,0xc2,0xa9,0x32,0x21,0x8c,0xb3,0x5e,0x06, + 0xce,0x32,0xa5,0xd4,0xf6,0xa4,0xd8,0x60,0x65,0x7c,0xbd,0xee,0xbc,0xa4,0x89,0xcd, + 0x51,0x33,0x67,0x9a,0x71,0xda,0xcb,0xb7,0x74,0x74,0xaa,0xbe,0xae,0x97,0xee,0x55, + 0x39,0x8f,0x7a,0xc7,0x95,0xe2,0x70,0xaf,0xdd,0xd9,0x4e,0x3b,0x3b,0xa6,0xff,0x9d, + 0x2c,0x67,0x3c,0x71,0x33,0x9e,0xd4,0x64,0x54,0x2b,0x2a,0xea,0x32,0x27,0x8b,0x45, + 0xaf,0xc5,0x81,0x97,0x8a,0x7d,0x04,0x6a,0x9e,0x15,0x94,0x9d,0xaa,0x5b,0x6f,0x04, + 0x2d,0xf5,0xc3,0xf1,0xb9,0x7b,0xb6,0x6e,0x9a,0x09,0x77,0xfa,0x73,0x80,0x74,0x04, + 0x4c,0x7c,0x1a,0x0a,0x8b,0x36,0x37,0xf9,0xa7,0x25,0xc6,0x67,0x29,0xdc,0xdd,0xb9, + 0x21,0xdb,0xc6,0x86,0x73,0xf6,0xc3,0xf4,0x2a,0x4c,0x0f,0x2e,0xe6,0x05,0x5f,0x83, + 0xbb,0xcd,0xe1,0xc7,0xf0,0x22,0xb3,0x0b,0x90,0x82,0x70,0x43,0x99,0x28,0x5f,0x41, + 0xb7,0xdb,0x7e,0x02,0xa8,0x27,0x1f,0xd8,0x60,0xd2,0x19,0xb4,0x93,0x2b,0xbd,0x31, + 0x87,0x03,0xaf,0xcd,0xae,0x73,0x3e,0x11,0x97,0x44,0xea,0x1f,0x5a,0x0e,0x0a,0xc4, + 0x75,0x5f,0xe5,0xfd,0xae,0x6b,0x30,0x20,0x91,0xff,0xda,0x23,0x0e,0x71,0xd3,0x10, + 0xb8,0x68,0xd8,0xb0,0xf7,0xed,0xd5,0xc0,0x2c,0x03,0x8a,0xe5,0x1b,0xf7,0x53,0xf2, + 0xd9,0x48,0x2e,0xf7,0x2f,0x86,0xd8,0xee,0x65,0x6d,0xfa,0x0f,0x08,0x32,0x2e,0x24, + 0x93,0xca,0xc0,0xfd,0xc1,0x5d,0xfe,0x40,0x72,0xeb,0x0f,0xa4,0x9e,0x30,0x3d,0x55, + 0xe7,0x4d,0x67,0x7a,0x7a,0xc2,0x8a,0xfa,0x8c,0xd3,0x6c,0xcd,0x81,0xd1,0xf5,0xe0, + 0x48,0x1a,0x62,0xf7,0x7d,0x7b,0x97,0x4a,0x5d,0x8f,0x9e,0x51,0xa0,0x25,0x00,0x19, + 0x58,0x9b,0xdd,0xf3,0xae,0x89,0x64,0xb7,0x33,0x98,0x10,0x99,0x69,0x55,0x71,0x83, + 0x78,0x56,0x48,0x88,0x6e,0x6b,0x75,0x52,0x5b,0x2d,0x5e,0xdf,0xa4,0xb9,0x13,0x37, + 0x3b,0x07,0x86,0xb0,0x38,0x1a,0x42,0xf1,0x5e,0xdc,0xa1,0xa9,0x88,0x1f,0x61,0x0d, + 0x4b,0x68,0x75,0x42,0x5c,0x66,0xcc,0x9f,0x95,0xfd,0xd2,0x25,0x72,0xe9,0x14,0xf7, + 0x6b,0x4d,0xe5,0xf6,0xdd,0x9c,0x5c,0x5f,0xa5,0xf8,0xf9,0x58,0xdc,0x79,0x89,0x20, + 0x12,0x41,0xeb,0x56,0xa0,0x47,0x9b,0x53,0x30,0xf5,0xf6,0x22,0x4e,0x60,0x87,0x9f, + 0x63,0xaf,0x46,0xcb,0x94,0xa2,0x84,0x90,0xd4,0x50,0x39,0xa2,0xd1,0x35,0xcc,0x54, + 0x28,0x43,0xca,0x2c,0x45,0x79,0x38,0x4f,0xe8,0xbc,0x13,0xce,0x14,0xc1,0x97,0x70, + 0xae,0x08,0xbf,0x87,0xb3,0x45,0xfd,0xe7,0x70,0xbe,0x50,0x10,0x99,0xef,0xa8,0x60, + 0xf2,0xe1,0x99,0xf7,0xfa,0x64,0x3d,0xfb,0x96,0x9f,0xa9,0x6b,0x79,0xd4,0x8b,0x60, + 0x23,0x70,0x54,0xbb,0x55,0x0e,0xea,0xe4,0x04,0x1f,0x6b,0x36,0x0b,0x2d,0x58,0xf6, + 0xb8,0x35,0x34,0xa7,0xcb,0x62,0x77,0xf1,0xf1,0xd9,0xe8,0x33,0x9f,0xd6,0xbc,0x32, + 0x1b,0xf4,0x87,0x45,0x99,0xf5,0xb0,0xdc,0x6b,0x1b,0xb0,0xef,0x98,0x39,0x9b,0x88, + 0x03,0x24,0xc7,0x1f,0xdc,0x4b,0x60,0xd0,0x9c,0xff,0xe2,0xd5,0xa2,0x85,0x7b,0x11, + 0x6a,0x9a,0x2f,0xe9,0x57,0x52,0xa2,0xd7,0xaf,0x38,0x65,0x0f,0x83,0x84,0x48,0x41, + 0xfd,0x23,0x73,0xe2,0x2e,0xce,0xe8,0xae,0x7a,0x65,0x34,0xa4,0xd9,0x8d,0xbb,0x97, + 0xa8,0x81,0x27,0x70,0x02,0x4c,0x6e,0x61,0xe2,0x0e,0xe7,0xb2,0xde,0x86,0x58,0x7e, + 0x71,0xe2,0x9d,0xaa,0x8d,0xf3,0x0c,0xa6,0x91,0x1b,0xa1,0x0d,0xee,0xd6,0x8c,0x59, + 0xb2,0x27,0x63,0x8a,0x86,0xe2,0xf8,0x94,0xac,0xb0,0x7e,0x7b,0xf7,0x12,0xab,0xdd, + 0x64,0x0c,0x29,0x42,0x86,0x59,0x76,0x63,0xcc,0xd5,0x3a,0x34,0x45,0xb5,0x6f,0x57, + 0xfa,0xa2,0x65,0xe8,0x07,0xd5,0xe0,0x14,0xf6,0xe8,0xf0,0xb3,0xee,0x6a,0x79,0xf2, + 0x84,0x08,0xc1,0x76,0x6c,0x37,0xf5,0x4e,0x72,0xc3,0xf1,0xc2,0xec,0x97,0xd1,0x1d, + 0x36,0xd7,0x6d,0x46,0x64,0xd5,0x95,0x83,0x8d,0x4d,0x1f,0xab,0xbb,0x10,0xc8,0x28, + 0x9e,0x3e,0xba,0xb3,0xc4,0xa0,0x93,0x34,0xb6,0x6b,0xbb,0x09,0xca,0xfd,0xce,0x2d, + 0x57,0xab,0xab,0xfd,0xf1,0xae,0xf9,0x06,0xe3,0x04,0x79,0xca,0xbc,0x2d,0x37,0xbb, + 0x24,0xae,0x80,0x7e,0x06,0x3f,0x41,0x8d,0xf1,0x99,0x52,0xe3,0xef,0x69,0xae,0xca, + 0xba,0x4f,0xe4,0x58,0xfa,0xcd,0x2f,0x5b,0x03,0x16,0x71,0x28,0xbd,0xc5,0xbe,0x79, + 0xcd,0x6d,0x1d,0x3a,0xd9,0xe4,0x52,0x1a,0x0d,0x79,0x3f,0x25,0xb3,0x5f,0xb8,0xdf, + 0xad,0xea,0x41,0xdb,0xa3,0x01,0x2f,0xe6,0x18,0xc7,0xb6,0x76,0x04,0xa1,0x72,0x8c, + 0x7c,0x86,0xb0,0x54,0x7d,0xd6,0xb4,0x34,0xb0,0x27,0xd4,0x74,0x2e,0x4b,0x9e,0xf3, + 0x5c,0x87,0xb1,0x34,0xc3,0x96,0xcc,0x03,0x4b,0xe4,0xa6,0x0e,0x13,0xf4,0x82,0xa6, + 0x6e,0xef,0x56,0x38,0x95,0x7f,0x28,0x46,0x15,0x91,0xa3,0x74,0x95,0x32,0x8d,0x0e, + 0xc3,0x98,0x31,0xfa,0xd2,0x39,0x64,0xdf,0x37,0xbf,0xc4,0x1d,0x2d,0xd8,0x3a,0x62, + 0xff,0x3b,0xcd,0x28,0xc9,0x64,0x96,0xee,0x1d,0x75,0xb2,0xe3,0xbd,0xf7,0xe5,0xb7, + 0x5b,0x03,0x68,0xaf,0xcc,0xb4,0x6c,0x3d,0xc0,0x5e,0xf5,0x66,0xe3,0x75,0x16,0xc5, + 0x4e,0x45,0x84,0x06,0xd9,0x5e,0x24,0x33,0xaf,0x93,0x72,0xab,0x18,0xd3,0x09,0x69, + 0xa1,0x18,0x62,0xd7,0x5c,0xdc,0xc3,0x57,0xeb,0x65,0xd4,0xa4,0x54,0x1a,0xe3,0xbc, + 0xa9,0x8c,0x9d,0x23,0xe9,0x59,0x25,0x61,0x6d,0xb8,0xc6,0xef,0xcc,0xb2,0x6a,0x92, + 0x7e,0x2e,0x01,0x21,0x74,0xc9,0x70,0x1b,0x3d,0x9c,0xe8,0xbd,0xd6,0x0f,0xd0,0x1c, + 0xc8,0x54,0x7f,0x07,0x1a,0x5d,0x10,0x42,0x54,0xd8,0xe7,0x0b,0x3b,0x92,0x99,0x78, + 0x4c,0x1c,0x4c,0x71,0x6d,0xe3,0x50,0xa3,0x2d,0xe3,0x88,0xb1,0xe8,0xfb,0x37,0x2a, + 0x60,0xb7,0xd4,0x8a,0x0e,0x35,0x50,0x33,0xa6,0x32,0x0d,0x6f,0x11,0x95,0x88,0xc7, + 0x72,0x29,0xd6,0x2f,0xd1,0x15,0x6d,0x44,0x38,0x20,0x8a,0xb0,0xa3,0x6c,0x91,0xff, + 0x4b,0x33,0x05,0x8a,0xd3,0xce,0x29,0x2c,0xd2,0xa2,0x09,0x76,0x63,0x53,0xd2,0x93, + 0xc8,0x99,0x59,0x6f,0xae,0x3e,0x40,0x33,0x94,0x2b,0x61,0x6b,0xf1,0xa4,0x85,0xe0, + 0x16,0xc8,0x2a,0x3e,0x7a,0xc4,0x0f,0x4a,0x0d,0xd6,0x02,0x61,0x80,0x3c,0x14,0x9d, + 0x57,0xa1,0xa1,0x7f,0xd0,0xec,0x15,0xd2,0xe8,0xa7,0x09,0xf6,0xd2,0x80,0xc0,0x9e, + 0xcf,0x81,0x28,0xc6,0x34,0x4d,0x67,0x1c,0x9b,0x35,0xea,0xc1,0xc7,0x4d,0xc6,0x55, + 0x86,0xbd,0xaf,0x20,0xd5,0x28,0xd4,0x83,0x3e,0x81,0x92,0xdf,0x01,0x10,0x58,0xdb, + 0x42,0x77,0x13,0x28,0x9c,0xc6,0x82,0x13,0x99,0x36,0x23,0x4f,0xc7,0xbd,0x8f,0xad, + 0xe8,0x25,0x91,0xa5,0x4c,0x46,0xc0,0xa7,0xd3,0xcf,0xc8,0x4d,0x33,0x8e,0xa0,0x6d, + 0x45,0xbf,0x83,0x55,0x7c,0x67,0x87,0x70,0x69,0xe6,0x4c,0xa8,0x9c,0x90,0xa2,0xa9, + 0x2b,0x37,0x69,0x68,0x84,0x60,0xe1,0xd1,0x66,0xb8,0x28,0x01,0x6d,0x0b,0x15,0x75, + 0x2b,0x2a,0x70,0x5f,0x32,0xd1,0x1b,0x74,0x74,0xb8,0x2d,0x1c,0x36,0x26,0x78,0xa6, + 0x4d,0x69,0xf0,0xf6,0x84,0xdb,0x12,0x2a,0xb7,0xd9,0x2b,0xe1,0x9c,0xbd,0xe8,0xdb, + 0x66,0xce,0x36,0x44,0x12,0x5b,0xd1,0xd6,0x7b,0xf1,0x52,0x2b,0x1a,0x9a,0x8e,0xde, + 0xfc,0x72,0x8c,0x55,0x59,0xc3,0xc1,0xc4,0x9d,0xba,0xd6,0x08,0x50,0x28,0xbf,0x57, + 0xa1,0x88,0x0f,0x4c,0x25,0x57,0x41,0x64,0xd5,0x10,0xca,0x24,0xf1,0x00,0xbc,0x20, + 0x7d,0xd3,0xcc,0x13,0xa1,0x5d,0xc1,0xf5,0xa0,0xc2,0x84,0xf9,0xc3,0xda,0x76,0x1d, + 0x4c,0xce,0xe6,0x72,0xaf,0xe3,0xfe,0xdb,0x1d,0x5d,0xd5,0xef,0xb9,0x85,0x69,0x3f, + 0xaa,0xcb,0x81,0xc5,0xf5,0xe9,0x4e,0xfb,0xfe,0x2b,0x71,0x63,0xdb,0x0a,0x6c,0xf7, + 0x5e,0x89,0x43,0x61,0x3a,0xac,0xf8,0x8d,0x71,0x62,0x88,0xe3,0xb6,0x48,0x7c,0xcb, + 0xc8,0xb9,0x12,0x22,0x65,0x49,0x5c,0x2b,0x52,0xdc,0x9c,0x9c,0x14,0x7c,0xfe,0x2d, + 0x8b,0x31,0x6b,0x7a,0xca,0x8d,0xfb,0x5c,0x67,0xb2,0xd7,0x94,0xfe,0xe5,0x7b,0x40, + 0x72,0x85,0x7b,0xc5,0x65,0x20,0xf9,0x28,0x8a,0x04,0xff,0x8c,0xd5,0x2e,0xdd,0x04, + 0xf7,0x20,0x37,0x90,0x8e,0x4b,0x01,0xfb,0x39,0xbc,0x4f,0x43,0x3d,0x5c,0x8f,0x70, + 0xd5,0x51,0x66,0x8d,0xe3,0x00,0x8b,0x48,0x30,0xaf,0xbf,0x93,0xa3,0x97,0xfa,0x1f, + 0x24,0x56,0xe3,0xed,0xd1,0x9b,0xfe,0x4b,0x97,0x8a,0xc0,0x2f,0xf7,0x76,0xfe,0x91, + 0xb9,0xe3,0xc2,0xf7,0xdf,0x32,0x7d,0x39,0xb9,0xaa,0x1e,0xcb,0xb3,0xea,0xf1,0x74, + 0x76,0x6c,0xcd,0x95,0xc2,0x3b,0x31,0x0e,0x52,0x29,0x05,0x16,0xc3,0x52,0x46,0x60, + 0x52,0xac,0xec,0xae,0x1c,0x00,0xf8,0x77,0xeb,0x33,0x07,0x93,0x61,0x41,0x85,0x2a, + 0xad,0xb9,0x8d,0xaf,0xe5,0xf1,0xe3,0x5b,0xd6,0x9e,0x26,0x55,0x86,0x3d,0x1f,0xb2, + 0xe3,0xe2,0xb6,0xf6,0x70,0xf7,0xbb,0x6c,0xa5,0x66,0x15,0xfd,0xeb,0xfc,0x06,0xdc, + 0xea,0xb4,0xb3,0x93,0xab,0xce,0x76,0x56,0x9e,0x75,0x76,0xb2,0xd3,0x59,0x67,0xf7, + 0x36,0x30,0xc4,0xed,0x6e,0x54,0xcc,0xb7,0xc4,0x1d,0x51,0xfe,0xe3,0xb5,0xbe,0x29, + 0x6c,0x6d,0x31,0x18,0xff,0x4f,0xbe,0x56,0x64,0x2f,0xa5,0x04,0x26,0xbd,0xf5,0xee, + 0x21,0x83,0xc9,0xc3,0xba,0xa2,0xf4,0xdc,0xb0,0xe4,0x37,0xb0,0xf6,0xee,0xa8,0x75, + 0x6f,0x26,0xf3,0x07,0xe2,0x3a,0x99,0x4d,0x1c,0x9e,0x49,0x28,0xab,0x33,0x2a,0x57, + 0x17,0x18,0x22,0x20,0x25,0x8a,0xc3,0x9b,0xa2,0x13,0x03,0x13,0xce,0x2f,0x32,0x3f, + 0xd7,0x62,0xcd,0x73,0xcd,0x53,0xfb,0x19,0xbb,0xd0,0xda,0x29,0xff,0x6b,0x51,0xd6, + 0xbb,0xcb,0x35,0x4b,0xd0,0x4f,0xbc,0x45,0xc5,0x6a,0xcd,0x5b,0x58,0x9d,0x35,0x37, + 0xea,0xb8,0xbc,0x2f,0xee,0x89,0x51,0xc7,0x8a,0xeb,0x04,0x76,0x87,0x17,0x7d,0x55, + 0x10,0xe8,0xce,0x0b,0xa0,0x71,0xfa,0x95,0xa7,0x1f,0x89,0x5a,0x7d,0xa5,0x5d,0xff, + 0x7c,0x03,0x83,0xcc,0xa5,0x26,0x18,0x67,0xea,0x33,0xf5,0xba,0x66,0x6c,0x10,0x70, + 0x76,0x4d,0x2c,0x3d,0xe1,0x43,0xa1,0x23,0xbd,0x70,0x21,0x36,0x26,0xe2,0xb8,0x87, + 0x7e,0x24,0xb8,0x7a,0x26,0xb5,0x5b,0xc6,0x4d,0x52,0xbf,0x78,0xe5,0x8f,0x1b,0xf3, + 0xd5,0x3b,0x91,0x39,0xb5,0x83,0x3d,0x7f,0x99,0xeb,0xdd,0x6d,0x27,0x89,0xe8,0x30, + 0x45,0xa5,0x12,0x99,0x14,0xcf,0x89,0xe8,0x27,0x30,0xbb,0x4e,0x35,0x21,0xf4,0x0e, + 0x1c,0x94,0x68,0xbd,0x03,0x67,0x01,0x76,0xa4,0x85,0xc5,0xda,0x0f,0xd2,0xe0,0xc3, + 0x01,0x4a,0xf0,0xcd,0x8d,0x47,0xf3,0xdf,0xa6,0xf0,0x27,0xcf,0xa7,0xc3,0x6e,0x44, + 0x92,0x72,0xeb,0xfb,0x27,0xd8,0xf0,0x67,0xe7,0x5e,0xea,0x7f,0x70,0xea,0xd6,0xee, + 0x13,0x7c,0x1a,0xf9,0x9f,0x90,0xb8,0xf5,0xa4,0x6d,0xcd,0x55,0xfb,0xcf,0xda,0x7b, + 0xfd,0x46,0xdc,0x8f,0xe2,0xc6,0x79,0x23,0x26,0xdf,0x9d,0xc9,0x39,0xa5,0xe0,0x91, + 0x52,0x46,0x8d,0x98,0x0e,0x8b,0xf9,0xaf,0x17,0x4b,0x6b,0x40,0xd5,0x1c,0x64,0x27, + 0x19,0x11,0x55,0x63,0x09,0x89,0xcf,0xb0,0xc8,0x7c,0x66,0xec,0x45,0x06,0x64,0x40, + 0x42,0xcf,0x27,0x78,0xc6,0x43,0x52,0xee,0x3d,0x24,0xbb,0x4b,0x7a,0x12,0x93,0x8f, + 0xc0,0x54,0xd4,0x29,0xc8,0x6d,0x88,0x1b,0xb7,0x0d,0x20,0x17,0xe9,0x33,0x71,0xde, + 0x46,0x89,0x43,0x94,0xb2,0x97,0xc6,0x31,0x5b,0x52,0x41,0x65,0xbb,0x6d,0x3f,0x12, + 0x99,0xc5,0xc5,0x07,0xe9,0x1e,0x8a,0xf4,0x86,0x2f,0x78,0x29,0x96,0xe0,0x63,0x50, + 0x5c,0xfb,0xd6,0xc1,0xea,0x50,0x15,0x46,0x08,0xa8,0x0f,0x10,0x80,0xa2,0xeb,0x14, + 0x41,0xe8,0xd0,0x9c,0xab,0x49,0x33,0xc8,0xb2,0xf7,0xdd,0x21,0x36,0x86,0x04,0x49, + 0x56,0x3e,0xb1,0xd5,0xe9,0xae,0xcb,0x13,0x9b,0xe5,0xfb,0x24,0xb7,0xd7,0xf4,0xa8, + 0x68,0x84,0xd2,0xfb,0x40,0xab,0x48,0x41,0xb7,0xf4,0x76,0x1e,0x99,0x9d,0x3d,0x9a, + 0xaf,0xf4,0xc2,0x2a,0x6c,0x70,0x83,0xc7,0xbf,0x4d,0xa1,0xfc,0x8a,0x33,0xd3,0x21, + 0x5b,0x17,0xfc,0xfe,0xa1,0x4c,0xd3,0x86,0x81,0xf8,0xa1,0x37,0x27,0xa6,0xd1,0x72, + 0x47,0x5f,0x4f,0xe8,0xf9,0xc3,0xe8,0x92,0x30,0x13,0xeb,0x69,0x6c,0xfc,0x34,0xb8, + 0xa6,0x43,0xc3,0x9d,0x34,0x8b,0xff,0x1a,0x57,0x19,0x7e,0xa2,0xb2,0x23,0x50,0x41, + 0x2b,0xe4,0x49,0x16,0xff,0xf2,0x03,0xb9,0x8c,0x27,0x45,0x29,0x75,0xbd,0x65,0x3a, + 0x29,0x5d,0xc8,0xac,0x72,0x53,0x9c,0x83,0xa8,0x37,0xa4,0x73,0xa9,0x38,0xab,0x01, + 0x87,0x47,0x4c,0x7c,0x94,0x4c,0x40,0x6e,0xcb,0x7d,0x8d,0xd8,0x81,0x11,0x0f,0x8a, + 0x38,0x2b,0x5b,0x63,0xbc,0x66,0x71,0xff,0x87,0x91,0x05,0x79,0x45,0xb3,0x75,0xf4, + 0xee,0xe0,0xe0,0x25,0x00,0x66,0xb4,0x57,0xe2,0xef,0x44,0xdf,0xc1,0xeb,0x77,0xec, + 0xd6,0xbe,0x1c,0xcf,0x2a,0xe0,0xe7,0x83,0x19,0x78,0x11,0x1d,0xfe,0xcd,0xb2,0xa7, + 0x27,0x69,0xe0,0x4f,0x08,0xf6,0xce,0x01,0x23,0x6f,0x29,0x35,0x90,0xb2,0x66,0x97, + 0x80,0x44,0xf1,0xc5,0xe9,0x65,0x86,0x13,0x4a,0x14,0x8c,0x1c,0xf4,0x18,0x82,0x72, + 0xd9,0x44,0x15,0xb5,0xb7,0x65,0x2f,0xdc,0x67,0x12,0x8e,0xad,0xc3,0x0a,0xcd,0x07, + 0x54,0x9a,0x06,0x7c,0xb4,0xc5,0xb8,0x00,0x2e,0x49,0x55,0xa6,0x1f,0x07,0x04,0x37, + 0x0f,0x72,0xf5,0x39,0xd1,0xcf,0x26,0x69,0x9a,0x8f,0xae,0x99,0x44,0xa4,0x93,0xba, + 0x28,0x90,0x67,0x7e,0xfd,0x81,0x9f,0xe9,0x63,0xe2,0xb8,0xca,0x37,0xcd,0xf6,0x5f, + 0x87,0x87,0x16,0x14,0x93,0xbd,0x01,0xee,0xc4,0x96,0xfd,0xd8,0xe6,0x2a,0xfb,0x65, + 0x9b,0x57,0xb5,0x81,0x05,0x7a,0xf9,0x16,0x5f,0x07,0x53,0x3a,0x59,0x69,0x62,0x6a, + 0x65,0x5b,0x7c,0x94,0x87,0xe9,0x18,0xbd,0x80,0x7a,0x55,0xda,0x75,0x53,0xa5,0xa9, + 0xb5,0xc9,0x21,0xf0,0x4e,0xc9,0xe4,0x90,0x25,0x27,0x7e,0x6a,0x72,0x67,0x4c,0x33, + 0x17,0x49,0xda,0x0d,0x81,0x38,0xb3,0x85,0x52,0x64,0xa1,0x9b,0x04,0x11,0xcc,0x87, + 0x79,0x69,0x3d,0x3e,0x77,0xab,0x71,0xaa,0x62,0x9a,0x33,0xce,0xca,0xa1,0x39,0x3c, + 0xdc,0xa3,0x27,0xcf,0xf6,0x5d,0xef,0x5b,0x9f,0xe5,0xc9,0x35,0x0c,0x2f,0xcd,0x05, + 0x93,0x14,0x37,0x4c,0xbc,0xb9,0xf7,0xd3,0x25,0xcf,0xbc,0x98,0x74,0xfd,0xf0,0xc0, + 0x1a,0x86,0x94,0x56,0x86,0x9a,0xa8,0xc6,0xc6,0x06,0x26,0x7a,0xb8,0x01,0xcb,0x43, + 0x2d,0x43,0x6c,0x64,0xa1,0x32,0x4a,0x42,0x4b,0xd9,0xd4,0x33,0x95,0x15,0xf8,0x34, + 0xf5,0xac,0x03,0x65,0xca,0xe1,0x30,0xa7,0x25,0xc8,0x9e,0x7c,0x12,0xa2,0x17,0x8b, + 0x6b,0x38,0x27,0x77,0x6a,0x00,0xdf,0x32,0xf8,0xde,0x88,0x49,0x83,0xcb,0x3d,0x8c, + 0x21,0xe8,0x95,0xfe,0x56,0xde,0x1f,0xeb,0xea,0x29,0x66,0x89,0x04,0x3e,0x36,0xd1, + 0x26,0x84,0x7a,0xb1,0x9b,0xd4,0xa5,0xc7,0xb7,0x38,0x1f,0x0c,0x87,0x94,0x43,0xe0, + 0xd0,0x0e,0xd6,0xe2,0xd2,0xa6,0xa8,0xfd,0x3f,0x25,0x0b,0xfd,0x5e,0xc5,0x1a,0x67, + 0xde,0x6d,0x80,0x0e,0xcd,0x26,0xc6,0x16,0xcf,0x86,0xcf,0x51,0x67,0x27,0xf7,0x90, + 0xa7,0xb9,0x7b,0xf6,0xe0,0xbd,0xb2,0xd7,0xe2,0xe7,0x4b,0x16,0xb1,0x7a,0xa6,0x2f, + 0x3c,0xa3,0xd5,0xba,0xd7,0x2a,0xcf,0x07,0xd8,0xa8,0x3b,0xd9,0xa4,0x4f,0xd2,0xbc, + 0x00,0x51,0xc2,0x74,0x8f,0xfe,0x74,0x96,0x9b,0x80,0x68,0xa2,0x58,0x7a,0x4b,0x93, + 0xee,0xf0,0x1d,0x8e,0x4f,0xc8,0x05,0x2d,0x5c,0x96,0x5f,0x42,0x38,0xa4,0xc1,0xfb, + 0x3b,0x5c,0xb3,0x90,0xdc,0xf0,0xf8,0x49,0x77,0x83,0x12,0xaf,0xf0,0x9a,0x5f,0x7d, + 0x4b,0x08,0xba,0xf4,0x2a,0xc1,0x81,0xf3,0x73,0x7e,0x67,0xcc,0x1f,0x91,0xf5,0x63, + 0xc1,0x2b,0x0a,0x5a,0x3c,0xde,0xc1,0x11,0xe8,0xc7,0x56,0x09,0x9b,0x80,0x84,0xc0, + 0x32,0xfa,0x1f,0x09,0xbc,0x76,0x92,0x52,0x6a,0x9e,0xe0,0x64,0xef,0x2a,0x3b,0x97, + 0x61,0x41,0x44,0x6a,0x85,0x9e,0xee,0xf8,0x66,0xe7,0xe3,0x5c,0x43,0xad,0xb4,0x38, + 0xda,0x86,0x9c,0x0e,0x71,0xad,0xb2,0xd1,0xb5,0xf9,0xd8,0xbb,0x0e,0x3f,0x0a,0x5e, + 0x02,0xc8,0xf3,0xd1,0x38,0xbd,0x19,0x5d,0x37,0x68,0x2b,0x35,0x1a,0x37,0xf3,0xed, + 0xdb,0x0d,0xa2,0x6b,0x8e,0x6b,0x00,0x07,0xdc,0xff,0x99,0xec,0xd1,0x94,0x94,0x5e, + 0x7d,0x4e,0xb0,0xc1,0x54,0xf5,0xc1,0x98,0x8a,0xa4,0xa8,0xa1,0x7a,0xe8,0x14,0xef, + 0x6a,0x71,0xb3,0xd9,0x3b,0x3d,0x8d,0xf5,0x06,0x17,0x4d,0x34,0x7f,0xda,0x39,0xf9, + 0xae,0x5f,0xfc,0x39,0xee,0x52,0x29,0x88,0x5b,0xce,0x9c,0xcc,0x77,0xba,0xf2,0xf6, + 0x9f,0xd4,0x29,0xf2,0x98,0x17,0xa2,0x98,0x92,0x4e,0x8a,0x8f,0x74,0xec,0x47,0x35, + 0x80,0x54,0x07,0xaa,0x97,0xe5,0xd7,0xcb,0x4c,0x6f,0xbf,0x5c,0xe7,0x83,0x2d,0x97, + 0x51,0xcd,0xed,0xf4,0xdb,0xe4,0xaa,0xf9,0x28,0x6d,0xec,0x64,0x9f,0xf3,0xf3,0xe6, + 0xa3,0x66,0x72,0xd9,0xa4,0xba,0x6e,0x51,0xad,0xe9,0x97,0x3e,0x12,0x48,0x1b,0x7c, + 0xd8,0x93,0xc2,0x0f,0x27,0xc9,0x75,0xf6,0x39,0xed,0x7c,0x6c,0x91,0xda,0x41,0xdf, + 0x44,0x9a,0x54,0x8e,0x24,0x78,0xc6,0x68,0x1d,0x0a,0x6f,0x3c,0x4e,0x11,0xc1,0x98, + 0x2a,0xf2,0x18,0x61,0xb0,0xe9,0xca,0x02,0xed,0x13,0x46,0xcd,0x8b,0x01,0x2a,0x82, + 0x46,0x7f,0x4e,0x41,0xb3,0x51,0x39,0xf4,0x8d,0x58,0xd1,0x60,0xfc,0x33,0xd1,0x47, + 0x1e,0xe5,0xc7,0xd9,0x55,0x73,0x27,0xdb,0x0e,0xfc,0xb0,0xe1,0x66,0xf4,0x2f,0xc5, + 0x67,0x0e,0x08,0x93,0xc8,0xfe,0xc2,0x1a,0xae,0xc9,0xfb,0xe6,0xe6,0x8a,0x30,0xac, + 0x0a,0xdf,0x55,0x87,0x0c,0x70,0x2e,0x3f,0x53,0xeb,0x9f,0x5e,0x91,0x6b,0x3e,0x13, + 0x7a,0xc7,0x64,0xe5,0x5e,0xd2,0x2b,0xe8,0x96,0x28,0xb6,0x62,0x9e,0xe8,0x8e,0x34, + 0x46,0x92,0x9a,0xdf,0xe0,0xac,0x14,0xca,0x53,0x04,0x08,0xb6,0x94,0x12,0x2a,0x79, + 0x86,0xb8,0x86,0x9d,0x36,0x0e,0x9c,0xb1,0x13,0x0c,0xa2,0x09,0xab,0x2d,0x06,0x7d, + 0xb1,0xb1,0x89,0x4d,0x05,0xbb,0x5a,0xdf,0x3b,0xea,0x99,0xd1,0xfc,0x43,0x50,0x58, + 0x2e,0x80,0xa3,0xc9,0xaf,0xb1,0x46,0xe3,0x23,0xed,0x98,0xde,0xb8,0x0e,0x6e,0x24, + 0x9c,0x6d,0x6e,0x9e,0xb5,0x68,0x6e,0x20,0x74,0xaf,0x49,0xe9,0x9b,0xba,0x2f,0xb4, + 0xd6,0x94,0xd4,0xb7,0x7f,0x28,0xa8,0x17,0x16,0x09,0x63,0xcc,0x60,0x03,0x7a,0x3d, + 0x3f,0x18,0xb0,0x1e,0x9b,0x50,0x70,0xea,0xea,0xd8,0x28,0xf2,0xb9,0x26,0x72,0xac, + 0xb9,0xc6,0x94,0xd9,0x10,0xb3,0xaa,0x8e,0x00,0xf5,0x72,0xf0,0x57,0x93,0xad,0xb8, + 0x26,0x8c,0xb8,0x7a,0x91,0x2d,0x73,0x76,0x39,0x6a,0xad,0xaa,0x41,0xbe,0x1c,0x27, + 0xe7,0xaa,0x47,0x5a,0xd7,0x2b,0x57,0x45,0x2c,0xad,0x83,0xbd,0xcd,0xb6,0x1f,0xa3, + 0xa3,0xcb,0x6e,0x05,0x1d,0x86,0x51,0xbb,0x93,0x35,0x37,0x13,0x3e,0x61,0x67,0x10, + 0x34,0xe9,0x9a,0xc0,0x6e,0x01,0xdc,0x1a,0xae,0x4b,0xa5,0xbe,0x9c,0xe9,0xff,0x3a, + 0x6b,0x6d,0x4e,0x2f,0x60,0xb4,0x76,0x79,0xdd,0x2c,0xd9,0xb7,0x5c,0x22,0x6d,0x55, + 0x21,0xb9,0x1b,0x0d,0x6f,0xb4,0x39,0xdc,0x9b,0xcc,0x4e,0xa1,0x83,0xb9,0x3f,0xde, + 0xc0,0x47,0x97,0x2d,0xc3,0x61,0x22,0x9c,0xa7,0xd5,0xd7,0xe9,0xe4,0xa2,0xfc,0x1c, + 0x70,0xd0,0xe6,0x70,0xe5,0x33,0x96,0x40,0x54,0xa8,0xc2,0x8c,0xd8,0xec,0x61,0x4a, + 0xec,0x9c,0xf2,0xde,0x9d,0x86,0x46,0x1f,0xfb,0xb7,0xce,0xf6,0xf7,0x1c,0xc8,0x3e, + 0x8c,0xc2,0x1f,0x5e,0x73,0xeb,0xb2,0x25,0x8c,0xad,0xf1,0x9e,0xd9,0x2d,0x52,0x02, + 0x19,0x22,0xe0,0x27,0xdf,0x8e,0x3b,0x36,0x31,0xce,0xb8,0x86,0xc1,0x05,0x98,0xde, + 0xac,0x4c,0x20,0x19,0x8b,0x7a,0x60,0x9c,0xe3,0xf9,0x59,0xf3,0xf1,0xe3,0xbd,0x47, + 0x1d,0x79,0x7c,0xf2,0xdd,0xde,0xae,0x79,0xfc,0xee,0xfb,0xbd,0x9d,0xce,0x76,0x17, + 0x80,0x93,0xba,0xfb,0x2f,0x8f,0x58,0xfb,0x38,0xc1,0x4d,0x11,0x10,0x6a,0x6a,0xaa, + 0xde,0x69,0x3a,0x83,0x31,0x16,0x99,0xe6,0x09,0xed,0xa9,0x3e,0x75,0x25,0x68,0xff, + 0x2e,0x05,0xb9,0x37,0x31,0xf0,0x79,0x59,0xe8,0x6c,0x53,0xc2,0x09,0xa9,0xb5,0x8b, + 0x19,0xc7,0xf3,0xbb,0x28,0x39,0x45,0xe4,0x89,0x0e,0x6d,0xfd,0x77,0x1b,0x83,0x6f, + 0x77,0x49,0xbe,0x02,0x18,0xed,0x5b,0x3e,0xf2,0x4a,0x89,0x0f,0x54,0xfc,0x78,0x2f, + 0x66,0x99,0x14,0x2b,0x2e,0xc9,0x97,0xe6,0x05,0x65,0xa6,0x31,0x0b,0x69,0x2a,0x94, + 0xa9,0x44,0xb8,0x96,0xcc,0xb3,0x61,0x71,0xdd,0xe5,0xf6,0x69,0x0e,0x68,0x1d,0x2b, + 0x3b,0x48,0x68,0xd2,0x16,0x5b,0xa9,0xd9,0x7e,0x8c,0x66,0xa2,0xab,0x27,0x8d,0xd8, + 0x20,0x8e,0xc3,0xbd,0x3c,0xda,0xe6,0x62,0x36,0x14,0xc6,0x87,0x6e,0xd9,0x6c,0x2f, + 0x53,0x79,0x06,0x7b,0x7e,0xc0,0xd7,0x9b,0x85,0xac,0xcd,0x1a,0xd8,0x84,0xe0,0xfb, + 0x58,0x74,0x01,0x5e,0x57,0xaf,0x9f,0x94,0x2a,0x5a,0x97,0x3a,0x8b,0xcc,0x4d,0x6d, + 0xdf,0xc2,0x70,0x8c,0x68,0x62,0x54,0x9a,0x39,0x28,0x54,0xab,0x0a,0x16,0xe7,0x2d, + 0xda,0x71,0x15,0x35,0x69,0xcc,0x86,0x55,0x90,0x22,0x90,0xb3,0xc6,0x3a,0x55,0x01, + 0x4f,0x78,0x9f,0xdc,0xec,0xf1,0x4f,0x75,0x30,0x51,0x14,0x63,0x9c,0xc6,0x73,0xa9, + 0xf8,0x53,0x57,0x12,0xd5,0x1e,0x70,0x47,0x52,0xd4,0xb1,0xef,0xe5,0xce,0xfd,0x42, + 0x1d,0xd5,0x71,0x6f,0x85,0x32,0xee,0x3f,0xc0,0x81,0xed,0x8e,0x11,0x0e,0xfa,0x74, + 0x0f,0x86,0x67,0x7f,0x17,0x36,0xb6,0x37,0x90,0xd7,0x5e,0x88,0xa5,0x9c,0x7a,0xb5, + 0x8a,0x68,0xd6,0xfb,0x5d,0x52,0x03,0x74,0x64,0xf9,0x66,0xcc,0xce,0xec,0x67,0x93, + 0x80,0xd0,0x3a,0x66,0x4f,0x82,0xd1,0x4d,0x1f,0x78,0x7c,0x87,0x57,0x67,0xcb,0x12, + 0x10,0x0e,0x62,0xdb,0x8d,0x1b,0x94,0x44,0x26,0x4c,0x7b,0xf1,0xe6,0x9f,0x28,0xb4, + 0xee,0xce,0x77,0x8f,0xba,0xf0,0xb9,0x04,0x80,0x72,0x44,0x2a,0x91,0x67,0xa7,0xd0, + 0xed,0x85,0x65,0xee,0x01,0xc0,0x46,0xce,0x8c,0x1b,0x52,0x2e,0xb0,0x4a,0xae,0xea, + 0x16,0x6f,0xec,0x6f,0x7f,0x1e,0x3e,0x9d,0xea,0x10,0x0c,0x37,0x96,0x76,0x4a,0xdc, + 0xc1,0x58,0xa3,0x7d,0x92,0xf6,0xb9,0xe8,0x0c,0x03,0x9f,0x2e,0xa9,0x4d,0x31,0x9c, + 0xeb,0x76,0x49,0x77,0x8e,0x98,0xff,0xd1,0x86,0xbf,0x7f,0x25,0x30,0xd0,0x8c,0x9d, + 0x99,0x90,0x1f,0x6a,0xee,0xd7,0xb8,0x87,0x32,0x17,0x33,0x58,0xe0,0x42,0x93,0xdd, + 0xa8,0x89,0xe0,0xcb,0x7e,0x5e,0x27,0xfe,0x68,0x58,0x57,0x8e,0x56,0x52,0x2b,0xcb, + 0xe0,0xd1,0x82,0xd0,0x9c,0xae,0x18,0x73,0xc6,0xba,0x5a,0x9a,0xe6,0xcf,0xe6,0x28, + 0x8e,0x9e,0xdd,0x79,0x08,0xe4,0xad,0x71,0x75,0x2f,0x4d,0xb3,0xd2,0x89,0x16,0x95, + 0x49,0xf8,0xe4,0x88,0x4c,0xbd,0xf5,0xdf,0xed,0x71,0xcb,0x66,0x51,0x5f,0xf8,0x9e, + 0xdb,0x71,0x3e,0xb8,0x90,0x80,0xe8,0x78,0xaa,0x3c,0x84,0x91,0x27,0xca,0x13,0xb2, + 0x7c,0x29,0x3b,0x3a,0x1b,0xb8,0xf0,0x75,0x8e,0x7f,0x54,0x32,0x47,0x79,0x58,0x30, + 0xd0,0xeb,0x04,0xa5,0x9b,0x13,0x0d,0xea,0xdb,0xe0,0x56,0xf4,0x3d,0x70,0x7c,0xfa, + 0x2b,0xc4,0x9d,0xee,0xf5,0x6d,0xed,0xb4,0x85,0xb8,0x93,0xdc,0xbb,0x56,0x0a,0xfd, + 0xa5,0x75,0xb2,0xf9,0x50,0xa3,0xa0,0xfb,0x7f,0xfd,0x89,0x10,0x56,0x90,0xe0,0x3c, + 0xe8,0xce,0xdd,0x8d,0xb7,0x25,0x4a,0x05,0x5c,0x2d,0x9d,0xec,0x09,0x8d,0x84,0xeb, + 0xd9,0x58,0x39,0x94,0x02,0x3c,0x99,0x62,0x48,0x9d,0xe3,0x59,0x4d,0x43,0x52,0xc0, + 0x97,0x3b,0x59,0x6e,0x08,0x33,0xb3,0xa3,0xfa,0xe9,0xb6,0xe4,0x99,0x0f,0x32,0x7e, + 0xaa,0x40,0xe6,0xbb,0x3b,0xdf,0x3d,0xf9,0x9e,0x0e,0xc1,0xe5,0x2b,0xdc,0xa4,0xeb, + 0x33,0x1c,0xa5,0xef,0x6e,0x6e,0x3a,0x47,0x31,0x8a,0x81,0x86,0x88,0x3e,0x06,0xce, + 0xde,0x02,0xeb,0xe4,0xfa,0xdb,0x3a,0x90,0x4a,0x4e,0xcf,0x03,0x77,0xa1,0x4a,0x1c, + 0x7d,0xf8,0xd2,0x7a,0x9b,0xc9,0xcc,0xee,0x57,0x9c,0xdb,0xdf,0x9e,0x97,0xb2,0xfc, + 0x68,0xe3,0x66,0xde,0x89,0x7f,0x3b,0x78,0xbe,0xb5,0xdf,0x1b,0xf7,0xfa,0xbd,0x28, + 0x81,0x29,0xd2,0x88,0x1a,0x9a,0xd5,0x83,0xd9,0x59,0x27,0xfe,0xf3,0x76,0xbb,0xf5, + 0x78,0xe7,0x71,0x8c,0x23,0xf5,0xf8,0xc9,0x4e,0x8b,0x9e,0x4a,0x4a,0xfe,0x2e,0xc6, + 0xc9,0x7a,0xfc,0x18,0x21,0x1e,0x81,0xe3,0xf9,0x05,0xe9,0x20,0x48,0x52,0xeb,0x99, + 0x4c,0x8f,0x5b,0xdf,0xb7,0xdb,0x92,0x69,0xe7,0x71,0x5b,0xf2,0x6c,0xb7,0x57,0x65, + 0x8a,0x92,0xd7,0x3d,0x32,0xaa,0xbe,0xd2,0x22,0x9f,0xb4,0x1e,0x7f,0xb7,0xaa,0xc8, + 0xef,0x6b,0x72,0xff,0x4a,0xf3,0x70,0x55,0x70,0x5b,0xb3,0x6e,0x83,0xec,0x12,0xa9, + 0xab,0xca,0xed,0x44,0x07,0xcf,0xb3,0xe8,0xf7,0xe7,0x92,0x77,0x67,0xb7,0xb5,0xbd, + 0x5c,0xd3,0xef,0xeb,0x8b,0x45,0xe6,0xff,0x7a,0xf5,0xe3,0xdd,0x39,0x6d,0xb1,0x3f, + 0xcc,0x7a,0xff,0x1c,0x0c,0xbf,0xa4,0xac,0x17,0xbf,0x6d,0xfd,0xf6,0x8b,0xcf,0x9c, + 0xef,0x9f,0xfc,0xb9,0xf5,0x64,0xfb,0xfb,0x7b,0xe6,0xfc,0xb1,0x98,0xc2,0xd3,0x33, + 0x46,0x95,0xe6,0x46,0x6b,0x86,0x0d,0xb3,0x1d,0x50,0xba,0xff,0xcf,0x82,0xe4,0x8b, + 0x77,0xc5,0xf4,0xe2,0x84,0x26,0x93,0x65,0x02,0x1e,0xed,0xee,0xac,0xef,0x10,0x20, + 0x20,0x7a,0xb4,0xbb,0xfb,0xeb,0xcf,0xff,0x8c,0x92,0x57,0x13,0x52,0x3a,0xbf,0x83, + 0xed,0x98,0x60,0xa0,0xf4,0xd6,0x13,0x94,0xbd,0x96,0x08,0x8b,0x41,0xcb,0x0f,0x72, + 0xaf,0x67,0xc0,0xeb,0x02,0xb7,0x1b,0x86,0xb4,0xd1,0x2d,0x43,0xbe,0xd5,0x93,0xad, + 0xd9,0xae,0xa2,0xff,0x55,0xf4,0x90,0xcf,0x74,0xa8,0xef,0x5a,0xbb,0xdf,0xad,0x65, + 0x58,0x90,0xcd,0x52,0x1b,0xe4,0x5f,0x57,0x2c,0xee,0x8b,0x5f,0x7c,0xec,0x0d,0x51, + 0x63,0xad,0x65,0x4d,0x3e,0xed,0xc9,0x4f,0x96,0xf2,0x7d,0xff,0xe4,0xfb,0xbb,0xab, + 0x69,0xf3,0x1d,0x90,0x49,0xd8,0x3f,0x85,0x3d,0x5f,0xd2,0xab,0xfe,0x3a,0x28,0xe6, + 0xa4,0x97,0x0f,0xaa,0xb8,0xd3,0x6e,0x81,0x33,0xeb,0x7b,0xbf,0xe6,0x0d,0xfa,0x64, + 0x90,0xbf,0x96,0xc5,0x1b,0xc7,0xce,0x49,0xba,0xef,0x37,0xf1,0xc6,0xba,0x09,0x5f, + 0xe3,0x23,0xdc,0x15,0xec,0xc4,0xb4,0x09,0x5b,0x1e,0xb1,0x98,0x1b,0xd3,0x0a,0x37, + 0x1b,0x9c,0xe2,0x03,0x74,0x6c,0x9d,0x48,0xaa,0x90,0xe7,0xf8,0x05,0x31,0x11,0x68, + 0xa2,0x77,0xfc,0xb4,0xda,0x31,0x0b,0x5b,0x3d,0x8a,0x16,0x71,0xe2,0x6f,0x70,0x8c, + 0xf6,0xb7,0xe7,0x18,0x2f,0x91,0xc2,0xf7,0xc4,0x79,0x0d,0xdd,0x51,0x3d,0x52,0x6f, + 0x54,0x66,0x65,0xba,0x3e,0x1a,0x1c,0xc3,0x73,0x8a,0x79,0xfd,0x8c,0xd7,0xa0,0x0c, + 0xdf,0x2b,0x70,0xc8,0x94,0x1f,0xb1,0x1d,0x08,0x78,0x12,0xd1,0xf8,0xb1,0x1b,0x82, + 0x1f,0x7e,0x57,0x16,0xd9,0xb4,0x83,0x9f,0x94,0x5b,0x36,0x6d,0xff,0xdd,0x12,0xe3, + 0xae,0xfe,0xc9,0xa6,0x4f,0x3f,0x0d,0xd8,0xa3,0x9e,0x2e,0xf9,0xae,0x3b,0xcd,0x8c, + 0xa2,0xb3,0xfa,0xce,0x38,0xb1,0x0b,0x72,0xbc,0x75,0x84,0xee,0x2e,0x48,0x0e,0x2f, + 0x86,0x95,0x5d,0xf3,0xac,0xf8,0x48,0xdf,0x36,0xcf,0x8b,0xe1,0x70,0x30,0xed,0x5a, + 0xcf,0x17,0x82,0x80,0xef,0x38,0xb3,0xbf,0xb3,0xfb,0xf8,0xd9,0xdc,0x58,0xe9,0x68, + 0x13,0x44,0xa6,0xa9,0x60,0x1b,0x58,0xa7,0x1a,0xa1,0x2f,0x8f,0x81,0xeb,0xc1,0x63, + 0x4e,0x3b,0x39,0xe2,0x4d,0xbf,0x57,0x9e,0x77,0xe9,0xd8,0xc9,0x65,0xb6,0xe7,0xd8, + 0x43,0x56,0xd9,0x5a,0x94,0xe2,0xa6,0xf3,0xd9,0x2f,0xf4,0xb7,0x0a,0x62,0xab,0xf6, + 0xbf,0x2e,0x02,0x62,0x69,0xe8,0x24,0x01,0x75,0x61,0x7a,0xc9,0x1f,0x68,0x5a,0x06, + 0x6e,0xc5,0xe5,0x4b,0x75,0x7b,0xd6,0x84,0xba,0xdc,0xdc,0xe4,0x5f,0x75,0x89,0xca, + 0x71,0x69,0x37,0xaa,0x96,0x6a,0x12,0x01,0xde,0xbe,0x29,0xde,0x17,0x8a,0x86,0x9f, + 0x3b,0x11,0x1d,0xb5,0xc9,0xb6,0xf2,0x94,0x0d,0x0f,0xd3,0xba,0x1e,0x24,0x9f,0x4f, + 0xae,0xd2,0xb0,0x1b,0xc9,0x87,0xf2,0x2c,0x0d,0xfb,0x92,0x7c,0x38,0x9d,0xf1,0xfe, + 0x96,0x4a,0xd8,0x68,0x08,0xe1,0x4f,0xe9,0x6c,0x32,0xa2,0xa3,0x9c,0xa2,0x1c,0x3f, + 0x9c,0x4b,0x1b,0x47,0x3d,0xd3,0x13,0x7a,0x43,0xd3,0xad,0xa1,0x46,0x62,0xb3,0xc6, + 0xf5,0x1e,0xe2,0x97,0xfb,0x2a,0xf5,0x2e,0xe3,0x51,0xa6,0xc6,0x85,0xbe,0xf1,0x46, + 0x5b,0x31,0x34,0xe3,0xfe,0xc2,0xdc,0xbe,0x34,0xde,0xfd,0xf0,0x2b,0x0d,0x97,0xde, + 0xf0,0x57,0xbf,0x77,0x1b,0x83,0x52,0x89,0x79,0xe0,0xf5,0xca,0xa3,0xc6,0xe5,0x71, + 0x57,0x72,0xf8,0xbd,0xef,0xf6,0xde,0xe6,0x8c,0x7a,0xdf,0x9c,0xb1,0xb8,0x73,0xca, + 0xbf,0x64,0xe5,0x38,0xb5,0x06,0x8e,0x1b,0xeb,0x2c,0x1c,0xb9,0xb4,0x25,0x97,0xba, + 0xd2,0xaf,0xcb,0x2f,0xcf,0x58,0xe3,0x89,0x57,0x20,0x97,0xcf,0x68,0x7e,0xb7,0x87, + 0x2f,0x64,0x77,0x6f,0x0d,0x02,0xc3,0x43,0x19,0xbb,0x5f,0x5b,0x79,0x60,0x53,0x1d, + 0xf9,0xd8,0xd3,0x1d,0xaf,0x38,0x1b,0x98,0x7b,0xb5,0xf5,0xa3,0xa0,0xfe,0x5a,0x03, + 0x48,0x45,0x73,0x2f,0x1b,0x48,0xf5,0x3e,0xfa,0xf5,0x76,0x8b,0x0f,0x14,0x95,0xf2, + 0xca,0x9b,0xbb,0xbb,0x75,0xec,0xae,0xd5,0xde,0x80,0x37,0x3a,0x5b,0x05,0x21,0x2c, + 0x40,0x4b,0x18,0x23,0xa3,0xfb,0xd5,0x84,0x9b,0xb2,0xd2,0x7a,0x0a,0xc3,0x31,0xfe, + 0x97,0x09,0x94,0x79,0x5c,0x61,0x6b,0xb0,0x41,0x51,0x96,0x10,0xfe,0x28,0x1d,0x93, + 0x22,0x9c,0xbc,0x8f,0x66,0x3b,0xd9,0x6e,0xf6,0xa8,0xc6,0xe2,0x10,0x8b,0x84,0xcc, + 0x88,0x71,0x63,0xb0,0xda,0xe4,0x70,0x40,0x7d,0x7a,0xac,0x4a,0xa7,0xf9,0xb4,0x06, + 0x56,0x6d,0x20,0x07,0x4f,0x01,0xa8,0xc6,0xe1,0x4c,0x04,0x15,0x51,0x13,0xa8,0x43, + 0x34,0xf7,0xb4,0x49,0xa4,0xb2,0x77,0xed,0x5d,0x2f,0x37,0x46,0xac,0x75,0x30,0x33, + 0xca,0x2b,0x3b,0x69,0x89,0xf0,0xad,0x03,0xcc,0xc6,0xfb,0x86,0x33,0x05,0x44,0x8a, + 0x94,0xa1,0x4e,0xf5,0x27,0xdf,0xde,0xe6,0x25,0x1f,0x8f,0xba,0x93,0x2f,0xdd,0x3e, + 0xc2,0xc2,0x5d,0xab,0xf0,0x28,0x65,0xe7,0x5c,0xe4,0x09,0x77,0x50,0x5c,0x61,0x1b, + 0x69,0x0c,0x13,0xca,0xd3,0xd9,0x84,0x8e,0x8d,0x27,0xb0,0x0f,0x08,0x9b,0x85,0x7c, + 0x32,0x71,0x6f,0x4b,0x56,0xcc,0xbb,0xdc,0x70,0xbb,0x61,0xae,0x03,0x05,0x4b,0x6c, + 0x93,0xce,0xf0,0xae,0xfe,0x87,0xb4,0x33,0xfb,0x38,0x65,0xc4,0xaf,0x30,0x3e,0x0f, + 0x93,0xe7,0xd7,0xff,0x76,0x73,0x72,0x77,0xfe,0x73,0xa7,0x6d,0x99,0x7b,0xef,0x58, + 0xc0,0x52,0x67,0x91,0x26,0xd2,0x5c,0xc9,0xc1,0xff,0xb2,0x06,0x89,0xa7,0x7d,0x98, + 0x4b,0xf0,0xa7,0xfa,0x3a,0xda,0x5b,0x0f,0x42,0x33,0xb1,0x87,0xb5,0xd6,0x77,0x53, + 0x19,0x5a,0x9c,0x4b,0x9b,0xba,0x36,0x62,0xbb,0x9d,0x47,0x35,0xdd,0x02,0x9f,0x92, + 0xda,0x41,0x21,0x08,0x1e,0xd5,0x75,0x8a,0xba,0x4c,0x68,0xf5,0x7a,0xbf,0x1b,0x35, + 0x95,0x15,0x5f,0xb2,0xea,0x1e,0x67,0xaf,0xf3,0xbe,0xb5,0x60,0x1f,0x39,0xef,0x5b, + 0xa9,0x78,0xd1,0x20,0x88,0xb4,0x3e,0x9c,0xe4,0xbd,0x03,0x5e,0xae,0xc1,0xee,0x3b, + 0x4d,0xaf,0xe1,0xbb,0xef,0x37,0xfd,0x5e,0x4d,0x70,0x8f,0xdb,0x07,0x1b,0xf7,0xba, + 0x7e,0xb0,0x71,0xe7,0xfd,0x03,0x00,0xd5,0xdf,0x40,0xa8,0xef,0x05,0x61,0x23,0x4e, + 0x27,0xd3,0x37,0x17,0x73,0xdf,0x96,0x16,0x3e,0x9f,0x7a,0xc3,0xad,0xe2,0x7a,0x80, + 0xd9,0x67,0x44,0x1b,0xf5,0x49,0x9f,0xb6,0xb2,0x6f,0x0e,0x0e,0xe3,0x95,0xb7,0xb1, + 0x37,0x37,0x67,0x2d,0x9c,0xca,0x81,0x3c,0x64,0x6c,0xd2,0x4b,0x60,0x20,0xcb,0x00, + 0xd4,0x64,0x0a,0x31,0xb9,0x0c,0x8f,0xe5,0x8d,0xc7,0xf1,0xfa,0x2b,0x12,0xea,0xd9, + 0x63,0x7f,0x72,0x31,0xec,0x43,0x1c,0x9d,0x15,0xd4,0xd4,0xf6,0xe2,0x5d,0x33,0x82, + 0x37,0x04,0xbe,0xcb,0x18,0xa7,0xa1,0xa1,0xff,0x19,0x05,0x06,0xa9,0x36,0x5e,0xc1, + 0xfd,0xa5,0x3d,0xa7,0x57,0x75,0x12,0x6d,0x75,0xd3,0xd4,0x0e,0x12,0xdf,0xbd,0xc0, + 0xd9,0x60,0x3c,0x28,0x61,0xae,0x67,0xe7,0x43,0xbd,0x6e,0x74,0x70,0x31,0x05,0x0b, + 0xab,0x05,0xbe,0x3a,0x31,0xc8,0x41,0x47,0xac,0x60,0xd8,0x91,0xe5,0x5e,0x8c,0x07, + 0xfb,0xc9,0x86,0x74,0x01,0x72,0x2d,0x8b,0x37,0x0e,0xe2,0x4e,0xcc,0xfa,0xd8,0x7f, + 0x30,0xd5,0x62,0x0e,0xe0,0x7a,0xd5,0xd0,0x19,0x55,0xa8,0x44,0x7d,0x4a,0xe6,0x9b, + 0xa7,0x29,0x9d,0x1a,0xd0,0x7a,0x79,0xaa,0xf0,0xcf,0x3d,0xc0,0x32,0xea,0x4f,0x88, + 0x93,0x46,0xcc,0xa7,0x6c,0xb5,0x51,0xa6,0xdd,0xf5,0x46,0xdd,0x44,0x50,0xd8,0x33, + 0xf2,0xe6,0x9c,0xf5,0xab,0xb5,0xd0,0xaa,0x03,0xf0,0x31,0xe1,0xa8,0xd1,0x80,0x12, + 0xd3,0xbb,0x1a,0x1b,0x43,0x38,0x5b,0x6e,0xc4,0x6c,0x4a,0xa8,0xfb,0x9b,0xcb,0x14, + 0x09,0x6a,0x0f,0x88,0x86,0x00,0x2a,0x36,0x59,0xd5,0x03,0xae,0x38,0xeb,0x7b,0x87, + 0x26,0xd5,0xea,0x1b,0xa4,0xc6,0x09,0xaa,0xc5,0x3b,0x15,0xeb,0x30,0x42,0x2f,0x17, + 0xdf,0x11,0x43,0x5a,0xc2,0x1d,0xf7,0xdd,0x78,0xce,0x5d,0x4b,0x89,0xe5,0x72,0x66, + 0x51,0xee,0x25,0x7d,0x37,0xf0,0xf0,0x5e,0xfc,0x2d,0xff,0xa3,0x5d,0x52,0x02,0xc1, + 0x49,0xa9,0x27,0x62,0x6c,0x6f,0xf3,0xe0,0x93,0xea,0x06,0x6c,0x5a,0x93,0x89,0x05, + 0x98,0x40,0x1d,0xce,0x04,0x91,0x43,0xfa,0xe6,0xeb,0x37,0xbf,0x47,0x5b,0x11,0x93, + 0xa6,0x3a,0xed,0x2c,0xde,0x97,0x27,0x9c,0x47,0xa2,0xff,0x05,0x3a,0xef,0xb4,0x01, + 0x7a,0xfd,0x44,0x50,0x11,0x19,0x0f,0x1a,0x70,0x96,0x73,0x31,0x98,0x09,0x31,0x5a, + 0x7c,0xbf,0x46,0xdc,0x11,0x2a,0x5e,0x63,0x2c,0x8a,0xcf,0xc7,0x5a,0x20,0x73,0xe4, + 0x44,0x9e,0xa4,0x54,0x07,0xb1,0xa4,0x92,0xc8,0x66,0x53,0x91,0x39,0xef,0xd4,0x25, + 0xac,0x8b,0xd8,0x31,0x3b,0x4d,0x53,0x42,0x34,0xbd,0xd5,0x06,0x7b,0x27,0x1b,0x1c, + 0x57,0x3e,0xd9,0x8b,0xb1,0x84,0x4d,0x8b,0x7e,0xe4,0xf1,0x3c,0x99,0x4d,0xf7,0x66, + 0xd3,0x16,0x4c,0xb1,0x9b,0x91,0x1c,0xeb,0xce,0x4e,0xad,0xb4,0xa0,0xe7,0xb2,0xc4, + 0x69,0xe6,0x9e,0x50,0x2e,0x46,0xb6,0x0e,0x1e,0xcb,0xab,0xf9,0x35,0x78,0xc3,0xd6, + 0xdb,0x53,0x38,0x6a,0x8f,0x33,0xa4,0x11,0x76,0x18,0x5a,0x0b,0x50,0xcd,0xf4,0x81, + 0xeb,0xee,0xe1,0x70,0x5f,0x2c,0x82,0x29,0x24,0x65,0xcc,0xc1,0x50,0x8e,0xb3,0x00, + 0x6a,0x2f,0xe6,0x68,0xf5,0xce,0x40,0xd0,0x52,0xad,0x5c,0xee,0x2c,0xe0,0xe9,0x0d, + 0x38,0x26,0x46,0xe4,0x71,0x56,0xcb,0x23,0xeb,0x60,0xce,0x62,0xb1,0x19,0xdf,0x9c, + 0x88,0xad,0xae,0x76,0x84,0x23,0x5f,0x7c,0xb6,0x03,0x35,0x4c,0xf7,0x28,0x14,0x5c, + 0x2f,0x11,0x21,0x21,0x4b,0x14,0x07,0x5c,0x68,0x06,0x18,0x34,0x35,0xc8,0x4f,0xe2, + 0xff,0x6f,0xd3,0xa9,0xba,0xc5,0x4f,0xab,0xb8,0xf1,0xb9,0xa2,0xa2,0xe7,0x62,0x16, + 0xe0,0xb2,0xc9,0x1a,0x3d,0x3e,0x95,0x1a,0x21,0x31,0x22,0x59,0x26,0xce,0x28,0x4d, + 0xcd,0x86,0xb7,0x77,0xf6,0xf0,0x56,0x92,0x12,0xbe,0x20,0x59,0x7b,0x7b,0x87,0x26, + 0x2d,0x5c,0x18,0xe9,0x20,0x9f,0x14,0x58,0x8c,0xaa,0xf2,0x8a,0x11,0x9d,0x68,0x87, + 0xe5,0x69,0xb2,0x94,0x57,0x8c,0xdc,0xe2,0xe4,0x4b,0x46,0x89,0xf7,0x72,0xa3,0x3b, + 0x45,0x49,0xd6,0x77,0xb0,0x8c,0x87,0xb0,0xbc,0xe0,0xa3,0xf8,0xc5,0xc1,0xc2,0xa0, + 0xbe,0xc9,0x84,0x00,0x36,0xfa,0x26,0xd0,0x6c,0xea,0xc4,0xac,0x61,0xcf,0x61,0x5e, + 0x2c,0x92,0xfe,0x92,0x4d,0x8b,0x5d,0x67,0x1f,0x6c,0xfd,0x3d,0xc1,0xb4,0x46,0x22, + 0x97,0xcc,0x2e,0xef,0x75,0x7a,0xf9,0x66,0xa1,0x5d,0xf3,0x9b,0x05,0x7a,0xc8,0x37, + 0x0b,0x1e,0x41,0xdf,0x2c,0xe6,0xd7,0xdf,0x2c,0x40,0xe3,0x7b,0xd3,0x25,0xcc,0x0b, + 0x5a,0x57,0xd3,0xc1,0x18,0x79,0x16,0xc6,0xf1,0xf3,0x92,0xc0,0x78,0xab,0x2e,0xc2, + 0x84,0xab,0xa0,0xdb,0x30,0xd6,0xf1,0xa9,0x54,0xc6,0x19,0x7f,0xf1,0x3c,0x61,0xc4, + 0x8e,0x94,0xcf,0xcb,0x9c,0xa7,0x8a,0xc3,0x2a,0x66,0x46,0x7f,0xa8,0xd3,0xe2,0xfd, + 0x30,0xa4,0x2d,0xdd,0x21,0xe9,0x6a,0x18,0xc4,0xb0,0x7f,0x50,0x7f,0xde,0x6f,0xca, + 0x84,0x31,0x7e,0x70,0xaf,0xe8,0xed,0xb0,0xa0,0x1e,0x0c,0x12,0xa3,0x5e,0xe4,0xae, + 0x7f,0x11,0x8d,0x3c,0xd2,0x57,0x6e,0xa7,0xf6,0x86,0x92,0x29,0xd8,0xce,0x70,0x9b, + 0x9b,0xe1,0x96,0x45,0x0d,0x06,0xee,0x2a,0x90,0x98,0x34,0x99,0xd0,0x4f,0x4f,0x2e, + 0x08,0x1b,0x65,0x9f,0x29,0x73,0x27,0x8d,0x9a,0x2c,0x76,0x95,0x11,0x09,0x26,0x53, + 0xf1,0x9f,0x40,0xdd,0xa7,0xf9,0xdb,0x81,0x7a,0xd2,0x2d,0x2d,0x55,0xab,0x9d,0x34, + 0x61,0xa7,0xe0,0xfa,0x66,0x5a,0x43,0x96,0x00,0x34,0xe2,0x8a,0x02,0x8b,0x3f,0x9c, + 0xca,0x94,0x03,0xe6,0x8d,0xc2,0x6f,0x3c,0x6f,0xfe,0xaf,0x5e,0xf3,0x9f,0xc7,0x37, + 0xbb,0xb7,0xea,0x9a,0x4f,0x5b,0xe7,0x7e,0xd3,0x4a,0x8c,0x9d,0xc1,0x9d,0x1c,0x63, + 0x13,0x45,0x62,0xd8,0x6e,0x93,0x76,0x2b,0x78,0xc4,0xdc,0x65,0xd4,0xa5,0xd1,0x29, + 0x16,0xc6,0x84,0xef,0xe5,0xa0,0x02,0x2e,0xf9,0x2b,0x11,0xab,0xe4,0x78,0xa2,0x7a, + 0x7c,0xf1,0x65,0x97,0x9d,0xb0,0x73,0xc4,0xfc,0xc4,0x05,0xee,0x9e,0x84,0x5e,0xea, + 0xbc,0xcf,0xf9,0x7a,0x57,0x5c,0xec,0x11,0x0a,0x97,0x4f,0xcc,0x57,0x9e,0xc5,0xe2, + 0x43,0xe2,0x14,0x12,0xd1,0xeb,0x90,0xd2,0xf5,0xbc,0x5e,0xdd,0x88,0x80,0x20,0x7a, + 0x89,0xcc,0x6e,0x09,0x8c,0xd7,0xa9,0x1b,0x22,0x20,0xf0,0x42,0xe4,0x53,0x24,0xb5, + 0x10,0x95,0x98,0xd9,0x47,0x68,0x4e,0xc7,0x87,0x8b,0x75,0xd9,0x41,0x26,0x8b,0xc5, + 0x74,0xae,0x9e,0x5b,0xd4,0x71,0x05,0xfc,0x1d,0x93,0xf4,0x06,0xf7,0xd4,0xf4,0x2e, + 0x2e,0xad,0x00,0xe0,0xb9,0xb5,0x62,0xd7,0x3b,0x95,0x73,0x2b,0xf2,0x3c,0x72,0x26, + 0x11,0x06,0x14,0x0d,0x2f,0x9d,0x70,0x88,0x05,0xdf,0x1d,0xa4,0x3d,0x29,0x0a,0xd1, + 0x43,0x96,0xd1,0xfb,0x58,0xd4,0x82,0xe2,0x20,0xe3,0xc1,0xfb,0x98,0x7d,0x7e,0x58, + 0xff,0x2f,0xdc,0xf5,0x89,0x93,0xbb,0xed,0xa8,0x14,0xd7,0x18,0xc0,0x0e,0x00,0xb8, + 0x8d,0x29,0x8d,0x77,0xc3,0x8b,0x29,0x87,0x71,0xcc,0x28,0x97,0x75,0x25,0x82,0xc2, + 0xcc,0x47,0x30,0x98,0x11,0x4b,0x6c,0x10,0xd4,0xc0,0xfa,0xb0,0x13,0x6f,0x3c,0xd6, + 0x75,0x88,0xe3,0xb4,0x03,0xe7,0x14,0x4d,0xe3,0x9f,0xab,0xda,0x0a,0x61,0x66,0xf2, + 0x7c,0xf4,0xa8,0x6a,0x66,0x4d,0x4f,0x5b,0xb5,0xad,0x52,0x07,0x8a,0x14,0x9a,0x01, + 0xde,0xbe,0x24,0xfc,0x83,0xdc,0x7b,0x89,0xe8,0xa9,0x9c,0xe3,0xaa,0xcf,0x64,0x1c, + 0x54,0x45,0x9c,0xdc,0x88,0x2f,0xb0,0x56,0xec,0x12,0x60,0xdd,0x50,0x85,0x1e,0xa7, + 0xc2,0x75,0xe4,0xda,0xae,0x23,0x8e,0xbb,0xa9,0x6b,0xf1,0xa2,0xa4,0x77,0x8b,0x19, + 0x95,0x99,0xea,0xd7,0x8d,0x50,0xc0,0xa9,0xa1,0x61,0x88,0x3f,0xba,0x66,0x1f,0x4e, + 0xec,0x1f,0xd0,0xa0,0x57,0xd3,0x3b,0xbe,0xef,0x14,0xb8,0x0a,0xb4,0x4e,0x85,0xc2, + 0x7e,0x1a,0xf8,0x17,0x7a,0x28,0xf2,0xb6,0x9d,0xe6,0xe1,0x87,0x3b,0x7e,0xf8,0xef, + 0xf5,0x32,0xa4,0xdc,0xaf,0x73,0x31,0x64,0x3b,0x10,0x77,0x37,0x83,0xaf,0xc6,0xeb, + 0x4b,0x54,0x4e,0x26,0xe3,0x75,0xae,0x5f,0x54,0xfa,0x13,0xb9,0xc3,0x08,0x85,0x66, + 0x9b,0x91,0xaf,0x9b,0x67,0x3c,0xef,0x4c,0x89,0x9f,0x51,0xbd,0x08,0x95,0xe7,0xb0, + 0xea,0x8a,0x74,0x3b,0x63,0xd0,0x80,0x57,0xbe,0x5f,0x9e,0x88,0x24,0x69,0x75,0xd8, + 0x43,0x9a,0x5e,0xb6,0x27,0x68,0x45,0x5e,0x2b,0x94,0x75,0x8d,0x40,0x6d,0xe0,0x05, + 0xe0,0x8e,0x30,0x39,0xdf,0xb1,0x45,0x8a,0x5b,0x91,0xba,0x0f,0xaa,0x2b,0x5f,0x67, + 0x1d,0x53,0x74,0x7f,0xd0,0xa7,0x07,0x34,0x1e,0x7b,0x93,0xef,0xc1,0x91,0x92,0x2e, + 0xda,0xda,0x1a,0x81,0x57,0xa1,0x7a,0x3a,0x5b,0x11,0xfa,0x0c,0xdc,0xe8,0x4b,0xab, + 0x8b,0x57,0x21,0x34,0xfb,0x43,0xaa,0x2f,0x11,0x40,0xdb,0xf1,0x87,0xc8,0x7e,0x36, + 0xe0,0x49,0xa9,0xac,0x69,0xeb,0x3b,0x3d,0xfc,0x60,0xab,0x55,0xdb,0xc2,0xfe,0x24, + 0x12,0xa8,0x54,0xc2,0x0c,0x3a,0x98,0x58,0x13,0x24,0x1f,0x3f,0x0c,0xc6,0x1f,0x46, + 0xe5,0x9e,0x5e,0x2e,0x4b,0xb6,0x33,0x7e,0x3c,0x2d,0x06,0xc3,0xc4,0x87,0x91,0x0b, + 0xcc,0x69,0x67,0xb7,0xed,0x5e,0x64,0x32,0x4e,0xcd,0x54,0x9e,0x32,0x13,0x7a,0x12, + 0x4b,0x32,0x4f,0x45,0xc2,0x6f,0x6a,0xab,0xbd,0x58,0xcf,0xe2,0x3d,0xef,0xac,0x5c, + 0x08,0xb4,0x58,0x4b,0x8a,0xab,0xfa,0xc1,0x1b,0xf8,0x85,0x72,0xc7,0xea,0x15,0x66, + 0x3a,0x9a,0xcf,0xc0,0x6e,0x3b,0x8b,0x23,0x7a,0x13,0xd6,0x18,0xa8,0x09,0x68,0xaa, + 0x63,0x97,0x81,0xab,0x7c,0x1c,0xad,0x73,0x59,0xa1,0x95,0x12,0xa3,0x57,0x4c,0x45, + 0x15,0x68,0xa8,0xcc,0x72,0xc8,0x26,0xdf,0xc9,0x59,0x45,0x4b,0x36,0x1f,0xcc,0x87, + 0x45,0x46,0xc3,0xd5,0x2c,0x44,0x66,0x42,0x14,0x1e,0x34,0xf9,0x6b,0x30,0x2d,0x72, + 0xda,0x62,0x61,0x0a,0xd7,0xdb,0xee,0x6e,0x2e,0x2a,0x21,0xc8,0x43,0x29,0x22,0x94, + 0x0c,0xa6,0x24,0x0d,0xe7,0x0e,0x2c,0x7c,0x47,0x53,0xf1,0x74,0x33,0xe0,0x93,0x9f, + 0xdc,0x44,0x92,0xd9,0x72,0x62,0xda,0x44,0x6e,0xd2,0x05,0xe6,0xf1,0xf9,0x7c,0x3e, + 0xed,0x6c,0x6d,0xd1,0x3e,0x63,0xda,0x88,0xb7,0xe2,0xae,0x64,0xf6,0x8a,0x23,0x38, + 0x4d,0x3e,0x27,0x6d,0xa8,0xbc,0xa3,0xe4,0x95,0xd7,0xa7,0xcc,0xb9,0x6f,0x0d,0xae, + 0x38,0xf6,0x50,0xc5,0x7f,0x8a,0x15,0x55,0xdd,0xe5,0xa0,0x5b,0xcb,0x87,0xf5,0xca, + 0x4a,0xb9,0x14,0x62,0x98,0xbe,0x58,0xec,0xb6,0xbb,0x4e,0x46,0xbe,0xdb,0x1a,0x86, + 0x49,0x94,0x3c,0x73,0xcf,0x91,0x82,0xdb,0x33,0xc7,0xcd,0xe6,0x9d,0x38,0xc8,0x83, + 0xc4,0x18,0xc6,0xc8,0x12,0xed,0x2d,0x7f,0x4c,0xe3,0x4e,0x7b,0x02,0x61,0x38,0x2b, + 0xd0,0xfb,0xac,0x6f,0x84,0x8b,0x92,0x06,0xc1,0x29,0xad,0xec,0x05,0x02,0x11,0x34, + 0xd9,0x0c,0xb7,0x56,0x9b,0xcb,0x0b,0xdc,0xe4,0x53,0xe8,0xa0,0x61,0x9e,0x76,0xe1, + 0x9b,0x1a,0x50,0x2d,0x71,0x0c,0x9a,0xa4,0xb7,0xab,0x2f,0xde,0x0a,0x4d,0xed,0x1a, + 0x2c,0x1b,0x61,0xbd,0xbc,0xfd,0x95,0x56,0x01,0xb1,0xcf,0x7a,0x91,0xb4,0xd2,0x56, + 0xfc,0xec,0x1d,0x97,0xf8,0x74,0xab,0x47,0x6e,0x2c,0xe2,0xff,0x9e,0x5c,0xd0,0x89, + 0xb0,0xb9,0xef,0x15,0xcd,0x75,0x80,0x9a,0xbb,0xc0,0x19,0x4f,0x25,0x2a,0x6a,0xec, + 0xbf,0x7a,0x89,0x80,0x90,0xf9,0xce,0xa3,0x6e,0xf5,0x4e,0x01,0x19,0x7f,0x80,0x69, + 0xe5,0x51,0x2c,0x51,0x44,0x7e,0xa2,0x49,0xe5,0x0a,0xc1,0xa8,0xe8,0xb5,0xa4,0x4a, + 0x70,0x5c,0xc4,0x98,0x6f,0x9f,0xd1,0xd7,0x1f,0xf0,0xcb,0x8b,0xcf,0x39,0x3d,0x30, + 0xdc,0x60,0x7c,0x36,0x11,0xa0,0x53,0x5c,0xd3,0x81,0x86,0x84,0x7a,0x02,0xa6,0x7f, + 0x95,0x8c,0x38,0x3d,0x4a,0x7e,0x3b,0xdc,0x4f,0x05,0x90,0x3d,0x12,0x00,0xb0,0xc0, + 0xbc,0xa5,0x00,0x37,0x6c,0x7b,0xdf,0x34,0x3d,0xe7,0x56,0x40,0x65,0xbb,0xe0,0x22, + 0xb5,0xf7,0x9d,0x23,0xf9,0x28,0x80,0x23,0xea,0xf5,0xf0,0x03,0x11,0xff,0x5c,0xf4, + 0xa6,0x4c,0xe1,0xdb,0x83,0x77,0xcf,0x7f,0x8d,0xd8,0xd7,0x04,0x1c,0x39,0x0c,0x61, + 0xb7,0x5b,0xce,0xa3,0x13,0x14,0x26,0x79,0xaa,0xe8,0x5b,0x94,0xed,0x35,0x6f,0xdf, + 0xce,0x0b,0xe3,0x3c,0x8f,0x0d,0x4c,0x32,0xd9,0xc9,0xc1,0x27,0x00,0x63,0x24,0xbe, + 0xfa,0x19,0xcd,0x58,0x43,0x5d,0x7e,0x9c,0x91,0xdc,0x01,0x29,0x44,0xbe,0x61,0x7d, + 0xba,0x79,0xf2,0x88,0x2e,0xf7,0x5f,0xe3,0xda,0xc5,0xac,0x49,0x42,0x95,0xa9,0x12, + 0xed,0x02,0x4e,0x29,0xd3,0xac,0xe5,0x16,0xff,0xbc,0xfc,0x64,0x73,0x22,0xb2,0x8c, + 0xb8,0x1a,0x34,0x82,0xec,0xa8,0x2c,0x86,0x97,0x45,0x19,0xe4,0xa7,0x9f,0x69,0x81, + 0xcc,0xfb,0xe2,0x9f,0xc3,0x29,0x5a,0x3e,0x45,0x09,0xab,0xcb,0x98,0x6d,0x55,0x61, + 0xa2,0xb4,0x36,0x2d,0x41,0x43,0x8e,0x74,0x42,0x23,0x6d,0x8c,0x1e,0xcf,0xfa,0x0f, + 0xcb,0xe8,0xf9,0xfe,0xab,0x08,0x1f,0x06,0x25,0xfa,0x40,0xb9,0x5c,0x95,0xe8,0x66, + 0x30,0x9e,0x7f,0x6f,0x6a,0xd4,0xeb,0x23,0xf6,0x28,0xe3,0x00,0x97,0xc6,0x91,0x24, + 0x60,0x25,0x8a,0x12,0x18,0x1f,0xc3,0x3e,0xd7,0x05,0x6d,0x91,0x35,0xdf,0xe4,0x7c, + 0x32,0xad,0xc9,0x62,0x79,0x80,0x25,0x46,0x05,0x87,0xa2,0x37,0x97,0xfc,0x88,0x26, + 0x23,0x3b,0x70,0x04,0x98,0x99,0x7d,0xd6,0xed,0x78,0x6f,0xd6,0x1b,0x59,0xd7,0x71, + 0xa5,0xec,0xde,0xf8,0x40,0x94,0x8e,0x43,0x33,0x78,0x1f,0x9b,0x19,0x62,0x79,0x0c, + 0x46,0xea,0xe2,0x87,0x5c,0xdd,0x49,0x27,0xf4,0xa3,0xb5,0x01,0x27,0x8f,0xc7,0x62, + 0x66,0xb8,0xce,0x19,0x68,0x8c,0xce,0x0a,0x30,0x9c,0x7e,0xaa,0xef,0x51,0xc2,0xce, + 0x32,0x78,0xfb,0x91,0x45,0xc6,0xb3,0x46,0xea,0xe6,0x12,0xd4,0x28,0xee,0x6d,0x31, + 0x33,0x6f,0x4d,0xa8,0xd7,0x6b,0xcb,0xe0,0xd2,0x41,0x1a,0x7e,0x9d,0x52,0xd0,0x0d, + 0x33,0xf8,0x02,0xc9,0x22,0xf1,0xfe,0xb0,0x94,0xa9,0xd9,0x1f,0xf4,0x3e,0x52,0xce, + 0x17,0xd7,0x73,0xd8,0x44,0x6b,0x45,0x90,0x3a,0x9e,0x94,0xb4,0x2c,0x9b,0x72,0x86, + 0x13,0x40,0xfd,0x78,0x31,0x9a,0x1a,0x27,0x6e,0x5a,0x79,0xfa,0x50,0x6a,0x58,0x3b, + 0xc7,0x95,0x71,0x95,0x0b,0x6c,0x93,0x86,0xc6,0xaf,0x93,0xeb,0xa3,0xf1,0x2e,0x0f, + 0x46,0xd2,0xd6,0xa5,0x90,0x9b,0xdc,0x6e,0x3e,0x69,0x6c,0xfa,0x09,0x72,0x59,0x98, + 0x62,0xd6,0x2b,0x0b,0xd0,0xc5,0xa7,0x9b,0x40,0x55,0x43,0x9d,0x76,0xdb,0x71,0x09, + 0x69,0x7f,0x50,0x82,0x18,0xac,0x41,0x51,0x6f,0x3e,0xa7,0xf9,0x9c,0x80,0xe5,0x9b, + 0x0f,0x08,0xf1,0x90,0x1b,0xbb,0xd7,0xc7,0x18,0x35,0x30,0xe8,0xc3,0xfd,0xe2,0xfa, + 0xd6,0x03,0x2d,0x05,0xf4,0x77,0xd8,0xff,0xd7,0xc0,0x46,0x37,0xac,0x35,0xd2,0x3c, + 0x04,0xfc,0x71,0x5a,0x12,0x1c,0xda,0x16,0xca,0x6c,0x72,0x57,0xc1,0x94,0xff,0xe5, + 0xed,0x41,0x00,0x72,0x76,0x56,0xc1,0x20,0x54,0xb7,0x0f,0x05,0x08,0x1c,0x5b,0x86, + 0x93,0x22,0x77,0x47,0x5d,0x6a,0x68,0x2e,0x9b,0x8c,0x6a,0xf2,0x15,0x73,0x82,0xe0, + 0x5e,0x39,0xe5,0xd9,0x42,0xad,0x60,0x00,0x46,0xad,0x71,0x4d,0x53,0x34,0x7c,0x7f, + 0xf5,0xe6,0x5b,0x43,0x22,0x54,0xf3,0xd9,0x41,0x3a,0x66,0xae,0xf3,0x71,0x17,0x81, + 0x9e,0x0e,0x2f,0xfa,0x05,0x67,0x25,0xc9,0x71,0xc0,0xe5,0x0e,0x74,0x78,0x96,0x61, + 0x6e,0xd9,0x9e,0x60,0xfe,0xe2,0xd7,0x41,0x29,0xed,0x36,0x1c,0x5c,0xfa,0x28,0xc2, + 0x7c,0xd0,0x9f,0x9d,0x95,0x41,0x3e,0x6d,0xef,0x80,0xd4,0x62,0x2e,0xe7,0x04,0x32, + 0xa8,0x9d,0xa5,0x40,0x92,0x9b,0x92,0xce,0x1a,0x05,0x65,0xb9,0x97,0x43,0x5a,0xe7, + 0x05,0xfc,0xa6,0x9a,0x2c,0x66,0x7e,0xa8,0x87,0x96,0x86,0xfa,0x71,0x50,0xd6,0xc0, + 0x2b,0x3d,0xbe,0xf7,0x5e,0x4b,0xd1,0xb2,0xd3,0x59,0x97,0xac,0x30,0xa3,0xce,0xba, + 0x0a,0x7a,0x63,0x1e,0x16,0x33,0x6a,0xf5,0xc9,0xc8,0xfc,0x34,0x59,0x35,0xd3,0x84, + 0x88,0xa0,0x29,0xbc,0x5f,0x6b,0x9a,0xf1,0xb9,0x30,0x1a,0xc6,0xdb,0x3a,0xf2,0xd4, + 0x2b,0xb0,0x43,0x22,0xfa,0x31,0xed,0x85,0xb1,0xba,0x58,0x72,0x3d,0x57,0xb4,0x75, + 0xe4,0x9a,0xef,0x4a,0xb2,0xbe,0xde,0x4c,0xc6,0x0b,0x62,0xd8,0x6d,0xc6,0x7e,0x1a, + 0xd5,0xd1,0xac,0xef,0xc5,0x56,0xd0,0xa9,0x8e,0x1b,0x18,0x44,0x65,0x06,0xd0,0xe0, + 0x78,0x36,0xba,0xa1,0xbd,0x61,0x53,0xdf,0x9c,0x1a,0x69,0x92,0x0e,0x62,0x4c,0x50, + 0xba,0x56,0x05,0x28,0x12,0x8e,0x1a,0xe2,0xcc,0x5e,0xba,0xf2,0x0c,0xd1,0xef,0xe6, + 0x45,0x69,0x17,0x2a,0x7e,0x8b,0xe4,0xc3,0x64,0x1c,0x48,0x17,0xba,0x0b,0x96,0xdc, + 0x93,0x79,0x4f,0x3c,0xbc,0x83,0x7c,0xfc,0x42,0xd3,0x26,0x7b,0xd9,0x62,0x26,0x4b, + 0xaa,0x98,0x86,0x62,0x14,0x81,0x8b,0xe5,0x79,0x6a,0x73,0xb2,0xf1,0x81,0x8c,0xb2, + 0xab,0x31,0x84,0x37,0x8c,0x6b,0x81,0x42,0xa9,0x2e,0x96,0x0c,0x09,0xba,0xa1,0xb4, + 0x18,0x4e,0xa8,0xe9,0x4f,0xbd,0x76,0x7c,0xc3,0xca,0x54,0x55,0x4e,0x5b,0x52,0x2d, + 0xb8,0xb6,0xd6,0x2a,0xf0,0xe8,0x86,0xc4,0xfd,0xfe,0xe2,0xa4,0x98,0xf7,0x82,0x4e, + 0x84,0x69,0x9e,0x37,0xd4,0xc2,0x0e,0x9d,0xf0,0x85,0xed,0x62,0x10,0xa1,0x0c,0x7b, + 0xf5,0xfc,0x75,0x6d,0x9e,0xa8,0x37,0x5d,0x91,0x4d,0xfc,0x2f,0x5f,0xa9,0x26,0xf0, + 0xf9,0x5b,0xcd,0x3f,0x99,0xfa,0x45,0x22,0xc1,0xc9,0x2a,0x60,0x86,0x31,0xe8,0x07, + 0x28,0xd1,0xea,0x19,0x74,0x75,0xff,0xb4,0x12,0x22,0x13,0xad,0xfd,0x0c,0x63,0xd9, + 0x4e,0xb1,0x92,0x8f,0xc7,0xb9,0x3b,0x47,0x6b,0xa6,0x08,0x89,0x42,0xe0,0xf9,0xc5, + 0x1c,0x33,0x77,0x2d,0x48,0x94,0x94,0xbd,0x11,0x75,0xe7,0x32,0x52,0x4c,0xa6,0xf9, + 0x75,0x55,0x7b,0x81,0xdf,0x60,0x7d,0x8c,0x9a,0x4d,0xab,0x3f,0x41,0x8f,0x50,0xf7, + 0xd2,0xf1,0xf1,0xc6,0xb1,0x15,0xd1,0x7f,0x79,0xf1,0xdf,0x2c,0xa1,0xeb,0x7d,0x73, + 0xda,0x21,0x20,0xd4,0x70,0x16,0x73,0x64,0x9c,0x31,0xcf,0xd0,0x48,0x89,0x4e,0x8a, + 0x73,0x9a,0xa8,0xe0,0x60,0xac,0x9d,0xd1,0xb6,0x0d,0xb3,0xe9,0xe7,0x85,0xf1,0xf1, + 0xb6,0xb8,0x18,0xcf,0x68,0xe4,0x80,0x28,0x8b,0x08,0x93,0x13,0x7a,0xa5,0xbc,0xa2, + 0x6d,0x4e,0xd4,0x9f,0x1a,0x61,0xa0,0x4a,0x2c,0x68,0x7c,0xcb,0x1d,0xdc,0x05,0xdc, + 0x4c,0x03,0x8f,0xbc,0x36,0xf5,0xb5,0xda,0xf2,0xfb,0x98,0x4d,0xd0,0x02,0x6c,0x19, + 0x04,0x63,0x64,0xbe,0x44,0xe6,0x0b,0x91,0xac,0x2a,0xe2,0x28,0xd9,0x6e,0xb2,0xeb, + 0x40,0x2a,0xd5,0x43,0x72,0x51,0x9e,0xd4,0x90,0xf8,0xdb,0xc1,0x0f,0xc2,0xe4,0xaf, + 0x26,0x12,0xf8,0x2d,0xa1,0xc0,0xfb,0x05,0x44,0xca,0x61,0xae,0x3d,0xe1,0xd7,0x74, + 0x5a,0xbc,0xaa,0x75,0x0d,0x2b,0xd9,0x60,0x7e,0xd1,0xb7,0x1f,0x27,0x63,0xfb,0x91, + 0x5e,0x3e,0x7a,0x5f,0xe5,0x02,0x13,0xf4,0xaf,0x10,0x6e,0x9d,0x29,0x4e,0x3e,0x44, + 0xfc,0x61,0x5b,0x66,0xb3,0xd3,0xa1,0x4a,0x3e,0xe2,0x5e,0xc9,0x13,0xd7,0xd1,0x97, + 0x6c,0x9e,0x52,0x33,0x4d,0x67,0x97,0x8c,0x5c,0x25,0xa1,0xea,0xb2,0x2b,0x65,0xa8, + 0xfa,0x5e,0x74,0x43,0x37,0xb8,0x7d,0x61,0x5f,0xe9,0x23,0x33,0xca,0xaa,0xca,0x78, + 0x56,0xbc,0x8e,0xc4,0xaa,0xb2,0x78,0x01,0x99,0x35,0x14,0xc0,0x15,0x0f,0x52,0xb1, + 0xd5,0x84,0x2d,0x45,0x31,0x86,0x9f,0xf3,0x31,0xec,0xf6,0xf5,0xf3,0x1c,0x7d,0x5b, + 0xad,0x03,0xf0,0x8d,0x0c,0x03,0xf4,0x5b,0x0f,0x23,0x54,0x9d,0xda,0x9d,0xf5,0x10, + 0x89,0xa0,0xea,0x35,0x17,0xf3,0xcf,0xa7,0x9f,0x4f,0x87,0xdc,0x5d,0xe8,0x39,0xe2, + 0x17,0xf0,0xe5,0x14,0xfc,0x49,0xae,0x20,0xd2,0x11,0x6f,0xbc,0xcc,0x55,0x73,0x9e, + 0xf6,0xfa,0x86,0xa1,0x05,0x8d,0x02,0x76,0x57,0x13,0xcd,0x69,0x16,0x2d,0xc9,0xcd, + 0xb5,0x74,0x34,0x5e,0xe9,0x62,0x5b,0x61,0xf2,0x8a,0x07,0xf3,0x2a,0xcc,0x54,0x7f, + 0xdb,0xde,0x79,0x72,0x4d,0xfe,0xeb,0x22,0x9a,0x79,0x4a,0xe8,0x90,0xf1,0x61,0x65, + 0xae,0x29,0x04,0x1f,0x02,0x06,0xc1,0x4d,0x10,0x19,0x88,0x19,0xda,0xad,0x87,0xb4, + 0xf2,0x0f,0xa3,0x6d,0xf2,0xb8,0xe4,0x3c,0x62,0x0e,0xeb,0x8d,0x20,0x9a,0x6c,0x3f, + 0x59,0xec,0xee,0x2c,0xc8,0x35,0xdf,0x45,0x19,0x95,0x43,0x5a,0x7e,0xe9,0xc1,0x2d, + 0xe8,0x0a,0xca,0x88,0xfe,0xe4,0x63,0x30,0x13,0xf2,0x47,0x32,0x54,0x88,0x4a,0x9a, + 0x87,0xc6,0x66,0x72,0x46,0x57,0x8c,0x6e,0xda,0xcd,0xed,0x9d,0x36,0xbc,0x21,0x56, + 0x2d,0x45,0x92,0x23,0x29,0x45,0x60,0x74,0x47,0x58,0x58,0x71,0x71,0x56,0xcc,0x10, + 0xd4,0x30,0x92,0x54,0x72,0xa3,0x5f,0xb5,0xcc,0xc7,0xd3,0x16,0x1f,0x8a,0xb6,0x06, + 0x46,0xc1,0x81,0x96,0xfa,0xcb,0x7e,0xc4,0x89,0x91,0x26,0x3a,0x43,0xaa,0xea,0x56, + 0xd7,0xfd,0x82,0x06,0x9d,0x61,0x0a,0x1e,0x69,0x1a,0x2a,0x0b,0xdb,0x1d,0xf4,0xf3, + 0xa1,0x7e,0x96,0xb6,0x03,0xc1,0x3b,0x15,0xa9,0xe2,0x1b,0xb0,0xb5,0x1a,0x1a,0x0b, + 0x36,0x03,0xe9,0xc6,0xa5,0xf4,0x11,0xc8,0x36,0x13,0xfd,0x72,0x22,0x3e,0xf4,0x71, + 0xf1,0x19,0x7d,0xe0,0xec,0x6c,0x70,0xba,0xd4,0x98,0x23,0x5a,0x2d,0x07,0x2d,0xc2, + 0x53,0xf2,0x86,0x8b,0xc0,0x68,0xd3,0xfc,0x0b,0x76,0x4f,0xd8,0x31,0x58,0xae,0x0c, + 0x87,0xa4,0x51,0xc3,0xcc,0xdb,0x9a,0x8c,0x87,0x20,0xeb,0x39,0x52,0x22,0xa4,0x34, + 0x91,0x12,0x41,0x85,0x30,0x97,0xe3,0xbc,0xb2,0x0c,0x8a,0xd1,0xfd,0xb2,0xcb,0xd2, + 0x57,0x2c,0xde,0x48,0xba,0xcb,0x55,0xb4,0xdb,0x05,0x3a,0x78,0xd2,0x8e,0x72,0x2c, + 0x49,0x55,0xd7,0xe6,0x1d,0x78,0x6b,0x09,0x93,0xf8,0x6a,0xac,0xc3,0x44,0x7b,0xe8, + 0xd9,0x4a,0x3c,0xa3,0x1e,0x86,0x27,0x1c,0x61,0xf2,0x3b,0x01,0x4f,0x99,0x91,0x4f, + 0x1e,0xdd,0x2e,0x01,0x9a,0x42,0x0d,0xbc,0xbc,0xac,0xcf,0x70,0x31,0x66,0xd5,0x45, + 0x5f,0xb2,0x08,0x2c,0x1a,0x4e,0xd3,0xa5,0xd0,0x30,0x3f,0xa5,0x4d,0x5b,0xfd,0x62, + 0x4e,0x6d,0xab,0xaa,0x18,0x03,0xd7,0x1b,0x82,0xd3,0x9f,0x11,0xc9,0x70,0xf6,0x59, + 0xd6,0x7d,0x3b,0xad,0x9e,0x93,0xfc,0x55,0x8d,0x36,0x62,0xdf,0x80,0xbc,0x4e,0x2c, + 0xb0,0xe0,0xcc,0x48,0x5a,0xa3,0xc3,0xef,0xd9,0x80,0xf0,0xc9,0xcc,0x09,0x55,0x3d, + 0xc0,0x75,0x3d,0x82,0x87,0x35,0xce,0x1f,0x21,0x81,0xc8,0x59,0x6c,0x2f,0x6c,0x57, + 0x62,0xbb,0x8c,0x16,0x6b,0xc6,0x32,0x63,0xbd,0x82,0x97,0x08,0x2a,0xcb,0x28,0x59, + 0x44,0x27,0xb8,0xb7,0x5c,0x94,0x22,0x3f,0xb2,0xbb,0x19,0xcd,0xf9,0xf1,0xa2,0x70, + 0x8c,0x9f,0x28,0xf7,0x5f,0x90,0x60,0xe5,0x5f,0xed,0x56,0xfd,0xd3,0x16,0xf7,0x40, + 0x5c,0x9d,0x98,0x39,0xab,0xec,0xf3,0x1f,0xf7,0x23,0xfb,0x41,0xc1,0xed,0x39,0x4a, + 0xe6,0xd9,0x0c,0xba,0x0b,0x97,0x1a,0xdd,0x29,0x4c,0x58,0xa6,0x7c,0xd7,0x9d,0x52, + 0x61,0xa0,0xec,0x1e,0xac,0x60,0x4e,0x30,0x3b,0xb1,0xa5,0x04,0x3f,0x17,0xe8,0x2b, + 0x9c,0x97,0xd5,0xcc,0xaa,0x79,0x8d,0x0f,0xcc,0x3d,0x79,0x1b,0x05,0xe4,0xe5,0xdb, + 0x2c,0x42,0x6c,0x88,0x9e,0x9c,0x6c,0x5d,0x18,0xbf,0xaf,0xdb,0x36,0xb3,0xaa,0x36, + 0x70,0xae,0x45,0xd9,0xcc,0x0d,0x7e,0x8d,0xb3,0x74,0x46,0xe3,0x0c,0xde,0x7d,0x5c, + 0x5d,0x87,0x9f,0x7d,0x5c,0xa2,0x67,0xbc,0x3e,0x50,0xbf,0x89,0x59,0xf4,0x91,0x1a, + 0xf9,0xaa,0xf7,0x59,0x16,0x4b,0xaa,0x83,0xf2,0x44,0x64,0x64,0x02,0x55,0x04,0xa8, + 0xb8,0x12,0xef,0x9d,0x16,0xa2,0x78,0xa1,0x1d,0xba,0x99,0x90,0x72,0xcd,0x49,0xeb, + 0x33,0x1a,0x08,0xc6,0x32,0x30,0xb6,0x11,0x07,0xdb,0x4b,0x03,0x1d,0xa7,0x57,0x80, + 0x0b,0x0f,0xf5,0x4e,0x68,0x03,0xbd,0x0c,0x0d,0xc9,0x45,0x15,0x28,0x22,0xb9,0xe8, + 0x5b,0x08,0xe9,0x6f,0x9d,0x7f,0x84,0x46,0x36,0x58,0x6e,0xc2,0x1c,0x1f,0x79,0x7d, + 0xe2,0xdd,0x3b,0xc0,0x96,0xbe,0x9b,0x92,0x5a,0x24,0x1f,0x4d,0x55,0x70,0xe2,0xba, + 0xb3,0x35,0x87,0xa4,0xda,0xe6,0xa9,0xc6,0x17,0x91,0xbc,0x00,0x3f,0x16,0x27,0xb4, + 0x9f,0x04,0x26,0x35,0xf8,0xc2,0xc6,0x5c,0x06,0x3c,0xf2,0x8f,0x7a,0xe5,0x1c,0xb4, + 0x5d,0x0d,0x70,0xbd,0x8e,0x5d,0xf0,0x93,0xca,0x12,0x0e,0x03,0x67,0x15,0x5b,0xd2, + 0x90,0x26,0xc1,0x34,0xbb,0x60,0x0f,0x46,0x60,0xe2,0x39,0x9f,0x7f,0x0a,0x45,0x34, + 0xde,0xf5,0x8b,0x34,0x8b,0x67,0x66,0x97,0xf9,0xe6,0x79,0x34,0x4e,0x45,0x72,0x2a, + 0xa1,0x4b,0x32,0x67,0x4e,0xba,0x52,0x59,0x33,0x18,0xca,0x16,0x5a,0xb3,0x20,0xcc, + 0x74,0x1f,0xd9,0x39,0x1c,0x70,0x84,0x19,0xc3,0xcb,0x67,0x7b,0xd0,0x7e,0xd5,0x79, + 0xca,0x68,0x0b,0x5d,0x6f,0x30,0xe9,0x53,0x0e,0xf9,0x2e,0xa5,0x8b,0xc2,0xa7,0xbe, + 0x9a,0xaa,0xba,0x7c,0x2b,0x64,0x6e,0xc1,0x93,0xad,0xd5,0x24,0xba,0x75,0xd4,0x68, + 0xce,0x58,0x75,0x2e,0xe9,0x28,0x0d,0x8c,0x56,0x5e,0xea,0x27,0x17,0x5c,0xb6,0x5e, + 0xb0,0x8b,0x1a,0xf4,0x1d,0x2e,0xd2,0x1f,0xe1,0xa4,0x7c,0xe7,0xa8,0x34,0x25,0x70, + 0x79,0x99,0xcd,0x9a,0x6a,0x09,0x8b,0x24,0xc5,0x32,0xb1,0xbe,0xd1,0x7a,0x57,0xbc, + 0x28,0x96,0x13,0xe5,0xbb,0x84,0x1a,0xa7,0xf4,0xe8,0x0c,0x82,0xe4,0xaa,0x7c,0xd7, + 0x4b,0x25,0xa9,0xfa,0x7e,0x72,0x29,0x44,0x43,0xd4,0xab,0xcf,0x3c,0xaf,0xc9,0x6c, + 0x57,0x06,0x5e,0xc0,0x4b,0x77,0x77,0x21,0x2b,0x97,0x45,0xe0,0xae,0xa2,0x07,0xb6, + 0xd9,0x80,0x4d,0xbf,0x90,0x18,0xdd,0x7c,0x62,0x85,0x29,0xcd,0xe9,0x29,0xfd,0x95, + 0x02,0xd0,0x6a,0x75,0xf7,0x73,0x6e,0xa6,0x44,0x8e,0x2f,0xf8,0xe0,0x25,0xe8,0xf0, + 0xcb,0xb8,0x5c,0x7a,0x5e,0x2b,0xa2,0x3a,0x92,0x76,0x9a,0xbb,0xbb,0x4f,0x64,0x7d, + 0xb7,0x64,0x59,0x33,0x4f,0x5d,0xac,0xec,0xde,0xa1,0xe6,0x10,0xc3,0x66,0x53,0x6b, + 0x4d,0xcd,0xc6,0x6f,0xaa,0xfd,0xf1,0x6b,0x3d,0x9f,0x82,0xb4,0xc3,0xb7,0x1a,0x42, + 0x3e,0xc1,0x1a,0x21,0x3e,0x69,0x4a,0x52,0x08,0xa4,0x21,0xb4,0xce,0xf7,0xec,0x13, + 0x1b,0xf9,0xa0,0x1d,0x35,0x71,0x60,0xb4,0xdb,0x61,0xa6,0xfd,0x27,0x6b,0x2f,0x71, + 0x1d,0xe3,0xe5,0xdf,0x22,0x4d,0x88,0xb0,0x74,0xf3,0xcc,0xe6,0xc1,0xb5,0x88,0x7b, + 0x65,0xc1,0x33,0xd6,0xe1,0x7e,0x24,0x2f,0x56,0xdc,0xb9,0x21,0xe1,0x17,0xd2,0xdb, + 0xb6,0x15,0x2b,0xca,0xf1,0x88,0x95,0x18,0xaf,0x7f,0x7d,0x8b,0xb3,0x1f,0x6c,0x22, + 0xe4,0x34,0xdc,0x9a,0x81,0x87,0x2d,0x23,0x99,0x5a,0x70,0x4b,0x72,0x31,0xa6,0xdd, + 0x94,0x66,0xaf,0x12,0x2c,0x6d,0x56,0x2b,0x85,0x01,0x80,0x5f,0x55,0xcc,0x84,0x38, + 0x05,0xaa,0x35,0x2d,0x3f,0x85,0x90,0x18,0xc6,0x4d,0x31,0x11,0x41,0x6b,0x79,0x58, + 0x59,0x5e,0x99,0x83,0x8b,0x41,0x1e,0x4d,0xf7,0x80,0x65,0x26,0x53,0x58,0x9d,0xd8, + 0xc4,0x0c,0xc9,0x42,0x06,0x12,0xe4,0xaf,0x90,0x99,0x2e,0x46,0x95,0xe8,0x79,0x42, + 0x4b,0x28,0x8c,0xc5,0x18,0xb0,0xf4,0xb3,0xa1,0x65,0x55,0xf3,0x26,0xdf,0xc1,0x6d, + 0xcc,0x2b,0x2b,0xaa,0x8b,0xc5,0xa2,0xa2,0x87,0x68,0x11,0x71,0x63,0x36,0xa1,0xd1, + 0x31,0x5a,0x9e,0x14,0x4e,0x66,0x83,0xfe,0xc7,0x42,0x57,0x13,0x2e,0x68,0x36,0xe8, + 0x0d,0x75,0x12,0x92,0xcf,0xab,0x72,0x95,0xd4,0x03,0x4e,0x45,0xac,0xd3,0xb9,0xa0, + 0x30,0x59,0x58,0x72,0x1c,0x98,0x59,0x68,0x76,0x4d,0x46,0xb9,0x5e,0xce,0x93,0xde, + 0x05,0x9f,0x8b,0x0a,0x6c,0x29,0x65,0x22,0x91,0x26,0x30,0x5e,0xb7,0x5d,0x60,0xdd, + 0x99,0x28,0x34,0x58,0xc1,0x69,0x01,0x9c,0x69,0x28,0x0b,0xa9,0x09,0x3e,0x18,0xc9, + 0xc5,0x23,0x6c,0x58,0xf4,0xae,0x83,0x52,0x7c,0x45,0x1d,0x33,0xd2,0x8f,0x44,0xf5, + 0xd5,0xac,0x07,0x8b,0xf5,0x05,0xa6,0x5a,0xaf,0xd6,0x05,0x99,0xf6,0xcd,0x6d,0x29, + 0xa6,0x1f,0x69,0x72,0xdb,0x53,0x42,0xfd,0xf0,0xe6,0xf9,0xbb,0x1f,0xad,0x2a,0xca, + 0x44,0xfb,0x29,0x46,0x76,0x17,0x5c,0x93,0xf4,0xd3,0x0c,0x7e,0xc0,0xa9,0x9a,0x90, + 0x0d,0x2f,0x86,0x70,0x43,0xbf,0x6e,0x6b,0x8c,0xbc,0xf3,0x65,0x74,0xf3,0x95,0xe8, + 0x0e,0x57,0xa0,0x3b,0xeb,0x89,0x5b,0x58,0xce,0xd4,0x1b,0x1b,0x6b,0x43,0x9c,0x1d, + 0x42,0xb4,0x27,0xed,0xae,0xb1,0x2e,0x9c,0x0c,0x59,0xa1,0x67,0xb3,0xb3,0xa6,0x28, + 0xc0,0x41,0x82,0x96,0xa0,0x69,0x12,0x80,0x8b,0x04,0x73,0xc7,0x3e,0xef,0x9a,0xdb, + 0xed,0x8c,0xfa,0x3e,0xf6,0x75,0x80,0x3f,0x1f,0xd0,0x0c,0xb2,0xe3,0x21,0x41,0xa2, + 0x22,0x19,0xd7,0xe0,0xe8,0x9d,0xe0,0x18,0x59,0x0a,0xcb,0x22,0x12,0x9b,0x23,0xda, + 0x89,0x33,0x16,0xd7,0x9d,0x88,0xac,0x06,0x3f,0xf7,0xca,0x04,0xb2,0xab,0x1a,0x19, + 0xc1,0x9c,0x8c,0x3f,0xec,0x8f,0xfa,0x65,0x8b,0x8f,0xa9,0xde,0x9c,0x09,0xc4,0xb3, + 0xdc,0x35,0x21,0xa2,0xe9,0xee,0x07,0x85,0x23,0x27,0xd0,0x73,0x74,0xeb,0xf4,0x46, + 0x7d,0x08,0x5c,0x50,0xc6,0x33,0x98,0xea,0x89,0x2b,0x01,0xd8,0x41,0xd1,0x47,0x06, + 0xca,0xf1,0x97,0xe3,0xaf,0x02,0x98,0x5f,0x9e,0x92,0xa3,0xe5,0x7a,0xd7,0x90,0x41, + 0x18,0x8a,0x8b,0xda,0x38,0x14,0x1e,0x29,0xa5,0x90,0xff,0xe1,0x94,0x5e,0x84,0xaa, + 0xc6,0x76,0x4d,0x1c,0x68,0x35,0xa7,0xc8,0xd4,0x79,0x77,0x42,0x31,0x36,0xbe,0x4d, + 0x34,0x43,0xb6,0x03,0x53,0x07,0xcf,0x3c,0xd1,0x65,0x4c,0x7e,0xe9,0x5c,0x59,0x51, + 0xf3,0xca,0x1f,0xa8,0x07,0x14,0xbd,0x31,0xfb,0x3b,0x1b,0xb4,0xa0,0x7f,0x9f,0x93, + 0xb3,0x93,0xc8,0xf9,0xb7,0xb5,0x85,0xb9,0x80,0xa7,0x6f,0x74,0x19,0x59,0x9b,0x07, + 0x25,0x26,0xdb,0x02,0x67,0x89,0x2c,0x35,0x74,0x23,0x76,0xa7,0xca,0xce,0x20,0x80, + 0xa4,0xbf,0xc1,0x9e,0xc3,0xb5,0x86,0x61,0x44,0xdc,0xe0,0xa3,0x5e,0x1c,0xbb,0xce, + 0x6d,0xa4,0xb2,0xfc,0xfd,0xd2,0x70,0x7a,0x1f,0x23,0x82,0x9c,0x01,0x7d,0x47,0xb6, + 0x46,0xb3,0x6b,0x32,0x72,0xb9,0x76,0x83,0xf3,0x5f,0x19,0xab,0x22,0xfe,0x9e,0xf2, + 0xdf,0xd5,0x81,0x32,0xab,0xbe,0xb4,0x3c,0x70,0x53,0x53,0xce,0x7c,0x25,0x49,0xf3, + 0x90,0xa4,0x39,0x93,0x34,0x27,0x92,0xe6,0xb5,0x24,0xf1,0xf7,0x74,0xfe,0xe5,0x24, + 0xcd,0x2d,0x49,0xd6,0x88,0xe5,0xe0,0xd5,0x9b,0x43,0x9e,0x86,0xcc,0xc5,0x8d,0xcc, + 0x3c,0xa8,0x64,0x20,0x42,0x06,0x25,0x9f,0x5e,0x94,0xa4,0xf9,0x55,0x99,0xf7,0x9c, + 0x36,0x86,0x10,0xf2,0x75,0x67,0xc4,0x2b,0xaf,0xf9,0x86,0x37,0xd6,0x2a,0x3c,0x7e, + 0xbc,0xfb,0xb8,0x1b,0xb5,0x21,0xce,0x97,0x11,0x05,0xe4,0x8d,0xfc,0xa3,0x11,0x4a, + 0x9e,0xc9,0xae,0x59,0x1f,0x15,0x9d,0xdd,0xb3,0xeb,0xa3,0x7c,0x98,0x13,0x7e,0xcc, + 0x02,0xfc,0x1b,0x25,0x2a,0x39,0x44,0x27,0x24,0x0b,0x90,0x16,0x40,0x25,0xf1,0x54, + 0xa1,0x69,0xf7,0x60,0x29,0xe7,0x57,0x9e,0x30,0x86,0x34,0xa0,0xb3,0xa8,0x68,0x91, + 0x19,0xde,0x0d,0xb6,0x20,0xb7,0x5b,0x37,0x62,0x5f,0x43,0x0f,0xb0,0x25,0x30,0xf4, + 0xd1,0xd2,0x43,0xea,0x60,0x5e,0xcc,0xfe,0xf3,0xf7,0xc3,0x48,0x5f,0x71,0xd4,0x20, + 0x6b,0x63,0x19,0xbd,0xe8,0xef,0x3c,0x7e,0xbc,0xfd,0x67,0xfa,0x86,0xf0,0x91,0x64, + 0x77,0x3e,0xfe,0x64,0x24,0x31,0x41,0xa1,0x8b,0x7e,0x6c,0xd6,0x4e,0x60,0xc7,0x62, + 0xad,0x02,0x65,0x07,0x21,0x50,0x32,0x3e,0x38,0xce,0x22,0x3e,0x05,0xdb,0x3f,0xf8, + 0x2b,0xc9,0x53,0xbc,0x81,0x2a,0xb7,0x68,0x3e,0x7c,0xec,0x1f,0x60,0x1c,0xfe,0xf7, + 0xdb,0x17,0x07,0x79,0x0c,0x5d,0x30,0xd5,0x75,0x4a,0xfb,0x9e,0x22,0x9b,0x5f,0xcf, + 0x3f,0xc0,0x60,0x8f,0x8a,0xc8,0x44,0xbc,0xce,0x3e,0xce,0xa6,0x1f,0x28,0x99,0x7f, + 0xd1,0xe7,0xb2,0x1e,0x15,0xf1,0x01,0xb9,0xb0,0x99,0xa2,0x99,0xa1,0x77,0x5a,0x64, + 0xa2,0xdc,0xe8,0x11,0x38,0xed,0x46,0xe6,0xa4,0x85,0xce,0x68,0x59,0xfb,0x20,0xdc, + 0x8a,0x9d,0x21,0x6e,0x4b,0xdf,0x7f,0xf3,0xeb,0xdb,0xe7,0xaf,0x5f,0xbe,0x79,0xad, + 0xb6,0x4e,0xc1,0xa9,0x8c,0x1e,0x3b,0xaf,0x3a,0x8a,0xa9,0xb7,0xfe,0x38,0x97,0x03, + 0xd0,0xfb,0x1b,0x70,0xfc,0x8b,0xd6,0x1a,0x35,0x36,0x24,0xfc,0x14,0xe0,0x25,0x47, + 0x44,0x53,0xa3,0xbf,0xd6,0xc9,0xaa,0x8c,0x4a,0xbd,0x3b,0x87,0xbe,0xc6,0xdb,0x9b, + 0x33,0xb1,0xee,0xd2,0xc3,0x32,0x1a,0x6e,0x4c,0x00,0xa0,0x3c,0xcd,0x18,0x54,0x9f, + 0xa8,0x6d,0x87,0xe6,0x3f,0xf0,0x99,0x34,0xa8,0x11,0xa0,0x25,0xdf,0x60,0xc4,0x19, + 0xf8,0x24,0x83,0x84,0x39,0x85,0xe8,0x44,0xf2,0xc1,0xcb,0x7d,0x36,0x81,0xbe,0x53, + 0x49,0x28,0x64,0x73,0x67,0x51,0x39,0x26,0x1c,0x8a,0x06,0x35,0x8a,0xe4,0x4b,0xa4, + 0x9f,0x90,0x93,0x68,0xc7,0x5e,0xc0,0x82,0x99,0xf1,0xa2,0x87,0xa2,0xea,0x7d,0x11, + 0xe6,0x5b,0x83,0x29,0xce,0x44,0x04,0x11,0x75,0xdc,0x4a,0xe7,0x64,0x89,0x05,0x3d, + 0xe8,0xaf,0xe8,0xc0,0xf8,0x65,0x8b,0x84,0xc1,0xb5,0x8e,0x65,0xff,0xcc,0x5c,0x51, + 0x6b,0x66,0xe2,0x10,0x40,0x04,0x3f,0x9e,0xf4,0xa4,0x15,0xcf,0x1d,0xa3,0x65,0xce, + 0x64,0x50,0x61,0x88,0x40,0x8f,0x69,0x0a,0x50,0x2b,0x2e,0xd1,0x8a,0x9b,0x82,0xf6, + 0x01,0xb8,0xbe,0x24,0xe4,0x61,0x81,0xd1,0x9e,0x5e,0x4b,0x31,0xba,0xbf,0xc6,0x00, + 0xad,0xc3,0x50,0x29,0x6d,0x06,0x63,0x66,0xe7,0x84,0x36,0xf0,0xe3,0x10,0x56,0x74, + 0xdf,0x62,0x4c,0x4d,0x6e,0x65,0x46,0x1a,0x4a,0x37,0x3c,0x5d,0x37,0xfd,0x66,0xc4, + 0x64,0xbc,0xbb,0xa0,0xb5,0x4c,0xf5,0xd7,0xba,0x42,0x4e,0xc6,0x6b,0xa8,0xe0,0x21, + 0x0c,0xd5,0x3c,0x7e,0x57,0xc1,0x45,0x06,0x2e,0x52,0x40,0xdb,0x68,0x4c,0x5e,0xef, + 0xca,0x61,0x89,0x91,0x8c,0x4b,0xed,0x28,0xfa,0xce,0x78,0xf4,0xab,0xf2,0xac,0x13, + 0x69,0xc2,0x53,0x34,0x79,0x73,0x32,0x63,0xcf,0x01,0xcf,0xa2,0xa7,0x50,0xcc,0x3e, + 0x8b,0x9d,0x43,0x38,0xcb,0x66,0x97,0xbf,0x9a,0xbd,0x2d,0xa0,0x6c,0xf2,0xaa,0xdd, + 0x04,0xc7,0x6f,0xd0,0x5f,0xc2,0x78,0x10,0xe6,0x2f,0x32,0x8b,0x1a,0x42,0x00,0xa9, + 0x7d,0xc4,0x98,0xd2,0x64,0x15,0xad,0xdc,0x43,0x8a,0x51,0x31,0xfb,0x88,0xc3,0x30, + 0xd5,0xa0,0x4d,0xc6,0x5b,0x22,0xcf,0x86,0x96,0x95,0x18,0xa2,0xbc,0xd5,0x05,0xea, + 0xc0,0x98,0x12,0xcf,0x83,0xb1,0x38,0xa6,0xd7,0x63,0x96,0xb5,0x36,0x7a,0x83,0x92, + 0x1d,0xa5,0xba,0x47,0xf8,0x64,0x3f,0xa0,0x27,0xf7,0xb2,0xe7,0xd2,0x49,0xc3,0x98, + 0x31,0x44,0xc9,0x4f,0x18,0xc3,0xd5,0xe1,0x73,0x47,0xd6,0xce,0xef,0xdb,0xdf,0xb7, + 0x53,0x7b,0x94,0xaf,0x68,0xf0,0x58,0x87,0xc5,0xda,0x32,0x8a,0x36,0x0c,0xa3,0x00, + 0x62,0x83,0x6c,0xbd,0x44,0x59,0x0a,0xbe,0x1c,0xee,0xbf,0xb5,0xbc,0xa5,0x25,0x59, + 0x6d,0x52,0xbf,0xde,0x5e,0xf5,0x0b,0x4d,0x46,0xc3,0x6a,0xa7,0x6b,0xcd,0x93,0xfa, + 0x35,0x8a,0xd6,0x3b,0x8d,0x93,0xee,0x9f,0x49,0x6d,0x94,0xd6,0x66,0xb3,0xc6,0x92, + 0xee,0x5c,0x86,0xc4,0xc9,0xac,0x57,0x99,0x4e,0x8a,0x93,0x9c,0xda,0xda,0x85,0xe6, + 0x96,0x41,0x4e,0xff,0x74,0x37,0x33,0x4a,0x80,0xdb,0x15,0xa8,0xc6,0xd8,0x90,0x0e, + 0xab,0xb5,0x51,0x0e,0x9e,0x41,0xae,0xae,0x7c,0x76,0xfd,0xad,0x47,0x40,0x1d,0xca, + 0xe8,0x48,0xb5,0x3a,0xb0,0x69,0x91,0x94,0x28,0xa1,0xe7,0xa6,0xd9,0xfc,0x3b,0x39, + 0xbf,0xc2,0x9c,0xe5,0xab,0xcd,0x51,0x36,0x8e,0x6b,0x64,0x90,0xff,0x2b,0x1a,0x73, + 0xfc,0x7f,0xc6,0x1c,0xa1,0x65,0x84,0x2b,0x0a,0x4d,0x67,0x83,0x4b,0xcc,0x7a,0x2a, + 0x10,0xaa,0x15,0xc6,0x4a,0x1b,0x90,0xa8,0xde,0x50,0x62,0xbd,0x6d,0x48,0xb4,0xde, + 0x36,0xe4,0x0b,0x6d,0x2c,0xa2,0x7f,0xdd,0xc6,0x22,0xfa,0x0a,0x1b,0x0b,0x45,0xb0, + 0xe6,0x40,0xff,0xeb,0x4c,0x2d,0xb4,0xfa,0x77,0x5b,0x5a,0x7c,0xbd,0x2a,0xea,0x8b, + 0xf5,0x4e,0xa1,0x85,0xc7,0xbe,0x35,0x25,0xa4,0xb2,0xec,0xec,0xfc,0xf5,0x87,0x74, + 0x75,0x07,0x80,0xa1,0x31,0x76,0x62,0x1e,0x74,0x52,0x14,0xeb,0xc2,0x9a,0x93,0x04, + 0x1d,0x3f,0xb3,0xc9,0x5c,0x0e,0x9d,0xec,0xf8,0xd4,0xa4,0x28,0x69,0xab,0xa5,0x90, + 0x51,0x8d,0x62,0x59,0xd5,0x8d,0xb1,0xa0,0x6c,0x2f,0xfe,0x4c,0x67,0xe0,0xdf,0xb7, + 0x17,0x3b,0xdf,0x19,0xe9,0xc8,0x1a,0x8f,0x9a,0x61,0x62,0xad,0x4d,0xdd,0x63,0xe7, + 0xc0,0x96,0xd6,0x42,0x85,0x66,0xa4,0x28,0xc5,0x14,0xf9,0x65,0x16,0xb2,0x96,0x9c, + 0xd0,0x28,0x76,0xc9,0xfe,0x35,0xe4,0xce,0x5d,0x07,0xff,0x0c,0xcf,0x67,0xff,0x10, + 0xc6,0x56,0x5a,0x85,0xdc,0xff,0x1c,0x3e,0xba,0xfb,0x1c,0xfe,0x8e,0xe3,0x68,0xe5, + 0x1a,0x31,0xc2,0x1c,0xa9,0x63,0xf6,0x59,0x73,0x80,0x1f,0x76,0x33,0x73,0x70,0xbf, + 0x60,0xc3,0xf0,0x7f,0xef,0x31,0x76,0x70,0xd4,0x1c,0x25,0xf4,0xd8,0x84,0x7e,0x64, + 0x3a,0xad,0xef,0xb1,0xbe,0x3a,0x94,0x48,0x7a,0x59,0x56,0xeb,0x66,0x62,0x5d,0x5a, + 0xe1,0x16,0xdc,0x84,0xef,0xf2,0xb1,0xe3,0x93,0x57,0x40,0x2e,0x8e,0x4f,0x38,0xf8, + 0xb1,0xe6,0x88,0x6f,0x3d,0x5c,0x14,0x65,0xab,0xd4,0xeb,0x95,0x21,0xea,0xd4,0xa0, + 0x56,0x7b,0xcc,0x3a,0x47,0x1f,0xea,0xf0,0xd8,0x3a,0x5f,0x20,0xc7,0xcb,0x09,0xf9, + 0xfd,0x18,0xe1,0x11,0xe7,0x42,0x0b,0x3d,0x8a,0x5a,0x98,0xd1,0xf9,0xde,0x9c,0xa2, + 0x57,0xbe,0x3a,0x8e,0xda,0xc7,0xa9,0x75,0x80,0xcf,0xd6,0x7b,0xf9,0xb2,0x00,0x61, + 0x7c,0xac,0x2c,0xc5,0xff,0x54,0xea,0xd6,0xf8,0x95,0x4b,0xc4,0x5b,0x48,0x62,0xa6, + 0x85,0x85,0x39,0x1a,0x5f,0x18,0x17,0x23,0xec,0x5c,0x44,0x3a,0x17,0xff,0x94,0x0b, + 0xa3,0x78,0xc0,0xe9,0xc1,0x82,0xcf,0x3f,0x16,0x7a,0x00,0xb4,0x10,0xf7,0x23,0xe2, + 0x78,0x84,0xce,0xec,0xd2,0xb0,0x56,0x55,0x75,0x93,0xf7,0xe6,0xec,0x2d,0xdd,0x63, + 0x3e,0xd0,0x7b,0x75,0x20,0x96,0xee,0xa5,0xdf,0x78,0xb5,0xdf,0x40,0xa5,0xc5,0x39, + 0xd6,0x27,0x61,0x85,0x32,0x16,0x1f,0x54,0x0d,0x48,0x0d,0x94,0xdf,0xb0,0xc6,0xb6, + 0xd3,0xdc,0xce,0xe6,0x27,0xc3,0x0e,0x39,0xdd,0x82,0x98,0x24,0xbf,0xd7,0x48,0xed, + 0xcf,0x68,0x1e,0xe8,0xc4,0x71,0x56,0x5e,0x7c,0x44,0x32,0x6d,0x36,0x91,0x8c,0x18, + 0x2d,0x1d,0xb9,0x0f,0x8c,0x7d,0xd9,0xd8,0x3c,0xd3,0x90,0x93,0xa7,0x5b,0xbf,0x8b, + 0x1d,0x82,0x51,0xaa,0xa5,0xe5,0x11,0xc5,0x7e,0x40,0x8f,0x4c,0x27,0xcb,0x2a,0xe7, + 0x33,0x99,0x6d,0x89,0xcc,0x78,0xa4,0x3a,0x36,0x37,0xe7,0x3b,0x46,0x0d,0x6a,0xd5, + 0xcc,0x79,0x5e,0xa1,0xd2,0xbe,0x85,0x8f,0x54,0x11,0x69,0xf9,0xaa,0x93,0xe6,0x61, + 0x57,0xd4,0xeb,0x92,0x49,0x05,0xb2,0x57,0xa3,0xe6,0xea,0x54,0x97,0xfb,0x52,0xdb, + 0x5b,0xaa,0x4e,0x5e,0xdf,0x41,0x80,0x97,0xda,0xb5,0xcc,0x3f,0x1d,0xed,0xc2,0xe7, + 0xd5,0x4d,0xdc,0xc0,0x53,0x23,0xbe,0x8d,0xcd,0xdd,0x4a,0x6a,0xa2,0x9d,0x63,0xba, + 0xad,0xbb,0x93,0xce,0xa5,0x85,0x64,0x03,0x04,0x38,0x9a,0x9c,0x3e,0x1d,0x6d,0x1f, + 0x1f,0xa7,0x2e,0xdc,0xb6,0x85,0x2b,0x15,0x8e,0xf0,0x45,0x31,0xc3,0x36,0x50,0x18, + 0x32,0xdc,0xd6,0xb8,0xf1,0x22,0x7a,0xbc,0x32,0x82,0x5b,0xe8,0xd8,0x02,0xe8,0xcd, + 0xf8,0x3a,0x47,0x5f,0x40,0xeb,0x94,0x1d,0xe6,0x8f,0x2c,0x02,0x4d,0xa1,0x03,0xfb, + 0xed,0xdd,0x6e,0x14,0xf8,0xf9,0xba,0x8d,0x99,0xc0,0xca,0xe3,0xd0,0x98,0x3c,0x0e, + 0x8d,0x5d,0x8f,0x43,0x63,0xf6,0x38,0xa4,0x5a,0xe9,0x65,0xc6,0x9e,0xf1,0xc8,0xb3, + 0x8d,0x45,0xc1,0x12,0x89,0x07,0xd4,0xfe,0xaa,0x67,0xd5,0x9b,0xda,0x7e,0x75,0xc5, + 0x39,0xd1,0xb8,0x11,0xb7,0xe2,0x06,0x32,0x64,0xea,0x84,0x88,0x92,0x22,0x24,0x81, + 0xd5,0x41,0x15,0xc3,0x3c,0x80,0xac,0xcf,0xa7,0x41,0x37,0xa4,0xc7,0xe5,0xf3,0xae, + 0xed,0x98,0xda,0x2d,0x1d,0x07,0xee,0x41,0xb0,0xa1,0xc1,0x0b,0x72,0x43,0x9f,0xd0, + 0x60,0x34,0x5d,0x66,0x94,0xd3,0x73,0x8b,0x1d,0xe5,0xd1,0x04,0xe3,0x78,0x20,0x4a, + 0xde,0x5f,0x35,0x68,0x70,0x9b,0xb8,0xa9,0xc2,0x87,0x11,0x11,0x40,0x95,0x57,0x85, + 0x7d,0x6a,0xe7,0x4c,0xa4,0x84,0x01,0xb0,0x3c,0x07,0xf1,0x58,0x24,0x6f,0x53,0x58, + 0xa9,0xd0,0xc1,0x10,0x55,0xd9,0x28,0x7d,0xc5,0xde,0x0c,0xcd,0x64,0xf1,0x87,0xcc, + 0x8d,0xd8,0x12,0xb3,0x02,0x55,0x1c,0x95,0x72,0xda,0xce,0x31,0x38,0xf7,0x92,0x3b, + 0xbb,0xa8,0x21,0x30,0xf9,0x1d,0x47,0x31,0x06,0x9d,0x75,0xef,0x28,0xde,0x26,0xf4, + 0x3b,0xf4,0xff,0x2e,0xfd,0xff,0x88,0xfe,0x7f,0x4c,0xff,0x3f,0x89,0x33,0x44,0x33, + 0x40,0x78,0x01,0x44,0x43,0x88,0xb7,0xdb,0xf8,0x03,0xc8,0x6d,0x80,0x6e,0xef,0xc6, + 0xc7,0x1d,0x2e,0xd1,0xce,0xf6,0x3a,0x46,0x97,0x3c,0xf0,0xe3,0xab,0xfa,0x71,0x12, + 0x37,0x57,0x42,0x63,0x49,0xae,0xf7,0xa5,0x47,0xd1,0x8b,0xd6,0x57,0xd3,0x69,0x1c, + 0xdb,0x47,0x55,0x8f,0x2f,0xe2,0xd4,0x94,0x6a,0xfb,0xf5,0x1f,0x54,0xc6,0x1f,0x4f, + 0xfd,0x93,0x5e,0x2d,0xed,0x0f,0x94,0x66,0x5c,0xef,0xf8,0x10,0x47,0x7f,0x88,0xcf, + 0xac,0x13,0xe1,0x3a,0x15,0xb5,0xb9,0x59,0x9d,0xe2,0x9c,0x60,0x3a,0x57,0x82,0x4e, + 0x8e,0x1e,0x1d,0xef,0xe1,0x4f,0x1d,0x11,0x2e,0xef,0xc3,0xbe,0x46,0x8e,0x97,0x68, + 0xda,0x2c,0x33,0xa8,0xe8,0x84,0x0a,0x68,0xc8,0xf8,0x4a,0x3d,0xf4,0x42,0x4d,0x7a, + 0x51,0x6d,0x7f,0x6f,0xfe,0x62,0xdc,0xcf,0x29,0xa1,0x72,0xf9,0x3b,0x6d,0xe0,0x4d, + 0x2c,0xe4,0x7f,0xe6,0x20,0x7c,0xcf,0x9c,0xef,0x92,0xd2,0xd4,0xeb,0xd0,0x7d,0x1b, + 0x42,0xe8,0x94,0xb6,0xd7,0x73,0x0d,0xe8,0x0a,0x67,0xa6,0x97,0x28,0xa3,0x2f,0x47, + 0x57,0xaf,0xa9,0x1f,0xe6,0x44,0x52,0xb7,0xef,0xdd,0x41,0xc7,0x73,0x77,0x03,0xd8, + 0x71,0xdc,0x3e,0x26,0x47,0x1e,0x24,0xbe,0x24,0x7d,0xca,0xc7,0xfe,0x4b,0x12,0xa6, + 0x04,0x69,0x7c,0xd5,0x58,0x9d,0xa6,0x3d,0xa2,0x5d,0x28,0xbe,0xc8,0x4d,0x62,0xc9, + 0x83,0x77,0xd6,0x76,0xf3,0xab,0xf4,0x6b,0xae,0x5b,0xea,0xd5,0x6d,0xa9,0x26,0x55, + 0x27,0xee,0x87,0x5c,0xfc,0x0b,0x8d,0xa9,0xf4,0x46,0x2a,0xa9,0x4c,0x8d,0x3f,0xf2, + 0x15,0x1d,0xaa,0x98,0xe6,0xf2,0xf3,0xb0,0x52,0x9a,0x72,0xb9,0x9c,0xf6,0x3d,0xf1, + 0xc7,0x98,0x36,0x0e,0xe6,0x30,0x48,0x6f,0xa1,0x4d,0xd0,0x7e,0x48,0xfa,0xa1,0x07, + 0x18,0xea,0xc1,0x55,0xd6,0xc1,0x98,0xbd,0x17,0xd3,0x88,0xf5,0x22,0x4a,0x5b,0x58, + 0x6a,0xd9,0x8a,0xae,0xf2,0x73,0x09,0xdb,0x12,0x3a,0x44,0xe0,0x93,0x96,0xb8,0x41, + 0xab,0xf4,0x6c,0xfe,0x57,0x40,0xa5,0xdd,0x00,0xcc,0x13,0xf5,0x4c,0x44,0xee,0x44, + 0xcf,0x7d,0x25,0x71,0x83,0x26,0xa5,0xcb,0xbd,0xf7,0xfd,0xc6,0xfb,0x96,0xfe,0x71, + 0xdc,0x5e,0x9d,0x5d,0x31,0xd4,0x1e,0xb2,0xf2,0xcd,0x31,0xbd,0x86,0x05,0xe5,0x12, + 0xee,0x72,0xd9,0x1b,0x61,0xd6,0xe3,0x23,0x32,0x42,0xfc,0xc7,0xf4,0xc0,0xb7,0x98, + 0xe2,0x65,0xfa,0x0f,0xd4,0xcf,0x11,0xce,0xde,0x20,0xc4,0xc3,0xc8,0x1b,0x87,0x00, + 0x53,0xac,0x3a,0x06,0xad,0xb9,0xed,0x25,0x2e,0x4d,0x45,0xe9,0x1e,0x37,0x36,0xe2, + 0xf7,0xf6,0xba,0xdc,0x53,0xb2,0x10,0x7e,0x66,0xfc,0x2c,0xbd,0x37,0xea,0xa6,0xf7, + 0x71,0x8b,0x9e,0x9f,0x36,0x23,0x2e,0x9b,0x3e,0x4a,0x03,0x96,0x7a,0x04,0xf0,0xf1, + 0x62,0x80,0xf3,0x24,0x38,0xd6,0x2a,0x5b,0xe2,0x99,0x2d,0x20,0xee,0x10,0x97,0x8f, + 0x71,0x66,0x64,0xae,0xb1,0x95,0x17,0xa3,0x11,0x29,0xf6,0xe4,0x38,0xcf,0x9c,0x54, + 0x70,0x91,0x24,0xfc,0x00,0x2b,0x56,0x2f,0xdc,0xca,0x05,0xb6,0xa0,0x6b,0xfd,0x4c, + 0x58,0xac,0x07,0xfc,0x92,0x7b,0xc3,0xa1,0x51,0xd8,0x6e,0x6e,0x2e,0xc9,0xd1,0x37, + 0x46,0xba,0x6e,0x41,0x0a,0x4b,0xe9,0x81,0x4e,0x11,0x12,0x73,0x7e,0x75,0x6c,0xa3, + 0x46,0x6a,0x9f,0xb5,0xed,0x8d,0x53,0x87,0x38,0x13,0x40,0x37,0x99,0x18,0x1a,0x67, + 0x1b,0xd0,0x06,0x47,0x5b,0x66,0x63,0xea,0xff,0x53,0xc5,0xb3,0xa7,0x06,0x7e,0x3f, + 0x06,0x9f,0xb1,0xd0,0x62,0x5e,0x7d,0x16,0x85,0xff,0xa0,0x5e,0x8b,0x7a,0xba,0x83, + 0x11,0xe8,0xb2,0x82,0x7e,0xca,0x97,0x80,0x6d,0x2e,0x71,0xdd,0x53,0x07,0xef,0xec, + 0xd3,0x23,0xd9,0xc3,0x00,0xde,0x18,0xec,0x96,0x0a,0x17,0xaa,0x84,0x15,0x2e,0xd4, + 0xec,0x2a,0xea,0x24,0x64,0xeb,0x9e,0x51,0x66,0x47,0x35,0xff,0xa0,0xce,0x8e,0xcc, + 0xe7,0x50,0xb3,0x4a,0xd8,0x3a,0x1b,0xe6,0x6c,0x20,0xda,0xb2,0x4e,0x02,0x34,0x2f, + 0x5f,0x81,0xe0,0xe8,0xd6,0x24,0xa9,0xbf,0x1f,0x0b,0x16,0x02,0xb4,0xe7,0xa1,0x02, + 0x17,0x1e,0x87,0x12,0x5e,0x0c,0x3c,0xc7,0xc9,0x36,0xd7,0xd2,0x35,0xf8,0xb5,0xd5, + 0x5c,0xb6,0xfb,0x7d,0x3f,0x46,0xcb,0x38,0x56,0xb3,0x4e,0x75,0xa6,0x85,0x9c,0xda, + 0xe8,0xa1,0xbe,0xdd,0xfb,0xa2,0xd4,0x0e,0x8f,0x78,0x33,0x4e,0xea,0xb8,0x31,0x0b, + 0xf5,0xb4,0x4b,0x53,0x4a,0x8c,0x3e,0xaf,0x1d,0x1e,0xfb,0xe8,0xcf,0x3a,0x20,0x92, + 0xb8,0x61,0xf7,0x03,0x66,0x02,0x6f,0xc4,0xf6,0xbc,0xf5,0xd3,0x18,0x9e,0x2e,0x5b, + 0x3c,0x84,0xdf,0xf2,0x80,0x2f,0xa1,0x9a,0xa0,0x39,0x05,0x36,0xfe,0x18,0x9e,0xb0, + 0x44,0x46,0xd1,0x23,0x51,0x46,0xb2,0x6a,0xae,0x68,0xc9,0x41,0x61,0x44,0xea,0xf5, + 0xf9,0xa0,0x30,0x86,0xa8,0xc6,0x77,0x3d,0xc8,0xab,0x9d,0x45,0xc3,0x61,0x78,0x70, + 0xf1,0x11,0x71,0x25,0xec,0x26,0xf8,0x41,0x95,0x8d,0x76,0x3f,0x9e,0xbb,0x16,0x3e, + 0x4c,0x1b,0x8c,0x4b,0x75,0xed,0x12,0x8c,0x67,0x4a,0x23,0x64,0x84,0xa8,0x1e,0x41, + 0x10,0x33,0x3a,0x00,0x0a,0x57,0x87,0x16,0x25,0x93,0x3b,0x64,0x79,0x2c,0x86,0x14, + 0x13,0xc7,0x2f,0xed,0x15,0xbc,0x2a,0x26,0xe7,0xbd,0xcf,0xd9,0x3f,0xbc,0x48,0x22, + 0xff,0x30,0x62,0xc2,0xd6,0xfb,0xb2,0xb1,0xb5,0x24,0x0a,0x01,0xc6,0x93,0x85,0x30, + 0xab,0x98,0xb0,0x21,0xe4,0x54,0x92,0xd0,0x19,0x3b,0x28,0x9b,0x9a,0x3e,0x6d,0x7b, + 0xe1,0x89,0x6e,0xeb,0xc2,0x13,0x29,0x55,0xbf,0xb2,0x2c,0x4b,0x3b,0x5e,0xdd,0xf5, + 0xe5,0xf4,0xcc,0xce,0xd0,0xe8,0x38,0x92,0x96,0x13,0x10,0xc5,0x2b,0xa7,0x78,0x98, + 0x34,0x88,0x6f,0x86,0x66,0xfb,0x49,0xdd,0xa5,0xd3,0xbe,0x35,0x41,0x5b,0x58,0xa2, + 0xe3,0xd0,0xfe,0x82,0xb5,0x94,0x5c,0x97,0x9a,0x8b,0x20,0x04,0x72,0x38,0xc9,0x4b, + 0x5f,0x59,0x01,0x44,0x39,0xe1,0x1b,0x82,0x49,0xe0,0xe2,0x86,0xed,0x7e,0x35,0xde, + 0xdd,0x0d,0xb1,0xf3,0xbc,0x20,0xc1,0xcb,0xc7,0x24,0x36,0x38,0x15,0x53,0x86,0x13, + 0x28,0x42,0xda,0x29,0xe1,0x97,0xfd,0x43,0x41,0x10,0xea,0xc0,0x96,0x4b,0x33,0xcc, + 0x7d,0xfa,0xa8,0x4d,0x73,0xb8,0x36,0xd3,0x3c,0xa3,0x8c,0x29,0xbe,0x6b,0x36,0xbb, + 0x77,0x03,0x2a,0xc9,0xe3,0x71,0x03,0xc9,0xea,0x10,0xf6,0x49,0x3b,0x65,0xd6,0x68, + 0xcb,0x11,0x87,0x5c,0x50,0xe0,0xb5,0xc0,0x8f,0x00,0x2c,0x7c,0x74,0x1b,0x27,0xe4, + 0xa5,0xee,0x40,0xca,0x6a,0xff,0x41,0xf3,0x0c,0x35,0x4f,0xf2,0xfe,0xa0,0x91,0xe2, + 0xb7,0xf5,0x6d,0xb5,0x03,0x79,0x30,0x4a,0x5d,0x41,0xd3,0x6e,0x77,0x75,0x4b,0x83, + 0xbd,0x83,0x01,0x45,0xfa,0x9a,0x66,0xc5,0x7c,0xd7,0xa7,0x42,0x95,0x5a,0xad,0x52, + 0x73,0x44,0xfb,0x5e,0xe5,0x43,0x06,0xc3,0x99,0x7e,0x8e,0x24,0xb3,0xa7,0x27,0x19, + 0x89,0xd3,0x5a,0x34,0x94,0xe6,0x2f,0x4d,0x63,0xc4,0x99,0xe9,0x48,0xf4,0x19,0x51, + 0x93,0x6e,0x80,0xbb,0x61,0x00,0xb5,0x00,0xfa,0x46,0x36,0x6e,0x5d,0x4e,0xf4,0x3e, + 0xc9,0x87,0x5b,0xed,0x41,0xfc,0x29,0xe8,0x45,0x10,0xcd,0xd0,0x79,0x50,0xa7,0xe5, + 0x6e,0x73,0x69,0x4c,0x00,0xfd,0x4c,0x4b,0x5d,0x85,0x90,0x98,0xad,0x26,0x93,0x77, + 0x99,0x69,0x4b,0xbc,0xa6,0xd3,0x7f,0xe6,0x1c,0xf9,0x35,0xd7,0x9d,0xa5,0xcb,0x38, + 0xca,0xc8,0x9c,0x43,0x36,0x9d,0x33,0x41,0xa5,0xbe,0xd4,0xb7,0x2f,0xb0,0x62,0x73, + 0x93,0x11,0xd1,0x42,0xa0,0xb7,0xb3,0x94,0xbd,0xa2,0x8a,0x71,0x04,0x47,0x82,0x45, + 0x30,0x47,0x38,0x3b,0xca,0x70,0xd3,0xa4,0x9f,0x78,0x62,0xc0,0xb6,0x12,0x0e,0xc8, + 0x50,0x10,0x66,0xc6,0xc1,0x18,0xf3,0x41,0x08,0x25,0x8e,0xa7,0x89,0x13,0xc6,0x9c, + 0x4b,0xbd,0xc6,0x73,0x32,0x2d,0xfc,0x92,0xba,0x2e,0x1f,0xac,0xc5,0x20,0xd5,0x2d, + 0x65,0x55,0x33,0x32,0x96,0x4f,0x54,0xee,0x0b,0x3c,0xce,0xcb,0x33,0x7a,0x6b,0xae, + 0x9e,0x89,0xf7,0x62,0x5a,0x34,0x2e,0x8d,0xcb,0x27,0x5e,0x10,0x2f,0xc6,0x17,0x25, + 0xa4,0xd4,0xc4,0x80,0xc9,0xfe,0x98,0x00,0x55,0x84,0x05,0xb0,0x5e,0x00,0x81,0xfd, + 0x0b,0x49,0x2d,0x22,0xd4,0xa2,0x88,0x90,0xc5,0xb2,0x81,0x0e,0x58,0x2c,0x1a,0x90, + 0x6a,0xdb,0xac,0xbd,0x04,0x25,0x3a,0x5b,0x68,0x04,0xca,0x22,0xbc,0xd6,0x7c,0x0c, + 0x42,0xbc,0x52,0xe5,0x98,0x6b,0xed,0x6d,0x3f,0xee,0x8c,0x51,0xb8,0x5b,0xd7,0x70, + 0x55,0x4b,0xaa,0x31,0x5e,0x4d,0xcc,0xfe,0x82,0xc8,0xb2,0x18,0x61,0xd1,0xd5,0x66, + 0xd4,0x42,0xbf,0x73,0x56,0x1c,0x19,0x7c,0x74,0xa6,0x9a,0xfb,0x8b,0x95,0x8c,0x74, + 0x01,0xaf,0xbc,0x66,0xba,0x2b,0xa0,0xe7,0xb1,0xf7,0x3c,0x07,0x79,0x02,0x5d,0x33, + 0xf9,0x22,0x90,0x9b,0x9d,0x19,0xe0,0xb3,0x9f,0x67,0x61,0x1d,0xbf,0x23,0xf4,0x89, + 0x94,0xa6,0x04,0xd2,0x95,0x86,0x5f,0xe5,0x1b,0x82,0xb1,0x35,0x72,0x2f,0x1c,0x40, + 0xf9,0xd1,0x04,0xee,0x1e,0x68,0x94,0x37,0x44,0x04,0x78,0xd8,0x90,0x1c,0x7b,0xf1, + 0xd3,0x0b,0x0a,0x0f,0x80,0xf2,0x10,0x1c,0x80,0x9e,0x79,0x8c,0xa5,0x0d,0x94,0x21, + 0xe1,0x02,0x20,0x2a,0x16,0x34,0x34,0xc9,0x7f,0xd8,0xc0,0x04,0x88,0xc3,0x6b,0x2a, + 0xd1,0x05,0x34,0x44,0xb7,0xc4,0x14,0x90,0x91,0x4b,0x5c,0x72,0x43,0xba,0x75,0xf1, + 0xbe,0xca,0xb5,0x1c,0x7f,0xb4,0xbb,0xd1,0x76,0xd8,0x78,0x6f,0x49,0xc8,0x60,0x7f, + 0x85,0xdf,0xb8,0x7c,0x8f,0x5a,0xe5,0xc7,0xfa,0x50,0x36,0x15,0x0b,0x49,0xe9,0x39, + 0xa0,0xae,0x62,0x5a,0x10,0xf1,0x45,0xea,0xa3,0x18,0x4d,0xc6,0xd2,0x86,0x50,0xaa, + 0x11,0x90,0x90,0x42,0xb7,0x94,0x27,0x14,0xbd,0xf1,0x2a,0x5d,0x4a,0x49,0x6e,0xd8, + 0x90,0xa3,0x43,0x23,0xaf,0x07,0x31,0x30,0xbe,0x95,0xe9,0x2a,0x5c,0xfc,0x51,0xc5, + 0xbe,0x3d,0x07,0x40,0xa7,0xf2,0x97,0xb6,0xee,0x86,0x21,0x4d,0x49,0xa4,0x0e,0x9f, + 0xf4,0xc9,0x05,0x5d,0xbb,0xe3,0xc3,0x37,0xb7,0xd3,0x4e,0x62,0x60,0x1a,0xfd,0x46, + 0x80,0xec,0x3f,0xfc,0x77,0x60,0x55,0x9e,0x85,0x34,0x3d,0x67,0x67,0xbf,0x89,0x32, + 0xa8,0xc8,0x4d,0x56,0x9a,0x61,0xba,0x20,0xb3,0xf0,0x82,0x21,0x0f,0xc6,0xd3,0xdc, + 0x1d,0x23,0x84,0x8e,0x92,0x64,0xa0,0xb0,0x70,0xd0,0xa5,0x57,0x2b,0x48,0x02,0x17, + 0x69,0xcc,0x79,0xa4,0xe8,0x98,0xeb,0xaa,0xf5,0xf3,0xac,0x68,0xca,0x4c,0xd0,0x89, + 0x7a,0x2a,0xe9,0x8a,0x73,0xd5,0x79,0xef,0x13,0x8b,0xc7,0x11,0x59,0xc9,0x40,0x6b, + 0x22,0xfe,0xbe,0x48,0xa4,0xc7,0xa9,0x34,0x97,0x55,0xfa,0xb5,0x80,0xe8,0x42,0xaa, + 0xad,0xa4,0x9e,0xb5,0x37,0x55,0xd1,0x2b,0xf9,0x8e,0x49,0x4a,0xd9,0xc9,0x2b,0xa5, + 0xe5,0x8c,0x49,0xf5,0x87,0x2c,0x42,0x3c,0xd6,0xcc,0x15,0x35,0x82,0x5c,0x36,0x3c, + 0x9d,0x2a,0x4f,0x89,0x3f,0x60,0x91,0xce,0x27,0xab,0x05,0xad,0x31,0x75,0x79,0x51, + 0xed,0x8c,0x9f,0x52,0x7e,0x43,0x2b,0xc5,0xb4,0x7a,0x0a,0x1e,0x57,0xaf,0xf8,0x84, + 0xdb,0x53,0xcf,0xe7,0xc9,0x18,0x6b,0x29,0x3e,0xda,0x84,0x94,0xf4,0xc7,0xdd,0x0d, + 0x14,0x0f,0x38,0x9d,0x2e,0x9c,0xe0,0x5c,0x16,0xf3,0x33,0xaa,0x4f,0xc5,0xad,0x9a, + 0x7a,0x01,0x03,0xa6,0x3d,0x7f,0xee,0xb2,0x3c,0x12,0x47,0x80,0xee,0x58,0xac,0x8d, + 0xc8,0x3d,0x9a,0x60,0x19,0xa1,0x9d,0x4c,0x10,0x95,0xbb,0xb8,0xc4,0xac,0x03,0xd8, + 0x1f,0xe5,0x14,0x36,0x49,0x41,0x62,0x88,0xef,0xfe,0x11,0xbe,0x67,0x75,0x11,0xbe, + 0x31,0x3b,0x48,0x17,0x98,0x69,0x9f,0x76,0xaa,0xd0,0x98,0x55,0xd1,0x87,0x06,0xc2, + 0x22,0x7f,0xc6,0x81,0x80,0x82,0xbd,0x96,0x74,0x31,0xe9,0xd8,0xe5,0xfc,0x48,0x1f, + 0xaa,0x61,0x89,0xb3,0x09,0x86,0xab,0xbe,0x4c,0x35,0xab,0x70,0x3d,0xc8,0xf1,0xec, + 0x49,0xdb,0x82,0x92,0x8f,0xf7,0xb3,0x79,0x38,0x70,0x82,0x4d,0x14,0xc1,0xe9,0x3c, + 0xb2,0x6a,0x48,0xa2,0x8e,0x41,0x31,0x6e,0x4c,0x7c,0x83,0xfc,0xa9,0x74,0xf3,0x16, + 0x9f,0x65,0xe5,0xd5,0x30,0xee,0x6a,0xd9,0x01,0x86,0x5b,0x25,0xaa,0x91,0xf7,0x03, + 0x34,0x9a,0xa3,0xed,0xa6,0x3f,0x0b,0x11,0x70,0x69,0x5a,0x2b,0x3b,0x6b,0x54,0x24, + 0xdc,0xca,0x3e,0xc1,0x7e,0x09,0x98,0x8c,0xa0,0x8d,0xde,0x1a,0x2a,0x43,0xc5,0x52, + 0x5e,0xcd,0x76,0xe4,0x3d,0xf6,0x06,0xa9,0xd4,0x98,0x07,0x7a,0x5b,0x98,0xe3,0x2e, + 0x27,0x63,0xea,0xff,0xb7,0x72,0xf9,0x83,0x5a,0x12,0xf1,0x16,0xfc,0xde,0x1e,0xf6, + 0x31,0x0d,0x0e,0x67,0xfb,0x98,0x5b,0x0b,0x1d,0x12,0xe8,0xad,0x77,0x21,0x82,0x95, + 0xc0,0xcc,0xc3,0xe3,0x5c,0x72,0xb1,0xd5,0xca,0xe8,0x76,0xce,0xbd,0xd0,0xf1,0x1c, + 0x1b,0xd2,0xf5,0xd3,0x60,0x7e,0x3f,0x62,0x48,0xe8,0xaa,0x19,0x87,0x72,0x54,0x80, + 0xb1,0x43,0xdf,0xe5,0xb0,0x0d,0x72,0x15,0x4d,0xae,0x71,0xed,0x20,0xed,0xda,0x99, + 0xd7,0xce,0x0a,0x9a,0xeb,0x39,0x22,0x23,0xff,0x36,0x8d,0x17,0x0b,0xfb,0xfa,0x23, + 0xca,0x34,0xe5,0xf4,0xf3,0x20,0x7d,0x6f,0xbb,0x83,0xee,0x5e,0x57,0x0e,0x90,0xba, + 0x9a,0x88,0xd4,0x2e,0xa6,0x5d,0x74,0x9a,0x60,0x60,0x04,0x8e,0xc4,0xb9,0x9c,0x17, + 0xd0,0x1e,0xa1,0xec,0xfb,0xe0,0xdf,0xdc,0xbc,0xe7,0x5a,0xc0,0x99,0x4e,0x46,0x03, + 0x20,0xa9,0x29,0xb3,0xa4,0x73,0x9c,0x02,0x85,0x86,0xf4,0xd7,0x0b,0x83,0x10,0xb8, + 0xa5,0x2b,0x43,0x22,0xb4,0xfd,0xcc,0x47,0x2d,0xb8,0x87,0xca,0xd8,0x57,0x31,0x91, + 0x4b,0x95,0x3a,0x9d,0xcf,0x86,0xd4,0x12,0xf5,0x0d,0x65,0x95,0xee,0xb7,0x1b,0xf7, + 0xe9,0x1f,0xac,0x54,0xae,0xeb,0x1d,0xa7,0x27,0xe8,0x1e,0x84,0x6e,0xca,0x0a,0xd1, + 0x1f,0x71,0xa8,0xbf,0x10,0x8d,0x92,0x9f,0x6a,0x66,0xa1,0x13,0x4f,0x7c,0xc0,0x41, + 0x46,0x7e,0x7a,0xd2,0xa2,0x79,0x19,0x30,0x49,0x8c,0x84,0x38,0x85,0x9e,0x5c,0xe0, + 0xb7,0x8e,0xde,0xcf,0xde,0x8f,0x8f,0xcd,0xd6,0x00,0x5f,0x53,0x45,0x50,0xdb,0x70, + 0x42,0x13,0x2e,0x61,0xb1,0x84,0x33,0x2b,0x0b,0xce,0xa4,0x1f,0xe0,0x9a,0x23,0xb7, + 0x5c,0xe5,0x32,0x38,0xb1,0x35,0x9f,0x0d,0x46,0x68,0x67,0xe4,0xb5,0xf3,0x13,0xbd, + 0xe0,0xbc,0x8b,0x41,0x1a,0xe6,0xad,0xeb,0xb5,0x8a,0x44,0xfe,0xf0,0x72,0x05,0x3a, + 0x3e,0xda,0x5f,0x22,0x84,0x98,0xaa,0xe4,0x9a,0x4d,0x91,0x69,0xc0,0x51,0x56,0x8c, + 0xc3,0x65,0x79,0xa5,0xd8,0x6b,0xc5,0xde,0xc0,0x71,0xf0,0xe6,0x38,0xe2,0xbe,0x71, + 0xca,0x56,0x72,0xc2,0x65,0x38,0x98,0x13,0xd1,0xd2,0xc6,0x81,0x37,0x72,0x84,0x4b, + 0x99,0xcf,0x26,0x69,0x53,0xdd,0xc5,0x23,0x49,0x95,0x63,0x68,0x86,0xc5,0xfb,0xd9, + 0xe2,0xfd,0x78,0xab,0x46,0xa2,0xb6,0xfa,0xab,0x61,0x4e,0xcf,0x86,0x9b,0xd2,0x84, + 0xc3,0xc5,0x62,0xa8,0x42,0x48,0x9b,0xad,0x62,0xfe,0x14,0x6b,0x1b,0x46,0xe1,0xbf, + 0xad,0x2d,0xb9,0x25,0x24,0x46,0x45,0xe0,0x0a,0x35,0x6f,0xb9,0x31,0xcc,0x87,0x8e, + 0x28,0x95,0xec,0x75,0x8e,0x9e,0x7d,0x73,0xbc,0xd0,0xcb,0x1f,0xef,0xcb,0x6f,0xe9, + 0xfd,0x4f,0xc7,0x69,0xa5,0x2c,0x03,0x9e,0xf9,0x64,0xc8,0xde,0x55,0xa2,0x9e,0xf0, + 0xba,0x2f,0x96,0x7f,0xa7,0xb3,0xc1,0x74,0xce,0xd2,0x8e,0x55,0x34,0x0c,0x7d,0xe3, + 0x0f,0x4a,0x77,0xaf,0x80,0xbd,0x7b,0x79,0xf0,0x0b,0xec,0x68,0xb7,0xfe,0xce,0x77, + 0x79,0xbe,0xa1,0x22,0xf8,0xa1,0xac,0xf1,0xb1,0x56,0x73,0xbf,0xc7,0x35,0xf1,0x74, + 0xef,0xfa,0x00,0x61,0xe5,0x43,0x8e,0x70,0xca,0x46,0xde,0x77,0xc8,0xa9,0x3a,0x64, + 0x49,0x06,0x0e,0x93,0xd1,0xc9,0x55,0x0f,0x90,0xa8,0x73,0xb8,0x85,0x3a,0x93,0x4b, + 0x09,0x9a,0x13,0xcb,0xd0,0xe3,0x1c,0xe0,0xad,0xef,0x40,0x02,0xeb,0x1b,0xdf,0x81, + 0xa5,0x75,0x1e,0x58,0x94,0xec,0x4c,0x5f,0x4f,0x38,0x3c,0xdf,0x81,0xa5,0xc1,0xe1, + 0x1b,0x32,0x83,0x4f,0x48,0x29,0x97,0x4c,0x99,0x59,0x73,0x16,0x49,0x88,0xa2,0x04, + 0x36,0x6a,0x0b,0x32,0x88,0xa1,0xc6,0xa3,0x0c,0x26,0x40,0x90,0x18,0x58,0x60,0xa8, + 0xf8,0x6e,0xe0,0xfb,0xe4,0x6f,0xc7,0x41,0x11,0x84,0x37,0xf2,0x30,0xcc,0x97,0x22, + 0x1a,0x6c,0xb9,0x56,0x1b,0x5e,0x24,0x02,0x94,0xc4,0x96,0x7d,0x0a,0x4a,0xaa,0x7f, + 0xfa,0x28,0x8d,0x57,0xa8,0xf7,0xff,0xd1,0x45,0xa9,0x41,0xfa,0x2c,0x09,0x6c,0x87, + 0xe9,0x15,0x3c,0x0b,0xcc,0x66,0x81,0xbc,0x17,0x5d,0xcd,0xe0,0xf7,0x8a,0x47,0xae, + 0x6c,0x67,0xa4,0x6a,0xda,0x0a,0xea,0x44,0xc2,0xc1,0x0c,0xb3,0xda,0xa5,0x1a,0x9d, + 0xa9,0x91,0xed,0xbf,0x82,0x55,0x35,0x3e,0x21,0xd6,0xf0,0xe6,0x8d,0xa5,0x81,0x8c, + 0x95,0xdf,0x63,0xed,0xe7,0x1c,0x66,0x00,0x96,0x2b,0x3a,0x74,0x68,0x2f,0xf7,0x6e, + 0x50,0x7e,0x2a,0x65,0xce,0xd1,0xb0,0xf8,0xc5,0x98,0x22,0x1a,0x54,0x4a,0x42,0x7c, + 0x5a,0x9e,0x4a,0x4e,0x09,0x5a,0x47,0x5d,0xf8,0xd5,0x86,0xbd,0xa4,0x89,0x4f,0x96, + 0x04,0x04,0x57,0x7c,0x00,0xcc,0x47,0x33,0xb6,0x37,0xb9,0xb1,0xcf,0x64,0x3e,0x53, + 0x8d,0x70,0x24,0x60,0xa9,0xab,0x1b,0xe8,0x96,0xea,0x60,0xae,0xd4,0xe9,0x90,0x7a, + 0x46,0xee,0xcc,0xc4,0xcf,0x8c,0x73,0x73,0x9e,0xde,0xf0,0x31,0xc5,0x47,0x81,0xd0, + 0x5d,0x95,0x01,0xd1,0x5b,0xb4,0x60,0x45,0xee,0xf3,0x24,0x23,0xcd,0x5a,0x1e,0xcc, + 0xef,0xdd,0x15,0x36,0x07,0x19,0x34,0x4a,0x77,0x58,0x0c,0x10,0x88,0x63,0x33,0x10, + 0x23,0x33,0x62,0x5b,0xc6,0x46,0x89,0x7c,0x47,0xf6,0x73,0x37,0x2f,0x82,0x50,0x9e, + 0x7b,0x06,0x07,0x44,0xeb,0x1e,0x2e,0x61,0x71,0xd3,0xeb,0x62,0xb5,0x17,0x77,0x12, + 0x93,0x58,0x94,0xd0,0xbb,0x69,0x6d,0x82,0xb3,0x2a,0xea,0x5a,0xd4,0xab,0x8a,0xd9, + 0x9e,0x92,0xe9,0x1a,0x2d,0x68,0x8c,0xfe,0x2b,0x0d,0xdc,0xef,0x2e,0xa5,0xe6,0x57, + 0x72,0x95,0xf3,0xcf,0xc3,0x02,0x22,0xbc,0x86,0x88,0x4c,0xe2,0x66,0x93,0x24,0xd6, + 0xe4,0xaa,0x81,0xf0,0x6f,0x34,0x2a,0xd3,0x95,0x7d,0x4a,0xf5,0x3d,0x77,0x1a,0x5e, + 0xf4,0x5d,0x3e,0x0c,0xc7,0x86,0x7b,0xe3,0x95,0xb9,0x4a,0x14,0x3a,0xf6,0x78,0xc5, + 0x91,0xa4,0x49,0x8a,0xed,0x7d,0x4e,0xae,0x9a,0xa6,0x52,0x83,0xc6,0xb6,0x56,0x86, + 0x9e,0x34,0xc8,0x0d,0xa2,0x18,0xf2,0x27,0xe2,0x56,0x44,0x45,0xf5,0x3d,0xce,0xd0, + 0xc6,0xdc,0x4f,0x08,0x68,0x38,0xa4,0x32,0x61,0xdf,0x41,0x43,0xa0,0x86,0xaf,0x7d, + 0xe9,0xe9,0xda,0x45,0xf5,0xc0,0xe6,0x8e,0xea,0xcf,0xdd,0xea,0x5f,0x11,0x49,0x73, + 0xaf,0x6a,0xf1,0x1b,0xb8,0x91,0xb3,0x37,0x24,0xe3,0x86,0xe9,0xe7,0x8d,0xd8,0x9c, + 0x3b,0xd2,0x7c,0xab,0x8e,0x9d,0xfb,0x32,0x7f,0x17,0xbc,0x86,0x49,0xcc,0x16,0x4c, + 0xdf,0x50,0xc7,0xc7,0xcb,0xf4,0xce,0x55,0x33,0x8c,0xb1,0xa2,0x1d,0x40,0x77,0xef, + 0x77,0x50,0x3d,0x0b,0xa9,0x9e,0xf9,0x54,0xff,0xfe,0xfc,0xdd,0xeb,0x97,0xaf,0xff, + 0xd2,0x91,0xa0,0x22,0x71,0x43,0x8a,0x90,0x36,0xe8,0xf2,0x2c,0x0f,0xe5,0x64,0x1d, + 0x55,0x33,0x50,0x55,0x6b,0x85,0x41,0xb3,0x0e,0xe4,0x71,0x5a,0xb8,0x8c,0xcc,0x88, + 0x0b,0xd6,0xde,0x2c,0x66,0xe6,0x18,0x5a,0x8a,0x65,0x91,0x59,0x54,0x8b,0xbd,0x5a, + 0xa1,0x12,0xd4,0x6d,0xaa,0x67,0x91,0x77,0xd4,0x71,0x1a,0xd6,0x71,0xba,0xa2,0x8e, + 0xe2,0x85,0x37,0x9c,0xd3,0xa5,0xc1,0x3a,0x2c,0x81,0x06,0x26,0x1f,0x4d,0x7d,0x23, + 0xdb,0x0f,0x39,0x50,0xd6,0x98,0x2c,0xb2,0xe6,0xd2,0x81,0xf4,0x45,0x89,0x3b,0x89, + 0x6a,0x3b,0xc2,0x0c,0xd0,0x5b,0x4c,0x72,0x69,0x03,0x17,0x6c,0x8a,0x3a,0x06,0x4e, + 0xab,0xcb,0xf4,0x27,0xf3,0x71,0x79,0x47,0x1d,0x01,0xe2,0x56,0x13,0xef,0x66,0x04, + 0x7e,0x9c,0xac,0xcc,0x2b,0x77,0x76,0x28,0xfb,0xc7,0x89,0x9b,0xf9,0xe3,0x84,0xb2, + 0x52,0x52,0xdd,0x34,0xa6,0x13,0xd7,0xaa,0x29,0xab,0x0a,0x2e,0x72,0x8f,0x52,0xc7, + 0x93,0x20,0x9e,0x57,0x8f,0xce,0xd9,0x87,0x54,0x36,0xa8,0xf7,0x78,0xf1,0x71,0x22, + 0x55,0xf4,0x47,0x39,0x12,0x03,0xa6,0x01,0xc8,0x95,0xd1,0x21,0x4d,0x0e,0x2b,0x09, + 0x1d,0x5f,0x55,0x3d,0x6e,0xe8,0xbc,0x8b,0xb1,0x65,0xd0,0x79,0xca,0x65,0x6b,0xb2, + 0x90,0x06,0xde,0x28,0x80,0x7f,0x93,0x71,0xa5,0xa5,0xcb,0xc7,0xfe,0xeb,0x9d,0x3a, + 0xbb,0xae,0x20,0x60,0xb5,0x5c,0xee,0x6b,0x3a,0x50,0x21,0x6d,0x8e,0xb1,0x09,0x80, + 0xd3,0xd1,0x97,0x95,0x0d,0x03,0xa8,0xb4,0x6b,0x4c,0x79,0x00,0x82,0x32,0xc6,0xeb, + 0xca,0x30,0xed,0x31,0x94,0xe9,0x68,0x6c,0xf6,0x62,0x08,0x48,0x57,0x82,0x5d,0xf1, + 0x2a,0xcb,0xb1,0x65,0xf3,0x3a,0xe2,0x50,0xda,0xbd,0xcb,0x2a,0xce,0x47,0x06,0x15, + 0x0f,0xb5,0x91,0x75,0xee,0xa1,0x76,0x18,0x91,0x39,0x91,0x83,0x4b,0xc1,0x92,0xa6, + 0x46,0xbd,0x9b,0x34,0xa2,0x3f,0x38,0xc5,0x22,0x1a,0x03,0xb9,0x44,0xb5,0x0a,0x2c, + 0xfe,0xa8,0x51,0xd3,0x7a,0x55,0x7c,0x86,0x29,0xd9,0x6a,0xc3,0x74,0x53,0x16,0xec, + 0x0f,0xb1,0x45,0x03,0x60,0x85,0xcb,0x53,0x6e,0x3a,0x7a,0x39,0xb3,0x25,0x67,0xa4, + 0x79,0x2e,0xc1,0x2d,0x48,0xe7,0x60,0xdf,0x69,0xd8,0xdc,0x58,0xbd,0x82,0xdd,0xc6, + 0xda,0x3c,0x6c,0x51,0x65,0xb3,0xec,0x21,0x83,0x9a,0x75,0xb9,0xf0,0x95,0xa4,0x74, + 0x04,0xd0,0xe3,0xd4,0x6e,0xad,0xad,0x80,0x26,0x9f,0x6c,0x36,0xd3,0x29,0x34,0x39, + 0x60,0xdf,0x0f,0xc4,0x2d,0xea,0x6f,0xc4,0x3e,0xe5,0x1d,0x4d,0x06,0x61,0x73,0x69, + 0xd0,0x44,0xfd,0xd4,0xe2,0x4f,0x1f,0x27,0xe1,0x27,0xb0,0x0c,0x07,0x41,0x46,0xcd, + 0xc1,0x5b,0x82,0x5f,0x0b,0xf2,0xa6,0x90,0xc4,0xb4,0xed,0xe2,0x3b,0x0b,0x9d,0x33, + 0x70,0x2f,0x4e,0xe5,0x63,0x51,0xa6,0xf7,0xb1,0xac,0xb1,0xbd,0xba,0xde,0xc6,0x4d, + 0x0e,0x2e,0x38,0x49,0x21,0x6d,0xfd,0xb5,0x92,0x12,0x08,0x4b,0xad,0xda,0x54,0x00, + 0x2d,0xfe,0x31,0x20,0xf3,0x80,0x4f,0xef,0x8a,0x7f,0xbc,0xec,0x6b,0xa2,0xd8,0x3b, + 0xe5,0xbe,0xba,0xc2,0x95,0x73,0xb7,0xf7,0xe2,0x99,0x19,0x90,0xed,0xad,0x60,0x48, + 0xca,0x78,0x95,0xf1,0xe8,0x06,0xfe,0xe2,0xbb,0x3b,0x37,0x5c,0x5e,0x87,0xff,0x32, + 0xc6,0x0e,0xfe,0xd4,0x85,0x02,0x43,0x67,0xa3,0xe1,0x93,0x58,0xd0,0xac,0x9d,0x31, + 0x61,0x78,0x68,0xaf,0x8a,0xe8,0xb5,0xe1,0x86,0xf4,0xca,0xab,0x90,0x5e,0x37,0xca, + 0x04,0xb6,0xbb,0x49,0xbb,0x82,0xc8,0x4e,0x96,0xca,0x2b,0xce,0x2d,0x1f,0x29,0xf3, + 0xa3,0xf6,0x23,0xce,0x49,0x56,0xaf,0x89,0x24,0x8a,0x4b,0x6c,0x6b,0xce,0x77,0xde, + 0xc3,0x7e,0x47,0x6f,0x22,0x45,0x34,0x25,0x70,0x33,0xd7,0xcf,0x28,0xab,0x8b,0xf9, + 0x33,0xe9,0xe5,0x5a,0x5c,0x53,0x3a,0x13,0xe0,0xdf,0xa5,0x72,0x9f,0x03,0x5f,0x31, + 0xd3,0x89,0xc2,0x89,0xf5,0xa8,0x2d,0x41,0x65,0x72,0x78,0xc7,0x88,0x4d,0x55,0x87, + 0x9f,0xd7,0x15,0xd8,0x5e,0x2c,0xdc,0xf7,0xed,0xdd,0xb0,0x3c,0xe5,0x21,0xc7,0x22, + 0xd3,0xa8,0x97,0x27,0x36,0xa2,0xa5,0x8b,0xfc,0x3e,0x4d,0xa5,0x8b,0x7d,0xd5,0x4f, + 0xf3,0x1b,0x73,0x91,0x1e,0x77,0x63,0xa8,0x52,0x1d,0xd8,0x97,0xcc,0xca,0xc9,0x8c, + 0x1e,0x70,0x65,0x07,0xbf,0x53,0xc2,0x4a,0x35,0x93,0x1b,0x31,0xd8,0x1d,0xb2,0xb1, + 0x76,0xf6,0xc7,0xe4,0x44,0x1e,0x0a,0x44,0xac,0x2d,0x3b,0xed,0xe0,0xb2,0x8c,0x14, + 0xc0,0x51,0x75,0xd0,0x93,0x78,0x3e,0xb2,0xfa,0x73,0xf3,0xb9,0xc5,0x85,0x10,0x5d, + 0x36,0xc5,0x10,0xe4,0xdb,0x14,0x13,0x69,0x79,0xdb,0x79,0x17,0x22,0x29,0xc9,0xc9, + 0x48,0x04,0xe5,0x20,0xa8,0xde,0x14,0x59,0x93,0x84,0x5a,0xe4,0x0c,0x3a,0x63,0x30, + 0xd6,0x05,0x1c,0x42,0xbc,0x2e,0xec,0x98,0x56,0xf0,0x68,0x67,0xf5,0xfa,0xcd,0xe0, + 0x57,0xd8,0x9e,0xa3,0x08,0x8f,0xfa,0xc5,0xc2,0x7f,0x6f,0xc1,0x64,0x78,0xcc,0xfb, + 0x8a,0xd4,0xaf,0xa6,0x6f,0x05,0x1b,0xab,0x88,0x84,0x20,0xf0,0x70,0xe5,0x95,0x7b, + 0xd0,0xae,0x7c,0xd1,0xc0,0xb3,0xd5,0xde,0xbd,0x9f,0x6d,0x7d,0xb4,0xd9,0xc1,0x53, + 0x8f,0xc3,0xf0,0xb1,0x43,0x8e,0x43,0x72,0x7a,0xdc,0xdc,0xa4,0x3f,0x2d,0x56,0x73, + 0xe2,0x81,0x0d,0x40,0x8e,0x65,0x15,0xab,0xb9,0x6a,0x87,0x48,0x43,0xcc,0xf3,0x7a, + 0x2a,0x72,0xc1,0xbb,0xa7,0xf4,0x76,0xf4,0xc1,0x6c,0xd9,0xd9,0x1b,0xd3,0x93,0xfb, + 0x1b,0xc0,0xd7,0x37,0xa7,0x4e,0xcb,0xf5,0xcb,0x34,0xd2,0xd6,0xee,0x15,0xb0,0x73, + 0xa4,0x1e,0x41,0xc5,0xc3,0xcd,0xeb,0x8c,0xaa,0x59,0xf0,0x13,0x81,0xe8,0x9c,0x0c, + 0xbb,0x04,0xb3,0x1c,0x90,0xd7,0xea,0xdb,0xd4,0xb5,0x06,0xa7,0xae,0x87,0xcb,0xc0, + 0xe6,0xe4,0xbc,0xb8,0x3e,0x65,0x21,0x23,0x6e,0xf8,0x79,0x1a,0x31,0x8d,0x70,0xda, + 0x7e,0x74,0xd7,0xcc,0x5d,0x66,0xd7,0xf3,0x60,0x69,0xd4,0xa4,0x4b,0x29,0xce,0xaa, + 0x12,0xac,0x41,0xc1,0xd0,0xb9,0xa9,0x16,0x02,0xbd,0x25,0x96,0x71,0x93,0x76,0xda, + 0x66,0x62,0x60,0x45,0x26,0xb5,0x0c,0x9d,0x04,0x14,0x2d,0xd2,0xeb,0x41,0x0a,0xb3, + 0x38,0xe0,0x4c,0x24,0x58,0x31,0x83,0x6f,0x37,0x2b,0x7a,0x94,0x12,0xba,0x44,0xba, + 0xf6,0x60,0xe6,0x57,0x5e,0xd3,0xd9,0xba,0x1b,0x78,0xc6,0xdc,0xd0,0x68,0x78,0x73, + 0x45,0x17,0xe9,0x86,0xde,0xdc,0xd2,0x1b,0x9a,0x90,0x6f,0xfd,0x9d,0x9d,0xe1,0xbc, + 0x2f,0x35,0x8a,0xae,0x29,0x2b,0xdd,0x33,0x5e,0x72,0xbe,0x35,0xff,0xe2,0x8e,0x7e, + 0x01,0x8a,0x70,0x76,0xf1,0x16,0x58,0x6d,0xc9,0x38,0xab,0xa6,0x56,0xf3,0xcb,0x6c, + 0x34,0x04,0x67,0x06,0x9f,0xe2,0xad,0x59,0x7b,0xa5,0x87,0x86,0xad,0x99,0xe7,0x4b, + 0x2d,0xcd,0xb3,0x7e,0xfd,0x4a,0xbc,0x02,0xcb,0x03,0x8b,0xc5,0xe9,0xfa,0xba,0x14, + 0x3d,0xc3,0xca,0xb4,0xb9,0xa9,0xaf,0x4f,0x1f,0x07,0xeb,0xd4,0xe3,0xf6,0x6e,0xd8, + 0xab,0xbd,0x85,0x4a,0x3b,0xb8,0x86,0x69,0x46,0xb7,0x5d,0x5e,0xfa,0xd2,0x1b,0xaf, + 0xc5,0x28,0xb0,0x63,0xed,0x4c,0xee,0x4e,0xd1,0x72,0xe0,0x1c,0xae,0x2d,0xde,0xe9, + 0x61,0x0d,0x53,0xea,0xbb,0x24,0xbe,0xdf,0xbd,0x2c,0xd5,0x0f,0xb2,0xc5,0xc2,0x26, + 0x99,0xc5,0xd1,0x5b,0x13,0xd6,0x74,0xe8,0xa5,0x8c,0x26,0x24,0x39,0xf5,0x9c,0xa0, + 0xff,0xec,0x29,0x96,0xb8,0x21,0x93,0x0c,0x39,0xa0,0x83,0xb5,0xfe,0x64,0x8c,0x8d, + 0xa3,0x36,0x5f,0x23,0xde,0x64,0x45,0x39,0x41,0x85,0x8b,0x63,0x76,0x63,0xbc,0x5d, + 0x74,0xa8,0x01,0xdb,0x70,0xa2,0xb8,0x14,0xd3,0xb2,0x86,0x1c,0x89,0x47,0x7e,0x57, + 0xaf,0xb9,0x09,0xf9,0xac,0x42,0x48,0xcd,0x3a,0x2b,0xa1,0xa1,0x11,0x5e,0x3c,0x0d, + 0x66,0xc2,0x03,0xf8,0xbc,0xd3,0xfa,0xaa,0xb3,0xa3,0xe2,0x7a,0x8a,0xcb,0x96,0x26, + 0xd2,0xb3,0xf5,0x0a,0x64,0xfa,0x91,0xb7,0x32,0x13,0x5e,0xc9,0xc5,0x17,0x77,0x96, + 0xc5,0x83,0x99,0x79,0x60,0x1a,0x14,0x76,0x73,0xd3,0xeb,0x68,0xa9,0x7d,0xab,0x9f, + 0x34,0x4c,0x66,0x6c,0xfd,0xd2,0x9b,0xa0,0x87,0xe4,0xbe,0x4d,0x80,0x65,0x49,0xd6, + 0xb6,0x3c,0xa9,0x9d,0xf5,0x04,0xab,0x18,0xbb,0x40,0xcc,0x0c,0xfa,0xb4,0x2b,0x32, + 0xf2,0x52,0x3b,0xe3,0x69,0x2e,0xcf,0xcd,0xfc,0x81,0x84,0x3e,0x75,0x05,0x69,0xc3, + 0xe7,0xe8,0x02,0xc9,0x51,0xcd,0x0c,0x79,0x8c,0x08,0xbf,0xb5,0x73,0x16,0x30,0x37, + 0x1a,0x15,0xe4,0x53,0xcd,0x6c,0xf7,0x72,0xc1,0xcc,0xae,0x14,0xdd,0x35,0x4c,0x35, + 0x06,0x76,0xa4,0xa4,0x5b,0x56,0x36,0x1d,0x0e,0x3f,0xdb,0x6d,0xd3,0xbf,0x95,0xcb, + 0xa3,0x5e,0xbb,0x10,0x9f,0xea,0x17,0x43,0x09,0x1c,0x7d,0x52,0x85,0xaf,0x2f,0xfa, + 0x1a,0x79,0x5d,0x65,0x61,0xeb,0x3f,0x84,0xa3,0x3b,0xf4,0xe0,0x96,0x43,0xbb,0x4c, + 0xc8,0x5b,0x9d,0x2e,0xee,0xdd,0x9c,0x5e,0xa5,0xf7,0xc8,0xcb,0x6b,0x07,0x53,0x58, + 0xed,0x9c,0xfb,0xef,0x18,0x56,0xe1,0xec,0xb9,0xed,0x6f,0x1c,0xda,0xbb,0xc1,0xfb, + 0xa3,0xc5,0xa2,0xd1,0x08,0xc7,0xe2,0xb3,0x9d,0xf6,0xda,0x79,0x5b,0xb7,0xb1,0x4b, + 0x83,0xee,0x7f,0x82,0x81,0xdf,0xb5,0xed,0x0e,0x44,0xf6,0xe5,0x75,0x56,0x0c,0x44, + 0x88,0x38,0x00,0x0d,0xd6,0xc1,0x1a,0x41,0x47,0x69,0xd0,0x80,0xbe,0xc1,0xda,0x3b, + 0x2a,0x28,0xfe,0x67,0xbf,0x03,0x77,0xe0,0x87,0x71,0x86,0xd8,0x01,0x3d,0x84,0x22, + 0xec,0x60,0xba,0xcd,0x60,0x1c,0x5b,0xd0,0x96,0xe5,0x26,0x36,0xd2,0x67,0x13,0xb7, + 0xe0,0x68,0xbf,0x4c,0xfa,0x24,0xf5,0xb8,0xbf,0xf5,0x47,0x09,0xb7,0x10,0x19,0xa9, + 0x4c,0xfb,0x9f,0x3b,0xff,0x79,0xf0,0xe6,0x75,0x4b,0xfc,0x75,0x53,0x20,0xd6,0xa4, + 0x5a,0xda,0x43,0xba,0x64,0x91,0xf7,0x56,0xb6,0xc6,0x76,0xb5,0xd8,0xbb,0x4e,0xce, + 0x6e,0xd3,0xfa,0x28,0xc1,0xc1,0xf9,0xbf,0xbf,0x1f,0x24,0x37,0x99,0x68,0xc2,0x60, + 0xb8,0xc9,0x47,0x57,0x87,0x88,0xb6,0xd5,0xdd,0xf5,0x52,0x8c,0x6a,0x7f,0xbb,0xe2, + 0xc8,0xd0,0xe1,0x87,0x35,0xe2,0x74,0xb8,0xd3,0x44,0x3c,0x4a,0xdd,0x6c,0x52,0xe1, + 0x65,0x36,0xe8,0x0f,0x8b,0xd2,0x73,0x01,0x4c,0xb9,0xb6,0xc4,0x6b,0xfb,0x1e,0x67, + 0xac,0x5f,0xd8,0xf8,0x13,0x96,0x35,0x60,0x24,0x10,0xfc,0xdc,0x63,0x25,0x93,0xd9, + 0x14,0x04,0x70,0x04,0x71,0x94,0x1e,0x63,0x8e,0x5c,0xbf,0x9b,0x7f,0x35,0x81,0x43, + 0xc9,0x19,0xa2,0x85,0x4c,0xce,0xe4,0xec,0x4c,0x37,0xf6,0xb2,0x8f,0xc7,0x21,0x3b, + 0x5f,0x7a,0xd4,0x99,0x46,0x8f,0x55,0x81,0xc1,0xdb,0x7d,0xdb,0xf2,0x73,0x2d,0x5f, + 0xa8,0xc2,0x23,0xc9,0x50,0xe9,0x4d,0xbd,0x8f,0xe4,0x7b,0xf3,0x12,0x57,0x3b,0x32, + 0x9e,0x74,0xb4,0x48,0xbf,0x32,0xf6,0x54,0x60,0x8c,0xa3,0x72,0x75,0x3e,0xd8,0x77, + 0x9d,0x16,0xfb,0x1b,0x08,0x22,0x58,0xda,0x83,0xfc,0x39,0x1f,0x1d,0xd7,0x58,0x8d, + 0x5c,0xe3,0x58,0x2e,0x10,0x99,0x79,0x7d,0x01,0x85,0x8d,0xc1,0xb1,0xac,0xba,0xb2, + 0x0d,0xfe,0x94,0x27,0xd7,0x14,0x1e,0xfb,0x81,0x78,0x8b,0xde,0xc3,0x73,0xe7,0x01, + 0xac,0x6a,0xbf,0xa5,0x2a,0xa8,0x78,0x7d,0xcd,0xdb,0xcc,0xcf,0x4e,0x3e,0x7e,0xcf, + 0xbd,0x0f,0x8e,0x21,0xc9,0xb3,0xf7,0xe5,0x9e,0xbd,0x5d,0xc5,0x20,0xa9,0x92,0x33, + 0xf9,0xb4,0xc7,0x5b,0xdd,0x8e,0x4c,0x64,0xfc,0x51,0x07,0x0f,0xc8,0xcb,0x83,0xea, + 0xe9,0x59,0x65,0xd0,0x53,0x68,0x11,0xd5,0x96,0xf2,0x54,0x6b,0x69,0xcd,0xe8,0xa9, + 0xb4,0x6d,0xd2,0x2d,0x1b,0x71,0x9d,0xd2,0xad,0xbb,0xf1,0xc5,0x0d,0xad,0x1a,0x9a, + 0xdb,0x6c,0xe7,0x71,0xdb,0x13,0x67,0x43,0x05,0x59,0x38,0xf4,0xed,0xe2,0xcf,0x08, + 0x67,0xff,0x7e,0x7d,0x9c,0xea,0xad,0xee,0xd4,0xcf,0x69,0x67,0x9c,0xb0,0x03,0xb3, + 0x62,0xc6,0x4a,0xba,0x5e,0x24,0x4d,0x82,0xbb,0xc6,0xfe,0x78,0x0b,0xc6,0x12,0xfa, + 0xfd,0xd3,0x9d,0xf6,0x57,0x8c,0x9a,0xc6,0xb6,0x99,0x83,0x6e,0xb1,0xf6,0x58,0xe4, + 0xb5,0x53,0x00,0x51,0x6b,0x2f,0x8f,0x8a,0xe8,0xe9,0x9f,0x07,0x60,0x0b,0xae,0xad, + 0x7f,0xcf,0x99,0x21,0xdc,0x7a,0x04,0x4d,0xa5,0x27,0xbe,0x93,0x0b,0x42,0xd1,0x17, + 0x01,0x61,0x8d,0xcd,0x05,0x98,0xe2,0x59,0x88,0xe8,0x09,0x65,0x6a,0x8e,0x39,0x65, + 0x23,0x21,0x60,0x09,0x71,0x6d,0xa1,0xb0,0xa9,0x0b,0xac,0xc5,0x31,0xb0,0x1e,0x40, + 0x9b,0xc4,0x14,0x75,0x12,0x57,0x65,0x07,0x93,0xb3,0xb9,0x4a,0xbe,0x98,0x46,0xe5, + 0x5c,0xf4,0x03,0x6e,0xa5,0xc3,0x22,0x2e,0x10,0x23,0xc4,0x88,0x2e,0x12,0x20,0xe1, + 0x90,0xbd,0x00,0x0d,0xd6,0xd9,0xad,0x60,0xf4,0x13,0x82,0x10,0x73,0x6c,0x6d,0xf0, + 0xd3,0xb9,0xc7,0x6e,0x05,0x36,0xdb,0xff,0x83,0xf2,0xa9,0x58,0x78,0xe9,0x79,0xc7, + 0x2f,0x89,0xed,0x63,0x83,0x52,0xed,0xb0,0x70,0x50,0x15,0x1d,0x7a,0x36,0x49,0x90, + 0x07,0xd1,0x50,0x55,0x04,0xfd,0xa8,0xf2,0x1a,0xd8,0x1b,0x42,0x3d,0x9b,0x81,0x17, + 0x6e,0xa9,0xeb,0x1b,0xa1,0xd6,0x74,0xcb,0x32,0x78,0x15,0x81,0x9c,0xc7,0x38,0xec, + 0x6c,0x45,0xef,0x94,0x18,0x49,0x07,0x7d,0x27,0xf8,0x0a,0xd6,0x20,0x78,0x15,0x51, + 0x25,0xda,0xd6,0xf8,0xad,0x9b,0x4f,0xb4,0xf9,0x2a,0x5c,0xbb,0xe6,0x69,0xb6,0xfc, + 0x7f,0x1f,0x83,0xc2,0xfe,0x2c,0xe6,0xcb,0xea,0x2c,0xe8,0x32,0x37,0x62,0xdd,0xe5, + 0xa0,0xbc,0xe8,0x0d,0x71,0xcb,0x06,0x26,0x65,0x99,0x55,0x8f,0xaa,0xa5,0x3b,0xed, + 0xd6,0x38,0xa9,0x49,0x18,0xd6,0xde,0x46,0x16,0xb8,0xcb,0x26,0x49,0x65,0x6b,0xe1, + 0xac,0xdb,0x1c,0x63,0x84,0x72,0xce,0x32,0x0b,0x34,0xc8,0x51,0xfd,0xbf,0xad,0x2d, + 0x66,0xb3,0x7a,0x49,0xe0,0x5c,0x64,0x43,0x57,0xc0,0xc9,0xb2,0x64,0x96,0xab,0x9f, + 0x97,0xde,0xbe,0x1e,0x9e,0x0b,0xf3,0xb9,0xf1,0x5f,0xa5,0x72,0x11,0x3e,0x14,0x70, + 0xef,0x86,0x7a,0x8e,0x7a,0x7c,0x7c,0xf4,0x11,0x31,0x0d,0x2e,0xd8,0x3f,0xe7,0x3e, + 0x2b,0x7d,0xa9,0xbd,0x89,0x53,0xe4,0x8a,0x62,0x4e,0x9c,0x6d,0xce,0xef,0x00,0x68, + 0x3c,0x11,0xb4,0xe5,0x09,0xf3,0x0e,0x2e,0xda,0x4e,0x7a,0x33,0xb9,0x0b,0x51,0x9e, + 0xd4,0x32,0x02,0xcd,0x4e,0x8c,0x60,0x42,0x1a,0x39,0x01,0x2d,0x13,0x39,0x27,0x09, + 0x6f,0x75,0xc9,0xf4,0xb5,0x79,0x79,0x69,0xb2,0x91,0x30,0x28,0x79,0x7a,0x88,0x15, + 0x95,0x73,0x94,0x85,0x19,0x72,0x25,0x04,0x22,0xfc,0x69,0x22,0x03,0x17,0x27,0xad, + 0xca,0x90,0x4f,0xc1,0xa1,0x34,0x68,0x05,0xe4,0x46,0x40,0xbf,0x84,0x5c,0x02,0x66, + 0x0c,0x46,0xe2,0xdd,0xf4,0x1a,0xc6,0x2b,0xb5,0x36,0x43,0xb8,0x3d,0xc2,0x91,0x05, + 0x9d,0x62,0x7d,0xa6,0x7f,0xdb,0x6e,0x3d,0xd9,0x11,0x24,0xe9,0x2a,0x2d,0xfc,0x5d, + 0x27,0xc1,0x32,0xb9,0xd4,0x76,0x59,0xea,0xd1,0xb5,0xe9,0x35,0x1b,0x16,0x1a,0x55, + 0x83,0x7f,0x16,0x71,0x26,0x63,0x21,0xed,0xde,0x3b,0xa3,0xd0,0xa2,0x19,0xfd,0x81, + 0x45,0x80,0xc5,0x8c,0x1a,0x07,0x43,0xab,0xaa,0x94,0xf1,0x2d,0xb2,0x32,0x62,0x82, + 0x31,0x80,0x79,0x60,0xdd,0x90,0xd8,0x6b,0x25,0xe8,0x1c,0xd8,0x5c,0xea,0xa3,0xcc, + 0xfe,0x8e,0xc7,0x15,0xdd,0x92,0x55,0x0c,0x4b,0x20,0x8e,0xd8,0x73,0x71,0xab,0xa4, + 0x19,0x94,0x78,0xa7,0x15,0x72,0x82,0x15,0xb2,0x77,0xd2,0x8d,0x80,0x11,0x51,0x00, + 0x20,0x41,0x0f,0xe6,0x1b,0x3a,0x2b,0x70,0xe9,0x5f,0x7b,0x00,0x7b,0x63,0x2c,0x16, + 0x0e,0x98,0x2c,0xde,0xbb,0xc9,0x24,0xc4,0xf3,0x1b,0x3d,0x3d,0xdd,0x12,0x7b,0xe1, + 0x67,0xf4,0x84,0x7d,0x1a,0x7e,0xcf,0xe7,0xa3,0xe1,0xb3,0x8d,0xff,0x3f,0x0d,0xa7, + 0x4f,0x34,0x3c,0xce,0x01,0x00, }; const uint8_t WEBCONFIG_HTML_SUCCESS[] PROGMEM = { diff --git a/src/helpers/esp32/WebConfigServer.cpp b/src/helpers/esp32/WebConfigServer.cpp index aed6e541c..255b50b08 100644 --- a/src/helpers/esp32/WebConfigServer.cpp +++ b/src/helpers/esp32/WebConfigServer.cpp @@ -825,8 +825,8 @@ bool WebConfigServer::startSetupMode(char reply[]) { // Keep STA and the driver alive so an ESP-NOW owner is not torn down. // softAPConfig() adds AP to this STA interface for the SSID picker below. bool mode_ok = WiFi.mode(WIFI_STA); - // Setup mode has no login. Drop any STA association so the open setup API is - // reachable only from the setup AP, not from the operator's LAN. + // Drop any STA association so setup/recovery stays on the physical AP. + // A saved-network recovery AP still requires the existing admin login. WiFi.setAutoReconnect(false); bool disconnect_ok = WiFi.disconnect(false, true); delay(100); @@ -1809,13 +1809,15 @@ void WebConfigServer::collectBody(AsyncWebServerRequest* req, uint8_t* data, siz bool WebConfigServer::checkAuth(AsyncWebServerRequest* req) { _last_activity = millis(); if (_mode == MODE_SETUP) { - // AP+STA is used for scans and saved-network recovery. Keep the unauthenticated - // setup API reachable only through the physical setup AP, never through a - // briefly recovered LAN interface before tick() promotes the mode. - return req && req->client() - && req->client()->localIP() == WiFi.softAPIP(); + // AP+STA is used for scans and saved-network recovery. A first-time setup + // may provision a new password from the physical AP. Losing access to a + // saved WiFi network must not grant that same password-reset privilege. + if (!req || !req->client() + || req->client()->localIP() != WiFi.softAPIP()) return false; + if (_initial_setup || _wifi_ssid[0] == 0) return true; + } else if (_mode != MODE_LAN) { + return false; } - if (_mode != MODE_LAN) return false; NodeSnapshot node = {}; { WCLock lock(_mux); @@ -1980,9 +1982,15 @@ void WebConfigServer::handleStatus(AsyncWebServerRequest* req) { void WebConfigServer::handleLogin(AsyncWebServerRequest* req) { if (_mode == MODE_OFF) { req->send(503); return; } _last_activity = millis(); - if (_mode == MODE_SETUP) { // no auth in setup mode - req->send(200, "application/json", "{\"ok\":true}"); - return; + if (_mode == MODE_SETUP) { + if (!req->client() || req->client()->localIP() != WiFi.softAPIP()) { + req->send(401, "application/json", "{\"error\":\"auth\"}"); + return; + } + if (_initial_setup || _wifi_ssid[0] == 0) { + req->send(200, "application/json", "{\"ok\":true}"); + return; + } } NodeSnapshot node = {}; { @@ -2028,6 +2036,7 @@ void WebConfigServer::handleLogin(AsyncWebServerRequest* req) { void WebConfigServer::handleLogout(AsyncWebServerRequest* req) { if (_mode == MODE_OFF) { req->send(503); return; } + if (!checkAuth(req)) { req->send(401, "application/json", "{\"error\":\"auth\"}"); return; } _session_token[0] = 0; AsyncWebServerResponse* res = req->beginResponse(200, "application/json", "{\"ok\":true}"); res->addHeader("Set-Cookie", "wcs=; Max-Age=0; Path=/"); diff --git a/src/helpers/ota/FolderMotaStore.cpp b/src/helpers/ota/FolderMotaStore.cpp index 0349bc5ea..92bf8cd8b 100644 --- a/src/helpers/ota/FolderMotaStore.cpp +++ b/src/helpers/ota/FolderMotaStore.cpp @@ -6,18 +6,21 @@ namespace mesh { namespace ota { -bool FolderMotaStore::readByteT(uint8_t& b) const { - uint32_t t0 = millis(); - while ((millis() - t0) < _to) { +bool FolderMotaStore::readByteT(uint8_t& b, uint32_t started) const { + while ((uint32_t)(millis() - started) < _to) { int c = _io.read(); - if (c >= 0) { b = (uint8_t)c; return true; } + if (c >= 0) { + if ((uint32_t)(millis() - started) >= _to) return false; + b = (uint8_t)c; + return true; + } delay(1); // let BLE/WiFi callbacks deliver the response } return false; } -bool FolderMotaStore::readExact(uint8_t* b, uint16_t n) const { - for (uint16_t i = 0; i < n; i++) if (!readByteT(b[i])) return false; +bool FolderMotaStore::readExact(uint8_t* b, uint16_t n, uint32_t started) const { + for (uint16_t i = 0; i < n; i++) if (!readByteT(b[i], started)) return false; return true; } @@ -25,7 +28,10 @@ bool FolderMotaStore::readExact(uint8_t* b, uint16_t n) const { // XOR checksum, scan for the response magic, validate op+status+checksum, deliver payload. bool FolderMotaStore::txn(uint8_t op, const uint8_t* args, uint16_t arglen, uint8_t* payload, uint16_t payload_len) const { - while (_io.read() >= 0) {} // drop any stale/partial bytes before a fresh request + // Snapshot the currently queued stale bytes. A continuously sending TCP + // client must not trap the mesh loop before a request has even been sent. + int pending = _io.available(); + while (pending-- > 0) if (_io.read() < 0) break; uint8_t xs = op; for (uint16_t i = 0; i < arglen; i++) xs ^= args[i]; // Keep one contiguous write for TCP (and fewer calls on UART). The largest @@ -51,16 +57,16 @@ bool FolderMotaStore::txn(uint8_t op, const uint8_t* args, uint16_t arglen, if (!got) return false; uint8_t hdr[2]; - if (!readExact(hdr, 2)) return false; // op, status + if (!readExact(hdr, 2, t0)) return false; // op, status if (hdr[0] != op) return false; uint8_t rxs = (uint8_t)(MOTA_SEEDER_RSP_MAGIC0 ^ MOTA_SEEDER_RSP_MAGIC1) ^ hdr[0] ^ hdr[1]; bool ok = (hdr[1] == MS_STATUS_OK); if (ok && payload_len) { - if (!readExact(payload, payload_len)) return false; + if (!readExact(payload, payload_len, t0)) return false; for (uint16_t i = 0; i < payload_len; i++) rxs ^= payload[i]; } uint8_t xsum; - if (!readByteT(xsum)) return false; + if (!readByteT(xsum, t0)) return false; if (xsum != rxs) return false; // corrupt frame -> caller retries return ok; } diff --git a/src/helpers/ota/FolderMotaStore.h b/src/helpers/ota/FolderMotaStore.h index cf14656f5..eaf00d821 100644 --- a/src/helpers/ota/FolderMotaStore.h +++ b/src/helpers/ota/FolderMotaStore.h @@ -17,6 +17,8 @@ // If the link drops, every op returns false: the OtaManager PAUSES and keeps its progress (it does NOT fall // back to RAM/flash). On reconnect the host still has the partial, and the manager re-reopen()s so only the // missing blocks are refetched. All ops are keyed by `mid` (set via set_mid() before the fetch begins). +// Each framed response has one timeout_ms deadline, including sync, header, +// payload and checksum. A host cannot extend it by sending one byte at a time. namespace mesh { namespace ota { @@ -48,8 +50,8 @@ private: // One request/response transaction over the seeder link (mirrors SerialMotaSource). `arglen` is uint16 so // OP_WRITE can carry its data inline. Returns true iff a well-formed OK response for `op` arrived in time. bool txn(uint8_t op, const uint8_t* args, uint16_t arglen, uint8_t* payload, uint16_t payload_len) const; - bool readByteT(uint8_t& b) const; - bool readExact(uint8_t* b, uint16_t n) const; + bool readByteT(uint8_t& b, uint32_t started) const; + bool readExact(uint8_t* b, uint16_t n, uint32_t started) const; Stream& _io; uint32_t _to; diff --git a/src/helpers/ota/OtaContext.h b/src/helpers/ota/OtaContext.h index ae495180c..031a0d1e6 100644 --- a/src/helpers/ota/OtaContext.h +++ b/src/helpers/ota/OtaContext.h @@ -7,6 +7,7 @@ #include "OtaDeflate.h" #include "OtaStore.h" #include "SignerAllowlist.h" +#include "OtaManifestPolicy.h" #include "OtaConfigState.h" #include "OtaApply.h" #include "OtaFormat.h" @@ -856,6 +857,11 @@ struct OtaContext { target_id = 0; #endif manager.begin(target_id, send, ctx); +#if !defined(OTA_SEEDER_ONLY) + manager.set_manifest_admission([](void* context, const MotaManifest& manifest) { + return ota_manifest_trusted(manifest, static_cast(context)->allow); + }, this); +#endif #if defined(MOTA_MIGRATION_TARGET_ID) // Legacy observer images keep their deployed target identity for serving // and diagnostics, but automatically accept one canonical successor image. diff --git a/src/helpers/ota/OtaManager.cpp b/src/helpers/ota/OtaManager.cpp index d8164cf04..eed472468 100644 --- a/src/helpers/ota/OtaManager.cpp +++ b/src/helpers/ota/OtaManager.cpp @@ -50,6 +50,10 @@ bool OtaManager::set_speed(float speed) { bool OtaManager::expandCatalog() { if (_catalog_heap || OTA_INLINE_CATALOG >= OTA_MAX_CATALOG) return false; + // Passive on-air discovery never claims a 255-row heap. Large catalogs are + // an explicit browse/archive/automatic-fetch resource choice. + if (!_catalog_browse_requested && !_archive_interest && _autofetch == AUTOFETCH_OFF && + !_have_desired_mid && _desired_target == 0) return false; CatRow* expanded = static_cast(malloc(sizeof(CatRow) * OTA_MAX_CATALOG)); if (!expanded) return false; memcpy(expanded, _catalog_inline, sizeof(CatRow) * _n_cat); @@ -57,6 +61,13 @@ bool OtaManager::expandCatalog() { return true; } +void OtaManager::releaseSmallCatalog() { + if (!_catalog_heap || _n_cat > OTA_INLINE_CATALOG) return; + memcpy(_catalog_inline, _catalog_heap, sizeof(CatRow) * _n_cat); + free(_catalog_heap); + _catalog_heap = nullptr; +} + uint8_t* OtaManager::ensureSourceLeaves(uint32_t bytes) { if (!bytes || bytes > OTA_PROOFGEN_SCRATCH) return nullptr; if (_src_leaves_capacity < bytes) { @@ -121,6 +132,9 @@ void OtaManager::begin(uint32_t my_target_id, OtaSend send, void* ctx) { memset(_src_offered, 0, sizeof(_src_offered)); memset(_src_advertised, 0, sizeof(_src_advertised)); _n_src = 0; _n_cat = 0; + releaseSmallCatalog(); + _catalog_browse_requested = false; + _auto_failure_at = 0; _auto_failure_delay = 0; clearPendingEgress(); releaseColdBuffers(); _adaptive_packet_speed = 1.0f; @@ -489,24 +503,17 @@ bool OtaManager::handleGetManifest(const uint8_t* m, uint16_t n) { // Serve the target's merkle leaves[] in fragments (for a motatool folder-capture warm-start). Only the // fragments set in want_mask are emitted, so a want_mask retry re-sends just the holes - never a full burst // (same anti-deadlock rationale as OTA_MANIFEST). This is the only leaf-diff piece that runs on every node. -void OtaManager::handleGetLeaves(const uint8_t* m, uint16_t n) { +bool OtaManager::handleGetLeaves(const uint8_t* m, uint16_t n) { GetLeavesMsg gl; - if (!decode_get_leaves(m, n, gl)) return; + if (!decode_get_leaves(m, n, gl) || gl.want_mask == 0) return false; ServeView* v = resolve(gl.manifest_id); - if (!v || !v->m.leaves) return; - uint32_t leaves_len = v->m.block_count * 4; - uint8_t ftotal = (uint8_t)((leaves_len + OTA_LEAVES_FRAG - 1) / OTA_LEAVES_FRAG); if (ftotal == 0) ftotal = 1; - for (uint8_t fi = 0; fi < ftotal; fi++) { - if (!(gl.want_mask & (1u << fi))) continue; // fetcher didn't ask for this leaves fragment - uint32_t off = (uint32_t)fi * OTA_LEAVES_FRAG; - uint32_t fl = leaves_len - off; if (fl > OTA_LEAVES_FRAG) fl = OTA_LEAVES_FRAG; - LeavesMsg lm; - memcpy(lm.manifest_id, v->m.merkle_root, 4); - lm.frag_idx = fi; lm.frag_total = ftotal; - lm.bytes = v->m.leaves + off; lm.len = (uint16_t)fl; - uint8_t b[MAX_PACKET_PAYLOAD]; - emit(b, encode_leaves(b, sizeof(b), lm), false); - } + if (!v || !v->m.leaves || v->m.block_count == 0 || + v->m.block_count > OTA_DIFF_MAX_BLOCKS) return false; + const uint32_t total = (v->m.block_count * 4 + OTA_LEAVES_FRAG - 1) / OTA_LEAVES_FRAG; + if (total == 0 || total > OTA_LEAVES_MAXFRAG) return false; + const uint16_t valid_mask = total == 16 ? 0xFFFFu : (uint16_t)((1u << total) - 1u); + const uint16_t wanted = (uint16_t)(gl.want_mask & valid_mask); + return wanted && queueManifestJob(v->m.merkle_root, wanted, true); } // Smallest mask covering `nf` fragments: bit k set for k in [0, nf). Caps at 16 (matches each pipeline @@ -548,10 +555,11 @@ bool OtaManager::queueServeJob(const uint8_t* mid, uint16_t block, uint16_t want return true; } -bool OtaManager::queueManifestJob(const uint8_t* mid, uint16_t want_mask) { +bool OtaManager::queueManifestJob(const uint8_t* mid, uint16_t want_mask, bool leaves) { for (uint8_t i = 0; i < _n_manifest_jobs; i++) { ManifestServeJob& job = _manifest_jobs[i]; - if (memcmp(job.mid, mid, 4) != 0 || !(job.route == _request_route)) continue; + if (memcmp(job.mid, mid, 4) != 0 || !(job.route == _request_route) || + job.leaves != leaves) continue; job.pending_mask |= (uint16_t)(want_mask & ~job.emitted_mask); return true; } @@ -562,6 +570,7 @@ bool OtaManager::queueManifestJob(const uint8_t* mid, uint16_t want_mask) { job.pending_mask = want_mask; job.emitted_mask = 0; job.ready_at = _now_ms + manifestEgressGapMs(); + job.leaves = leaves; return true; } @@ -625,8 +634,14 @@ bool OtaManager::serviceManifestEgress(OtaReplyRouteValid route_valid, void* rou return true; } - const uint32_t mfl = v->mfl; - uint8_t ftotal = (uint8_t)((mfl + OTA_MF_FRAG - 1) / OTA_MF_FRAG); + const uint32_t mfl = job.leaves ? v->m.block_count * 4u : v->mfl; + const uint16_t fragment_size = job.leaves ? OTA_LEAVES_FRAG : OTA_MF_FRAG; + const uint32_t total = (mfl + fragment_size - 1u) / fragment_size; + if ((job.leaves && (!v->m.leaves || total > OTA_LEAVES_MAXFRAG)) || total > 16u) { + popManifestJob(); + return true; + } + uint8_t ftotal = (uint8_t)total; if (ftotal == 0) ftotal = 1; const uint16_t valid_mask = frag_full_mask(ftotal); job.pending_mask &= valid_mask; @@ -642,19 +657,26 @@ bool OtaManager::serviceManifestEgress(OtaReplyRouteValid route_valid, void* rou return true; } - const uint32_t off = (uint32_t)fragment * OTA_MF_FRAG; + const uint32_t off = (uint32_t)fragment * fragment_size; uint32_t len = mfl - off; - if (len > OTA_MF_FRAG) len = OTA_MF_FRAG; - ManifestMsg message; - memcpy(message.manifest_id, v->m.merkle_root, 4); - message.frag_idx = fragment; - message.frag_total = ftotal; - message.bytes = v->m.manifest_start + off; - message.len = (uint16_t)len; + if (len > fragment_size) len = fragment_size; uint8_t wire[MAX_PACKET_PAYLOAD]; - const uint16_t wire_len = encode_manifest(wire, sizeof(wire), message); + uint16_t wire_len = 0; + if (job.leaves) { + LeavesMsg message; + memcpy(message.manifest_id, v->m.merkle_root, 4); + message.frag_idx = fragment; message.frag_total = ftotal; + message.bytes = v->m.leaves + off; message.len = (uint16_t)len; + wire_len = encode_leaves(wire, sizeof(wire), message); + } else { + ManifestMsg message; + memcpy(message.manifest_id, v->m.merkle_root, 4); + message.frag_idx = fragment; message.frag_total = ftotal; + message.bytes = v->m.manifest_start + off; message.len = (uint16_t)len; + wire_len = encode_manifest(wire, sizeof(wire), message); + } if (emit(wire, wire_len, false, &job.route)) { - OTA_DBG("OTA: MANIFEST tx frag=%u/%u len=%u\n", + OTA_DBG("OTA: %s tx frag=%u/%u len=%u\n", job.leaves ? "LEAVES" : "MANIFEST", (unsigned)fragment, (unsigned)ftotal, (unsigned)len); const uint16_t bit = (uint16_t)(1u << fragment); job.pending_mask &= (uint16_t)~bit; @@ -955,6 +977,7 @@ void OtaManager::invalidateCatalogSeeder(const uint8_t* seeder) { } i++; } + releaseSmallCatalog(); } // A tiny per-node BEACON: record the source; ask it for its catalog (OTA_QUERY) only when we're @@ -1051,6 +1074,7 @@ bool OtaManager::sendQuery(const uint8_t* seeder, const uint8_t* digest, uint32_ // User-initiated browse (`ota neighbors`): immediately ask every incomplete/changed source. A complete // digest-tagged catalog is already current, so paging through a 255-row list must not re-flood it each time. void OtaManager::queryAll() { + _catalog_browse_requested = true; for (uint8_t i = 0; i < _n_src; i++) { Source& s = _sources[i]; if (s.have_catalog) continue; @@ -1120,6 +1144,7 @@ void OtaManager::handleHave(const uint8_t* m, uint16_t n) { const uint8_t* mid = row; uint32_t target = rd_u32le(row + 4), fwver = rd_u32le(row + 8); uint8_t codec = row[12], flags = row[13]; + if (flags & ~MFLAG_KNOWN) continue; uint32_t have_count = rd_u16le(row + 14); // this source's progress CatRow* catalog = catalogData(); int slot = -1, lru = 0; // upsert into the catalog (dedup by mid) @@ -1130,7 +1155,23 @@ void OtaManager::handleHave(const uint8_t* m, uint16_t n) { } if (slot < 0) { if (_n_cat >= catalogCapacity() && expandCatalog()) catalog = catalogData(); - slot = (_n_cat < catalogCapacity()) ? _n_cat++ : lru; + if (_n_cat < catalogCapacity()) slot = _n_cat++; + else { + slot = lru; + // A page is no longer complete when an LRU replacement loses any of + // its rows. An eventual explicit browse must request those pages too, + // instead of expanding a cache whose old holes remain suppressed. + const CatRow& evicted = catalog[slot]; + for (uint8_t source = 0; source < _n_src; ++source) { + for (uint8_t seeder = 0; seeder < evicted.n_seeders; ++seeder) { + if (memcmp(_sources[source].seeder, evicted.seeders[seeder], 4) == 0) { + _sources[source].have_mask = 0; + _sources[source].have_catalog = false; + break; + } + } + } + } catalog[slot] = CatRow{}; memcpy(catalog[slot].mid, mid, 4); memcpy(catalog[slot].seeders[0], hv.seeder_id, 4); @@ -1188,6 +1229,8 @@ bool OtaManager::wantRow(const uint8_t* mid, uint32_t target, uint32_t fw_versio return memcmp(mid, _desired_mid, 4) == 0 && (_desired_target == 0 || target == _desired_target); if (_desired_target) return target == _desired_target; // cross-target want (role switch) if (_autofetch == AUTOFETCH_OFF) return false; // discover only + if (_auto_failure_delay && + (uint32_t)(_now_ms - _auto_failure_at) < _auto_failure_delay) return false; const uint32_t auto_target = _migration_target ? _migration_target : _target; if (target != auto_target) return false; // own target or one-way successor if (_autofetch == AUTOFETCH_SIGNED && !(flags & MFLAG_SIGNED)) return false; // signed-only policy @@ -1202,6 +1245,7 @@ void OtaManager::clearReassemblySlot(uint8_t slot) { _reasm[slot].mask = 0; _reasm[slot].need = 0; _reasm[slot].awaiting_proof = false; + _reasm[slot].proof_failed = false; _reasm[slot].proof_request_at = 0; _reasm[slot].encoded_len = 0; _reasm[slot].wire_v2 = false; @@ -1387,6 +1431,15 @@ void OtaManager::clearFetchIntent() { void OtaManager::failFetch(FetchError error) { if (error == FETCH_ERROR_STORAGE && _fetch && _fetch->canReconnect() && pauseFetchForDisconnect()) return; + if (!_have_desired_mid && _desired_target == 0 && !_archive_fetch) { + // Global as well as per-image: changing a forged MID must not bypass the + // cooldown. Explicit operator pulls retain their intentional override. + _auto_failure_at = _now_ms; + if (_auto_failure_delay == 0) _auto_failure_delay = OTA_AUTOFETCH_FAILURE_BACKOFF_MS; + else if (_auto_failure_delay > OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS / 2u) + _auto_failure_delay = OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS; + else _auto_failure_delay *= 2u; + } _fetch_error = error; _fstate = FAILED; _paused_from = IDLE; @@ -1398,6 +1451,7 @@ void OtaManager::failFetch(FetchError error) { } void OtaManager::completeFetch() { + _auto_failure_delay = 0; _fetch_error = FETCH_ERROR_NONE; _fstate = COMPLETE; _paused_from = IDLE; @@ -1451,7 +1505,8 @@ OtaManager::PullResult OtaManager::startFetch(const uint8_t* mid, uint32_t targe _validate = validate; // motatool folder-capture warm-start (seed leaf-diff) // A validate pull is a FRESH seed capture, not a resume: the store already holds the seed's payload (not a // real partial), so never adopt it via resumeStaged - always re-begin and run the manifest->leaves->diff. - if (!validate && resumeStaged(mid)) return PULL_RESUMED; // adopt a partial container left in the store + const bool automatic = !_have_desired_mid && _desired_target == 0 && !_archive_fetch; + if (!validate && resumeStagedFor(mid, automatic)) return PULL_RESUMED; // adopt a partial container left in the store memcpy(_fid, mid, 4); _have = 0; _fbc = 0; _ftotal = 0; _fflags = 0; _observed_path_transmissions = 0; // learn the actual source/relay path from this fetch's replies @@ -1508,7 +1563,8 @@ bool OtaManager::resumeFetchAfterReconnect() { } else { // Reopening is bound to the original MID/target and verifies payload bytes; // a replacement host file must not silently become the selected capture. - if (!resumeStaged(_fid)) return false; + const bool automatic = !_have_desired_mid && _desired_target == 0 && !_archive_fetch; + if (!resumeStagedFor(_fid, automatic)) return false; } _paused_from = IDLE; _fetch_error = FETCH_ERROR_NONE; @@ -1563,7 +1619,9 @@ void OtaManager::handleManifest(const uint8_t* m, uint16_t n) { !ota_trusted_auto_version_allows(_running_fw_version, parsed.fw_version)) { failFetch(FETCH_ERROR_VERSION); return; } - if (automatic_fetch && _autofetch == AUTOFETCH_SIGNED && !parsed.is_signed()) { + if (automatic_fetch && _autofetch == AUTOFETCH_SIGNED && + (!parsed.is_signed() || !_admit_manifest || + !_admit_manifest(_admit_manifest_ctx, parsed))) { failFetch(FETCH_ERROR_MANIFEST); return; } if (parsed.hash_algo != HASH_ALGO_SHA256) { failFetch(FETCH_ERROR_HASH_ALGO); return; } @@ -1604,6 +1662,9 @@ void OtaManager::handleManifest(const uint8_t* m, uint16_t n) { uint8_t hdr[8]; memcpy(hdr, MOTA_MAGIC, 4); wr_u32le(hdr + 4, total); + // Approval is local authorization, not part of the signed peer manifest. + // A sender must never be able to arm an install by supplying these bytes. + memcpy(_mf_buf + MOTA_SIGNED_LEN + 64u, APPROVAL_NOT, sizeof(APPROVAL_NOT)); if (!_fetch->write(0, hdr, 8) || !_fetch->write(8, mf, mfl) || !_fetch->write(total - 5, MOTA_TRAILER, 5)) { failFetch(FETCH_ERROR_STORAGE); return; } @@ -1708,11 +1769,14 @@ void OtaManager::diffStep() { } bool OtaManager::resumeStaged(const uint8_t* want_mid) { + return resumeStagedFor(want_mid, want_mid == nullptr); +} + +bool OtaManager::resumeStagedFor(const uint8_t* want_mid, bool automatic_resume) { if (!_fetch || _fstate == FETCHING || _fstate == WANT_MANIFEST || _fstate == WANT_LEAVES || _fstate == VERIFYING_STAGED) { return false; } - const bool automatic_resume = want_mid == nullptr; const uint32_t expected_target = automatic_resume ? (_migration_target ? _migration_target : _target) : _fexpected_target; @@ -1732,7 +1796,9 @@ bool OtaManager::resumeStaged(const uint8_t* want_mid) { if (expected_target != 0 && m.target_id != expected_target) return false; if (automatic_resume) { if (_autofetch == AUTOFETCH_OFF) return false; - if (_autofetch == AUTOFETCH_SIGNED && !m.is_signed()) return false; + if (_autofetch == AUTOFETCH_SIGNED && + (!m.is_signed() || !_admit_manifest || + !_admit_manifest(_admit_manifest_ctx, m))) return false; if (_enforce_auto_version && !ota_trusted_auto_version_allows(_running_fw_version, m.fw_version)) return false; } @@ -2014,13 +2080,14 @@ bool OtaManager::handleProof(const uint8_t* m, uint16_t n) { ReassemblySlot& slot = _reasm[slot_index]; uint32_t block = slot.block; uint32_t blen = blockLen(block); - noteFetchActivity(); if (!merkle_verify(slot.buf, blen, block, pm.proof, pm.n_proof, _froot, _fbc)) { - notePipelineStall(); - clearReassemblySlot((uint8_t)slot_index); // bad -> drop and re-fetch only this block - if (activePipelineSlots() == 0) { finishFlight(); requestMissing(); } + // A forged proof must not discard valid in-flight DATA or cause an + // immediate request burst. Accept a later valid proof; repair a genuinely + // damaged block only at the ordinary airtime-aware recovery deadline. + slot.proof_failed = true; return true; } + noteFetchActivity(); // Commit payload before its present marker. Preserve the selected store and // checkpoint on failure: reconnectable stores pause, while local storage // reports a retryable failure instead of waiting for a nonexistent link. @@ -2184,6 +2251,13 @@ void OtaManager::requestMissing() { uint8_t slot = (uint8_t)((_retry_slot + offset) % OTA_FETCH_PIPELINE); if (_reasm[slot].block == NO_BLOCK) continue; ReassemblySlot& reassembly = _reasm[slot]; + if (reassembly.proof_failed) { + const uint32_t block = reassembly.block; + clearReassemblySlot(slot); + reassembly.block = block; + const uint16_t fragment_data = _wire_v2_session ? OTA_FRAG_DATA_V2 : OTA_FRAG_DATA; + reassembly.need = frag_full_mask((blockLen(block) + fragment_data - 1u) / fragment_data); + } const bool partial_v2 = _wire_v2_session && reassembly.wire_v2 && reassembly.mask != 0 && !reassembly.awaiting_proof; if (partial_v2 && reassembly.wire_stalls >= 1) { @@ -2316,7 +2390,7 @@ bool OtaManager::dispatchMessage(const uint8_t* msg, uint16_t len) { case OTA_HAVE: handleHave(msg, len); return false; case OTA_GET_MANIFEST: return handleGetManifest(msg, len); case OTA_MANIFEST: handleManifest(msg, len); return false; - case OTA_GET_LEAVES: handleGetLeaves(msg, len); return false; + case OTA_GET_LEAVES: return handleGetLeaves(msg, len); case OTA_LEAVES: handleLeaves(msg, len); return false; case OTA_REQ: return handleReq(msg, len); case OTA_DATA: return handleData(msg, len); diff --git a/src/helpers/ota/OtaManager.h b/src/helpers/ota/OtaManager.h index 90d0ff940..24788cf9c 100644 --- a/src/helpers/ota/OtaManager.h +++ b/src/helpers/ota/OtaManager.h @@ -41,6 +41,10 @@ struct OtaReplyRoute { }; typedef bool (*OtaReplyRouteValid)(void* ctx, const OtaReplyRoute& route); +// Device admission is separate from portable block transport. Signed-only +// automatic fetches must authenticate the manifest before touching staging. +typedef bool (*OtaManifestAdmit)(void* ctx, const MotaManifest& manifest); + // Read `len` payload bytes at offset `off` from the serve source (flash-backed self-serve); false on // error. nullptr means the payload is a contiguous RAM buffer (the staged `.mota`). typedef bool (*ServeReadFn)(void* ctx, uint32_t off, uint8_t* buf, uint32_t len); @@ -104,6 +108,16 @@ static constexpr uint16_t ota_max_block_capability() { return (uint16_t)OTA_MAX_ #ifndef OTA_MANIFEST_MAX_RETRY #define OTA_MANIFEST_MAX_RETRY 20 // give up (FAILED) after this many GET_MANIFEST retries - frees the slot #endif +#ifndef OTA_AUTOFETCH_FAILURE_BACKOFF_MS +#define OTA_AUTOFETCH_FAILURE_BACKOFF_MS 60000u +#endif +#ifndef OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS +#define OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS 900000u +#endif +static_assert(OTA_AUTOFETCH_FAILURE_BACKOFF_MS > 0u && + OTA_AUTOFETCH_FAILURE_BACKOFF_MS <= OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS && + OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS < 0x80000000u, + "OTA automatic failure cooldown must support wrap-safe elapsed time"); #ifndef OTA_MANIFEST_SERVE_QUEUE #define OTA_MANIFEST_SERVE_QUEUE 4 // bounded manifest response descriptors (fragments are emitted one at a time) #endif @@ -472,6 +486,9 @@ public: // Auto-fetch policy (manual `ota pull` always works regardless): 0=off (discover only), 1=any // compatible own-target advert, 2=only signed adverts. Conservative default = off. static const uint8_t AUTOFETCH_OFF = 0, AUTOFETCH_ANY = 1, AUTOFETCH_SIGNED = 2; + void set_manifest_admission(OtaManifestAdmit admit, void* ctx) { + _admit_manifest = admit; _admit_manifest_ctx = ctx; + } void set_autofetch(uint8_t p) { _autofetch = p; reDiscover(); } uint8_t autofetch() const { return _autofetch; } // One-way release migration for a legacy identity. Automatic OTA follows the @@ -563,15 +580,18 @@ public: struct CatRow { uint8_t mid[4]; uint32_t target_id, fw_version; - uint8_t codec, flags; - uint8_t seeders[OTA_CAT_SEEDERS][4]; // distinct sources advertising this mid (deduped; capped) - uint16_t seeder_have[OTA_CAT_SEEDERS]; // progress reported by each tracked source - uint32_t seeder_last_ms[OTA_CAT_SEEDERS]; // age of each tracked source's latest HAVE - uint8_t n_seeders; // count of the above (capped at OTA_CAT_SEEDERS) - "N+ nodes have it" - uint32_t have_max; // best block-count any source reported (== total when a full copy exists) uint32_t last_ms; uint32_t retry_after_ms; // per-image archive retry deadline (0 = eligible) + uint32_t seeder_last_ms[OTA_CAT_SEEDERS]; // age of each tracked source's latest HAVE + uint8_t seeders[OTA_CAT_SEEDERS][4]; // distinct sources advertising this mid (deduped; capped) + uint16_t seeder_have[OTA_CAT_SEEDERS]; // progress reported by each tracked source + uint16_t have_max; // HAVE carries a uint16 block count + uint8_t codec; + uint8_t flags : 3; // MFLAG_KNOWN, validated before caching + uint8_t n_seeders : 3; // bounded by OTA_CAT_SEEDERS = 4 }; + static_assert(sizeof(CatRow) * OTA_MAX_CATALOG <= 16384u, + "Maximum OTA catalog exceeds its qualified 16 KiB heap budget"); uint8_t catalogCount() const { return _n_cat; } const CatRow* catalogRow(uint8_t i) const { return i < _n_cat ? &catalogData()[i] : nullptr; } uint8_t sourceCount() const { return _n_src; } // distinct OTA sources (beacon senders) heard @@ -585,6 +605,7 @@ private: const CatRow* catalogData() const { return _catalog_heap ? _catalog_heap : _catalog_inline; } uint16_t catalogCapacity() const { return _catalog_heap ? OTA_MAX_CATALOG : OTA_INLINE_CATALOG; } bool expandCatalog(); + void releaseSmallCatalog(); bool emit(const uint8_t* b, uint16_t n, bool flood, const OtaReplyRoute* route = nullptr) { const OtaReplyRoute* previous = _reply_route; @@ -599,7 +620,7 @@ private: void handleHave(const uint8_t* m, uint16_t n); // peer: catalog rows (+ startFetch if a row matches) bool handleGetManifest(const uint8_t* m, uint16_t n); void handleManifest(const uint8_t* m, uint16_t n); - void handleGetLeaves(const uint8_t* m, uint16_t n); // serve: send the requested leaf fragments + bool handleGetLeaves(const uint8_t* m, uint16_t n); // serve: send the requested leaf fragments void handleLeaves(const uint8_t* m, uint16_t n); // fetcher (validate): reassemble the target leaves bool beginLeafDiff(); // enter WANT_LEAVES if a seed diff is viable void diffStep(); // diff one batch of seed blocks per loop tick @@ -612,6 +633,7 @@ private: bool wantRow(const uint8_t* mid, uint32_t target, uint32_t fw_version, uint8_t codec, uint8_t flags) const; // fetch this row? bool fetchActive() const; + bool resumeStagedFor(const uint8_t* want_mid, bool automatic); void clearFetchIntent(); void failFetch(FetchError error); void completeFetch(); @@ -639,7 +661,7 @@ private: bool extended_length = false); void noteServedRequestPacing(const uint8_t* mid, uint16_t block, uint16_t want, uint16_t full_mask); - bool queueManifestJob(const uint8_t* mid, uint16_t want_mask); + bool queueManifestJob(const uint8_t* mid, uint16_t want_mask, bool leaves = false); uint32_t manifestEgressGapMs() const; uint32_t proofEgressGapMs() const; bool serviceManifestEgress(OtaReplyRouteValid route_valid, void* route_ctx); @@ -730,6 +752,7 @@ private: uint16_t pending_mask; uint16_t emitted_mask; uint32_t ready_at; + bool leaves; }; ManifestServeJob _manifest_jobs[OTA_MANIFEST_SERVE_QUEUE]; uint8_t _n_manifest_jobs = 0; @@ -773,6 +796,10 @@ private: bool _archive_fetch = false; // capture-only pull: accept any target/codec bool _archive_interest = false; // query full catalogs for the persistent archive uint8_t _seeder_id[4] = {0,0,0,0}; // our node id (pubkey[0:4]) for advert seeder counting + OtaManifestAdmit _admit_manifest = nullptr; + void* _admit_manifest_ctx = nullptr; + uint32_t _auto_failure_at = 0; + uint32_t _auto_failure_delay = 0; uint8_t _autofetch = AUTOFETCH_OFF; // auto-fetch policy (persisted in NodePrefs) uint32_t _running_fw_version = 0; // trusted EndF version used only for automatic admission bool _enforce_auto_version = false; // OtaContext enables this even when EndF/version is unknown @@ -794,6 +821,7 @@ private: uint16_t mask = 0; // received FRAG_DATA-slice bitmap uint16_t need = 0; // full bitmap for this block bool awaiting_proof = false; + bool proof_failed = false; // preserve DATA until the normal recovery deadline uint32_t proof_request_at = 0; // proactive-proof grace deadline; 0 after fallback is sent uint16_t encoded_len = 0; // v2 wire length; zero until the first DATA fragment establishes it bool wire_v2 = false; @@ -856,6 +884,7 @@ private: CatRow _catalog_inline[OTA_INLINE_CATALOG]; CatRow* _catalog_heap = nullptr; uint8_t _n_cat = 0; + bool _catalog_browse_requested = false; uint32_t _now_ms = 0; // coarse clock (fed by set_clock; for ages/LRU/jitter) }; diff --git a/src/helpers/ota/OtaManifestPolicy.h b/src/helpers/ota/OtaManifestPolicy.h new file mode 100644 index 000000000..7d00ea0bf --- /dev/null +++ b/src/helpers/ota/OtaManifestPolicy.h @@ -0,0 +1,22 @@ +#pragma once + +#include "MotaContainer.h" +#include "SignerAllowlist.h" +#include + +namespace mesh { +namespace ota { + +// The signed flag is advisory until the allowlisted Ed25519 key verifies the +// complete signed manifest. This runs before automatic staging can erase or +// replace a previously retained image; installation verifies again separately. +inline bool ota_manifest_trusted(const MotaManifest& manifest, const SignerAllowlist& allow) { + if (!manifest.is_signed() || !manifest.manifest_start || !manifest.signer_pubkey || + !manifest.signature || manifest.signed_len != MOTA_SIGNED_LEN || + !allow.contains(manifest.signer_pubkey)) return false; + mesh::Identity signer(manifest.signer_pubkey); + return signer.verify(manifest.signature, manifest.manifest_start, (int)manifest.signed_len); +} + +} // namespace ota +} // namespace mesh diff --git a/test/fixtures/cli_error_bounds/main.cpp b/test/fixtures/cli_error_bounds/main.cpp new file mode 100644 index 000000000..4482ce096 --- /dev/null +++ b/test/fixtures/cli_error_bounds/main.cpp @@ -0,0 +1,86 @@ +#include +#include +#include +#include +#include +#include +#include + +// The unknown-setting branches below are extracted verbatim from production. +// The hardware-dependent recognized-setting branches are outside this fixture. +using Fallback = void (*)(const char*, char*); +static void commonFallback(const char* command, char* reply) { + @COMMON_CONFIG@ + (void)config; + if (false) {} + @COMMON_FALLBACK@ +} +static void observerFallback(const char* command, char* reply) { + @COMMON_CONFIG@ + (void)config; + if (false) {} + @OBSERVER_FALLBACK@ +} + +static std::string unknownCommand(bool observer, size_t command_length) { + const char* prefix = observer ? "set mqtt1." : "set repeat."; + assert(command_length >= strlen(prefix)); + return std::string(prefix) + std::string(command_length - strlen(prefix), 'x'); +} + +template +static void exact(Fallback fallback, const std::string& command) { + // Standalone arrays expose any past-end write to AddressSanitizer rather + // than hiding it inside an allocation which includes the path/canary. + std::array reply; + reply.fill(char(0x55)); + fallback(command.c_str(), reply.data()); + assert(strcmp(reply.data(), "unknown config") == 0); + for (size_t i = sizeof("unknown config"); i < reply.size(); ++i) + assert(reply[i] == char(0x55)); +} + +template +static void adjacent(Fallback fallback, const std::string& command) { + struct Buffers { + uint8_t before[16]; + char reply[Capacity]; + uint8_t reply_path[64]; + } buffers; + memset(&buffers, 0x55, sizeof(buffers)); + fallback(command.c_str(), buffers.reply); + assert(strcmp(buffers.reply, "unknown config") == 0); + for (uint8_t value : buffers.before) assert(value == 0x55); + for (uint8_t value : buffers.reply_path) assert(value == 0x55); + for (size_t i = sizeof("unknown config"); i < sizeof(buffers.reply); ++i) + assert(buffers.reply[i] == char(0x55)); +} + +int main(int argc, char** argv) { + assert(argc == 3); + const bool observer = strcmp(argv[1], "observer") == 0; + const std::string scenario(argv[2]); + Fallback fallback = observer ? observerFallback : commonFallback; + if (scenario == "local") { + const auto command = unknownCommand(observer, 159); + exact<160>(fallback, command); + adjacent<160>(fallback, command); + } else if (scenario == "radio") { + const auto command = unknownCommand(observer, 179); + exact<179>(fallback, command); + adjacent<179>(fallback, command); + } else if (scenario == "minimum") { + const auto command = unknownCommand(observer, 179); + exact(fallback, command); + adjacent(fallback, command); + } else if (scenario == "lengths") { + for (size_t length = 16; length < 4096; ++length) { + const auto command = unknownCommand(observer, length); + exact<160>(fallback, command); + exact<179>(fallback, command); + exact(fallback, command); + adjacent<179>(fallback, command); + } + } else assert(false); + return 0; +} diff --git a/test/fixtures/mota_folder_deadline.cpp b/test/fixtures/mota_folder_deadline.cpp new file mode 100644 index 000000000..36c124725 --- /dev/null +++ b/test/fixtures/mota_folder_deadline.cpp @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace mesh::ota; +struct HostStream : Stream { + bool request=false, noise=false, bad_checksum=false, error=false; + bool stalled=false, short_write=false; + uint32_t byte_delay=0; int stale_reads=0, stale_at_request=0; + size_t response_pos=0; std::vector response; + int available() override { return request ? int(response.size()-response_pos) : (noise ? 3 : 0); } + int read() override { + if (!request) { + if (noise && stale_reads<100) { ++stale_reads; return 0x5a; } + return -1; + } + if (stalled || response_pos==response.size()) return -1; + g_mock_millis+=byte_delay; + return response[response_pos++]; + } + int peek() override { return -1; } + void flush() override { assert(false); } + size_t write(uint8_t) override { assert(false); return 0; } + size_t write(const uint8_t* data, size_t size) override { + if(short_write) return size-1; + assert(size>=4 && data[0]==MOTA_SEEDER_REQ_MAGIC0 && data[1]==MOTA_SEEDER_REQ_MAGIC1); + uint8_t op=data[2], xor_sum=0; + for(size_t i=2;i +#include +#include +#include +#include +#include +#define MQTT_DEBUG_PRINTLN(...) ((void)0) +static constexpr int ESP_OK=0; +using esp_err_t=int; +const char* esp_err_to_name(int) { return "mock"; } +uint32_t millis() { return 123; } +const uint8_t rootca_bytes[16]={}; +const uint8_t* rootca_crt_bundle_start=nullptr; +const uint8_t* rootca_crt_bundle_end=nullptr; +static bool s_ca_bundle_loaded=false; +struct Client { + int credentials=0, bundles=0, attaches=0; std::string server; + void setServer(const char* uri) { server=uri; } + void setCACertBundle(const uint8_t*, size_t) { ++bundles; } + void attachArduinoCACertBundle(bool value) { assert(value); ++attaches; } + void setCredentials(const char*, const char*) { ++credentials; } +}; +struct MQTTBridge { + struct MQTTSlot { + char host[100]="broker.example", broker_uri[150]={}; + char username[40]="user", password[40]="secret", audience[40]={}; + char token[80]="signed-jwt"; char* auth_token=token; + uint16_t port=8883; Client* client=nullptr; + bool initial_connect_done=true; uint32_t last_reconnect_attempt=0; + } _slots[2]; + Client clients[2]; int connects=0, tokens=0; + const char* _jwt_username="jwt"; + MQTTBridge() { for (int i=0;i<2;++i) _slots[i].client=&clients[i]; } + bool createSlotAuthToken(int) { ++tokens; return true; } + int reconnectSlotClient(int) { ++connects; return ESP_OK; } + bool setupCustom(int); +}; +@METHOD@ +int main() { + for (const char* host : {"mqtts://broker", "wss://broker/path", "broker"}) { + for (bool jwt : {false, true}) { + MQTTBridge bridge; auto& slot=bridge._slots[0]; + strcpy(slot.host, host); if(jwt) strcpy(slot.audience, "fleet-audience"); + assert(!bridge.setupCustom(0)); + assert(!slot.initial_connect_done && slot.last_reconnect_attempt==123); + assert(bridge.connects==0 && bridge.tokens==0 && bridge.clients[0].credentials==0); + } + } + // Port 443 infers WSS and needs verification too. + MQTTBridge wss; wss._slots[0].port=443; assert(!wss.setupCustom(0)); assert(wss.connects==0); + // Explicit plaintext is an operator choice; never silently downgrade TLS. + for (const char* host : {"mqtt://broker", "ws://broker/path", "broker"}) { + MQTTBridge plain; strcpy(plain._slots[0].host, host); plain._slots[0].port=1883; + assert(plain.setupCustom(0) && plain.connects==1 && plain.clients[0].credentials==1); + assert(plain.clients[0].bundles==0); + } + rootca_crt_bundle_start=rootca_bytes; rootca_crt_bundle_end=rootca_bytes+sizeof(rootca_bytes); + MQTTBridge trusted; +#ifdef PORTABLE_MQTT_OBSERVER + assert(!trusted.setupCustom(0) && trusted.connects==0); // bundle deliberately unlinked +#else + assert(trusted.setupCustom(0)); + assert(s_ca_bundle_loaded && trusted.clients[0].bundles==1 && trusted.clients[0].credentials==1); + strcpy(trusted._slots[1].audience, "fleet-audience"); + assert(trusted.setupCustom(1)); + assert(trusted.clients[1].bundles==0 && trusted.clients[1].attaches==1); + assert(trusted.tokens==1 && trusted.connects==2); + assert(trusted.clients[0].server=="mqtts://broker.example:8883"); +#endif + puts("MQTT custom TLS security regression checks passed"); +} diff --git a/test/fixtures/ota_catalog_lifetime/test.cpp b/test/fixtures/ota_catalog_lifetime/test.cpp index 2655a2d68..c33c6c25d 100644 --- a/test/fixtures/ota_catalog_lifetime/test.cpp +++ b/test/fixtures/ota_catalog_lifetime/test.cpp @@ -98,7 +98,8 @@ static void filtered_catalog_remains_queryable(int scenario, bool automatic) { } } for (const auto& message : filtered) client.on_message(message.data(), message.size()); - assert(client.catalogCount() == (scenario == 4 ? 1 : scenario == 6 ? 0 : 15)); + assert(client.catalogCount() == (scenario == 4 ? 1 : scenario == 6 ? 0 : + automatic ? 15 : OTA_INLINE_CATALOG)); if (scenario == 8) { // Passive rows arriving before a beacon must not confer completeness on its new digest. client.on_message(wire, encode_adv(wire, sizeof(wire), adv)); @@ -114,7 +115,7 @@ static void filtered_catalog_remains_queryable(int scenario, bool automatic) { QueryMsg recovery{}; assert(decode_query(from_client[0].data(), from_client[0].size(), recovery)); assert(recovery.filter_target == 0); - assert(recovery.want_fragments == (scenario == 4 ? 1u : scenario == 5 ? 6u : scenario == 8 ? 0u : 7u)); + assert(recovery.want_fragments == (scenario == 4 ? 1u : scenario == 5 && automatic ? 6u : scenario == 8 ? 0u : 7u)); from_server.clear(); server.on_message(from_client[0].data(), from_client[0].size()); for (const auto& message : from_server) client.on_message(message.data(), message.size()); @@ -153,6 +154,7 @@ int main(int argc, char** argv) { assert(!row(manager, 2)); assert(manager.sourceCount() == OTA_MAX_SOURCES); } else if (scenario == 1) { + manager.queryAll(); // large catalogs are explicit operator browse policy for (unsigned i = 1; i <= OTA_MAX_CATALOG; ++i) { manager.set_clock(old + i * 100); have(manager, 1, i); diff --git a/test/fixtures/ota_security/identity_verify.cpp b/test/fixtures/ota_security/identity_verify.cpp new file mode 100644 index 000000000..074f6cc1c --- /dev/null +++ b/test/fixtures/ota_security/identity_verify.cpp @@ -0,0 +1,19 @@ +#include +#include + +// Real Ed25519 behind the firmware Identity API for host OTA-policy fixtures. +namespace mesh { +unsigned signature_checks = 0; +bool Identity::verify(const uint8_t* signature, const uint8_t* message, int length) const { + ++signature_checks; + if (!signature || !message || length < 0) return false; + EVP_PKEY* public_key = EVP_PKEY_new_raw_public_key(EVP_PKEY_ED25519, nullptr, + pub_key, sizeof(pub_key)); + EVP_MD_CTX* context = EVP_MD_CTX_new(); + const bool valid = public_key && context && + EVP_DigestVerifyInit(context, nullptr, nullptr, nullptr, public_key) == 1 && + EVP_DigestVerify(context, signature, SIGNATURE_SIZE, message, length) == 1; + EVP_MD_CTX_free(context); EVP_PKEY_free(public_key); + return valid; +} +} diff --git a/test/fixtures/ota_security/test.cpp b/test/fixtures/ota_security/test.cpp new file mode 100644 index 000000000..b549a696f --- /dev/null +++ b/test/fixtures/ota_security/test.cpp @@ -0,0 +1,394 @@ +#include +#include +#include +#include +#include "test_ota/mota_vectors.h" +#include +#include +#include +#include +#include +#include +#include +#include +namespace mesh { extern unsigned signature_checks; } +using namespace mesh::ota; + +static std::array allocations{}; +static std::array allocation_sizes{}; +static size_t allocated = 0, peak = 0; +extern "C" void* __real_malloc(size_t); +extern "C" void __real_free(void*); +extern "C" void* __wrap_malloc(size_t size) { + void* result = __real_malloc(size); + if (result) { + const auto free_slot = std::find(allocations.begin(), allocations.end(), nullptr); + assert(free_slot != allocations.end()); + const size_t index = free_slot - allocations.begin(); + allocations[index] = result; allocation_sizes[index] = size; + allocated += size; peak = std::max(peak, allocated); + } + return result; +} +extern "C" void __wrap_free(void* result) { + const auto found = std::find(allocations.begin(), allocations.end(), result); + if (result && found != allocations.end()) { + const size_t index = found - allocations.begin(); + allocated -= allocation_sizes[index]; allocations[index] = nullptr; + } + __real_free(result); +} + +struct Wire { + bool admit = true; + unsigned attempts = 0; + std::vector> messages; + static bool send(void* raw, const uint8_t* message, uint16_t length, bool) { + auto& self = *static_cast(raw); + ++self.attempts; + if (!self.admit) return false; + self.messages.emplace_back(message, message + length); + return true; + } +}; +struct Store : OtaStoreRam<4096> { + unsigned plans = 0, begins = 0, writes = 0; + bool plan_layout(bool, uint32_t, uint32_t, uint32_t, bool) override { ++plans; return true; } + bool begin(uint32_t size) override { ++begins; return OtaStoreRam<4096>::begin(size); } + bool write(uint32_t offset, const uint8_t* bytes, uint32_t size) override { + ++writes; return OtaStoreRam<4096>::write(offset, bytes, size); + } +}; +struct TrustedPolicy { + SignerAllowlist allow; + unsigned calls = 0; + static bool admit(void* raw, const MotaManifest& manifest) { + auto& policy = *static_cast(raw); + ++policy.calls; + return ota_manifest_trusted(manifest, policy.allow); + } +}; +static std::vector signed_manifest(TrustedPolicy& policy) { + std::vector result(SIM_MOTA + 8, SIM_MOTA + 8 + MOTA_MFL); + uint8_t secret[32]; + for (unsigned i = 0; i < sizeof(secret); ++i) secret[i] = uint8_t(i + 1); + EVP_PKEY* key = EVP_PKEY_new_raw_private_key(EVP_PKEY_ED25519, nullptr, secret, sizeof(secret)); + assert(key); + size_t public_size = 32; + assert(EVP_PKEY_get_raw_public_key(key, result.data() + 97, &public_size) == 1); + assert(public_size == 32 && policy.allow.add(result.data() + 97)); + EVP_MD_CTX* context = EVP_MD_CTX_new(); + size_t signature_size = 64; + assert(context && EVP_DigestSignInit(context, nullptr, nullptr, nullptr, key) == 1); + assert(EVP_DigestSign(context, result.data() + 129, &signature_size, + result.data(), MOTA_SIGNED_LEN) == 1); + assert(signature_size == 64); + EVP_MD_CTX_free(context); EVP_PKEY_free(key); + return result; +} +static void deliver_manifest(OtaManager& manager, const uint8_t mid[4], const uint8_t* bytes) { + for (unsigned fragment = 0; fragment < 2; ++fragment) { + ManifestMsg message{}; + memcpy(message.manifest_id, mid, 4); + message.frag_idx = fragment; message.frag_total = 2; + message.bytes = bytes + fragment * OTA_MF_FRAG; + message.len = fragment ? MOTA_MFL - OTA_MF_FRAG : OTA_MF_FRAG; + uint8_t wire[256]; + manager.on_message(wire, encode_manifest(wire, sizeof(wire), message)); + } +} +static void have(OtaManager& manager, const MotaManifest& manifest, uint32_t source = 1) { + uint8_t row[OTA_HAVE_ROW_BYTES]{}; + memcpy(row, manifest.merkle_root, 4); + wr_u32le(row + 4, manifest.target_id); wr_u32le(row + 8, manifest.fw_version); + row[12] = manifest.codec_id; row[13] = manifest.flags; wr_u16le(row + 14, 1); + HaveMsg message{}; + wr_u32le(message.seeder_id, source); message.frag_total = 1; + message.n_rows = 1; message.rows = row; + uint8_t wire[256]; + manager.on_message(wire, encode_have(wire, sizeof(wire), message)); +} +static MotaManifest parse(const std::vector& bytes) { + MotaManifest manifest{}; + assert(mota_parse_manifest(bytes.data(), bytes.size(), manifest)); + return manifest; +} +static void retain_existing(Store& store) { + assert(store.begin(SIM_MOTA_LEN) && store.write(0, SIM_MOTA, SIM_MOTA_LEN)); + store.plans = store.begins = store.writes = 0; +} +static void intact(const Store& store) { + assert(store.plans == 0 && store.begins == 0 && store.writes == 0); + assert(store.staged_size() == SIM_MOTA_LEN); + assert(!memcmp(store.data(), SIM_MOTA, SIM_MOTA_LEN)); +} +static void signature_admission() { + TrustedPolicy policy; + const auto good = signed_manifest(policy); + const auto valid = parse(good); + assert(ota_manifest_trusted(valid, policy.allow)); + for (unsigned scenario = 0; scenario < 5; ++scenario) { + auto bytes = good; + TrustedPolicy configured = policy; + if (scenario == 1) configured.allow.clear(); + if (scenario == 2) bytes[129] ^= 1; // signature corruption + if (scenario == 3) bytes[57] ^= 1; // signed hardware identity corruption + if (scenario == 4) bytes[1] &= uint8_t(~MFLAG_SIGNED); + const auto manifest = parse(bytes); + Store store; retain_existing(store); + Wire wire; OtaManager manager; + manager.begin(valid.target_id, Wire::send, &wire); + manager.set_fetch_store(&store); + manager.set_autofetch(OtaManager::AUTOFETCH_SIGNED); + if (scenario != 0) manager.set_manifest_admission(TrustedPolicy::admit, &configured); + have(manager, valid); + assert(manager.fetchState() == OtaManager::WANT_MANIFEST); + const unsigned checks = mesh::signature_checks; + deliver_manifest(manager, valid.merkle_root, bytes.data()); + assert(manager.fetchState() == OtaManager::FAILED); + assert(manager.fetchError() == OtaManager::FETCH_ERROR_MANIFEST); + intact(store); + if (scenario == 0 || scenario == 1 || scenario == 4) assert(mesh::signature_checks == checks); + else assert(mesh::signature_checks == checks + 1); + if (scenario != 4) assert(!ota_manifest_trusted(manifest, configured.allow) || scenario == 0); + } + // Approval is unsigned local authorization and must not survive peer ingress. + auto approved = good; + memset(approved.data() + 193, 0xA5, 4); + Store store; retain_existing(store); Wire wire; OtaManager manager; + manager.begin(valid.target_id, Wire::send, &wire); + manager.set_fetch_store(&store); + manager.set_autofetch(OtaManager::AUTOFETCH_SIGNED); + manager.set_manifest_admission(TrustedPolicy::admit, &policy); + have(manager, valid); + deliver_manifest(manager, valid.merkle_root, approved.data()); + assert(manager.fetchState() == OtaManager::FETCHING); + assert(store.plans == 1 && store.begins == 1); + MotaManifest staged; + assert(mota_parse_manifest(store.data() + 8, MOTA_MFL, staged)); + assert(ota_manifest_trusted(staged, policy.allow)); + assert(!staged.is_approved()); + // NOR flash can only clear bits. The unapproved marker must stay erased so + // the separate authorized local installer can program APPROVAL_YES later. + for (unsigned i = 0; i < 4; ++i) { + assert(staged.approval[i] == 0xFF); + assert((staged.approval[i] & APPROVAL_YES[i]) == APPROVAL_YES[i]); + } + // Automatic reboot resume has the same signature gate; manual capture is + // permitted independently and never grants automatic install approval. + const uint8_t corrupt_signature = store.data()[8 + 129] ^ 1u; + assert(store.write(8 + 129, &corrupt_signature, 1)); + manager.reset_session(); + assert(!manager.resumeStaged(nullptr)); + assert(manager.pull(valid.merkle_root, valid.target_id) == OtaManager::PULL_RESUMED); + assert(manager.fetchState() == OtaManager::VERIFYING_STAGED); +} +static void failure_cooldown(bool rollover) { + TrustedPolicy policy; + auto bytes = signed_manifest(policy); + bytes[129] ^= 1; + const auto manifest = parse(bytes); + Store store; retain_existing(store); Wire wire; OtaManager manager; + manager.begin(manifest.target_id, Wire::send, &wire); + manager.set_fetch_store(&store); + manager.set_autofetch(OtaManager::AUTOFETCH_SIGNED); + manager.set_manifest_admission(TrustedPolicy::admit, &policy); + uint32_t now = rollover ? UINT32_MAX - 30000u : 100u; + uint32_t delay = OTA_AUTOFETCH_FAILURE_BACKOFF_MS; + for (unsigned attempt = 0; attempt < 8; ++attempt) { + manager.set_clock(now); + have(manager, manifest); + assert(manager.fetchState() == OtaManager::WANT_MANIFEST); + deliver_manifest(manager, manifest.merkle_root, bytes.data()); + assert(manager.fetchState() == OtaManager::FAILED); + intact(store); + const unsigned admitted = policy.calls; + // Neither a repeated source nor rotating a forged MID bypasses cooldown. + auto rotated = bytes; rotated[20] ^= 0x42; + const auto other = parse(rotated); + for (unsigned packet = 0; packet < 100; ++packet) { + have(manager, packet % 2 ? other : manifest, packet + 2); + assert(manager.fetchState() == OtaManager::FAILED); + } + assert(policy.calls == admitted); + manager.set_clock(now + delay - 1u); + have(manager, manifest); + assert(manager.fetchState() == OtaManager::FAILED); + now += delay; + if (delay > OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS / 2u) delay = OTA_AUTOFETCH_FAILURE_MAX_BACKOFF_MS; + else delay *= 2u; + } + const unsigned admitted = policy.calls; + // The authorized manual pull works during cooldown, without silently + // altering the signed-only automatic policy or installation trust gate. + auto manual_bytes = bytes; manual_bytes[20] ^= 0x42; + const auto manual_manifest = parse(manual_bytes); + assert(manager.pull(manual_manifest.merkle_root, manual_manifest.target_id) == OtaManager::PULL_STARTED); + deliver_manifest(manager, manual_manifest.merkle_root, manual_bytes.data()); + assert(manager.fetchState() == OtaManager::FETCHING && policy.calls == admitted); + MotaManifest staged; + assert(mota_parse_manifest(store.data() + 8, MOTA_MFL, staged)); + assert(!ota_manifest_trusted(staged, policy.allow)); +} + +static std::vector container(uint32_t blocks) { + const uint32_t block_size = 128, payload_size = blocks * block_size; + const uint32_t size = 8 + MOTA_MFL + blocks * 4 + payload_size + 5; + std::vector image(size, 0); + memcpy(image.data(), MOTA_MAGIC, 4); wr_u32le(image.data() + 4, size); + uint8_t* manifest = image.data() + 8; + memcpy(manifest, SIM_MOTA + 8, MOTA_MFL); + manifest[1] = MFLAG_FULL; manifest[2] = HASH_ALGO_SHA256; + manifest[19] = 7; + wr_u32le(manifest + 11, payload_size); wr_u32le(manifest + 15, payload_size); + // codec is offset56 in the fixed manifest. + manifest[56] = CODEC_FULL; + uint8_t* leaves = manifest + MOTA_MFL; + uint8_t* payload = leaves + blocks * 4; + for (uint32_t i = 0; i < payload_size; ++i) payload[i] = uint8_t(i * 17u); + for (uint32_t i = 0; i < blocks; ++i) merkle_leaf(leaves + i * 4, payload + i * block_size, block_size); + merkle_root(manifest + 20, leaves, blocks); + memcpy(image.data() + size - 5, MOTA_TRAILER, 5); + MotaManifest parsed; assert(mota_parse(image.data(), size, parsed)); + assert(parsed.block_count == blocks); + return image; +} +static bool leaves(OtaManager& manager, const uint8_t* mid, uint16_t mask, OtaReplyRoute route = {}) { + GetLeavesMsg request{}; + memcpy(request.manifest_id, mid, 4); request.want_mask = mask; + uint8_t wire[32]; + return manager.on_message(wire, encode_get_leaves(wire, sizeof(wire), request), route); +} +static bool route_valid(void* current, const OtaReplyRoute& route) { + return route == *static_cast(current); +} +static void leaf_pacing(bool rollover) { + const auto image = container(OTA_DIFF_MAX_BLOCKS); + MotaManifest manifest; assert(mota_parse(image.data(), image.size(), manifest)); + Wire wire; OtaManager manager; + manager.begin(1, Wire::send, &wire); assert(manager.serve(image.data(), image.size())); + uint32_t now = rollover ? UINT32_MAX - 50u : 100u; + manager.set_clock(now); + OtaReplyRoute route; route.profile = 1; route.generation = 7; + assert(leaves(manager, manifest.merkle_root, 0xFFFF, route)); + assert(manager.pendingManifestJobs() == 1 && wire.messages.empty()); + for (unsigned i = 0; i < 100; ++i) assert(leaves(manager, manifest.merkle_root, 0xFFFF, route)); + assert(manager.pendingManifestJobs() == 1 && wire.messages.empty()); + manager.serviceEgress(route_valid, &route); + assert(wire.attempts == 0); // turnaround deadline has not expired + now += 100; + manager.set_clock(now); wire.admit = false; + for (unsigned i = 0; i < 100; ++i) manager.serviceEgress(route_valid, &route); + assert(wire.messages.empty() && manager.pendingManifestJobs() == 1); + wire.admit = true; + for (unsigned fragment = 0; fragment < 16; ++fragment) { + const unsigned before = wire.messages.size(); + manager.serviceEgress(route_valid, &route); + assert(wire.messages.size() == before + 1); + LeavesMsg reply; + assert(decode_leaves(wire.messages.back().data(), wire.messages.back().size(), reply)); + assert(reply.frag_idx == fragment && reply.frag_total == 16); + assert(!memcmp(reply.bytes, manifest.leaves + fragment * OTA_LEAVES_FRAG, reply.len)); + if (fragment < 15) { + assert(leaves(manager, manifest.merkle_root, 0xFFFF, route)); + manager.serviceEgress(route_valid, &route); + assert(wire.messages.size() == before + 1); // duplicates never reset/send emitted bits + } + now += 100; manager.set_clock(now); + } + assert(manager.pendingManifestJobs() == 0 && wire.messages.size() == 16); + // Retry exactly the requested holes, without synchronous transmission. + assert(leaves(manager, manifest.merkle_root, 0x8001, route)); + for (unsigned i = 0; i < 2; ++i) { + now += 100; manager.set_clock(now); manager.serviceEgress(route_valid, &route); + LeavesMsg reply; + assert(decode_leaves(wire.messages.back().data(), wire.messages.back().size(), reply)); + assert(reply.frag_idx == (i ? 15 : 0)); + } + assert(manager.pendingManifestJobs() == 0); + // Closed temporary radio generations and explicit teardown cannot retain + // stale queued work or reply on another profile. + assert(leaves(manager, manifest.merkle_root, 1, route)); + ++route.generation; + const auto before = wire.messages.size(); + manager.serviceEgress(route_valid, &route); + assert(manager.pendingManifestJobs() == 0 && wire.messages.size() == before); + assert(leaves(manager, manifest.merkle_root, 1, route)); + manager.clearPendingEgress(); + assert(manager.pendingManifestJobs() == 0); + assert(!leaves(manager, manifest.merkle_root, 0, route)); + const auto oversized = container(OTA_DIFF_MAX_BLOCKS + 1); + assert(manager.serve(oversized.data(), oversized.size())); + MotaManifest large; assert(mota_parse(oversized.data(), oversized.size(), large)); + assert(!leaves(manager, large.merkle_root, 0xFFFF, route)); + assert(manager.pendingManifestJobs() == 0); +} +static void catalog(OtaManager& manager, uint32_t first, uint32_t last) { + for (uint32_t id = first; id < last; ++id) { + uint8_t row[OTA_HAVE_ROW_BYTES]{}; + wr_u32le(row, id + 1); wr_u32le(row + 4, 123); + row[12] = CODEC_FULL; row[13] = MFLAG_FULL; + HaveMsg message{}; wr_u32le(message.seeder_id, 42); + message.frag_total = 1; message.n_rows = 1; message.rows = row; + uint8_t wire[256]; + manager.on_message(wire, encode_have(wire, sizeof(wire), message)); + } +} +static void catalog_budget() { + assert(allocated == 0); + { + OtaManager manager; manager.begin(123, nullptr, nullptr); + catalog(manager, 0, 255); + assert(manager.catalogCount() == OTA_INLINE_CATALOG && allocated == 0); + manager.queryAll(); catalog(manager, 0, 255); + assert(manager.catalogCount() == OTA_MAX_CATALOG); + assert(allocated == sizeof(OtaManager::CatRow) * OTA_MAX_CATALOG && allocated <= 16384); + AdvMsg withdrawal{}; wr_u32le(withdrawal.seeder_id, 42); + uint8_t wire[64]; manager.on_message(wire, encode_adv(wire, sizeof(wire), withdrawal)); + assert(manager.catalogCount() == 0 && allocated == 0); + catalog(manager, 0, 255); + assert(allocated != 0); + manager.begin(123, nullptr, nullptr); + assert(manager.catalogCount() == 0 && allocated == 0); + catalog(manager, 0, 255); + assert(manager.catalogCount() == OTA_INLINE_CATALOG && allocated == 0); + } + assert(allocated == 0); +} +static void proof_noise() { + MotaManifest manifest; assert(mota_parse(SIM_MOTA_1K, SIM_MOTA_1K_LEN, manifest)); + Store store; Wire wire; OtaManager manager; + manager.begin(manifest.target_id, Wire::send, &wire); + manager.set_fetch_store(&store); manager.set_clock(100); + manager.set_wire_v2_enabled(false); + assert(manager.pull(manifest.merkle_root, manifest.target_id) == OtaManager::PULL_STARTED); + deliver_manifest(manager, manifest.merkle_root, manifest.manifest_start); + uint8_t packet[256]; + const uint32_t size = manifest.block_size(); + for (uint32_t offset = 0; offset < size; offset += OTA_FRAG_DATA) { + DataMsg data{}; memcpy(data.manifest_id, manifest.merkle_root, 4); + data.block_idx = 0; data.frag_off = offset; + data.data = manifest.payload + offset; data.data_len = std::min(size - offset, uint32_t(OTA_FRAG_DATA)); + manager.on_message(packet, encode_data(packet, sizeof(packet), data)); + } + std::array siblings{}; + const uint8_t count = merkle_gen_proof(manifest.leaves, manifest.block_count, 0, nullptr, siblings.data()); + assert(count > 0); + ProofMsg proof{}; memcpy(proof.manifest_id, manifest.merkle_root, 4); + proof.block_idx = 0; proof.n_proof = count; proof.proof = siblings.data(); + siblings[0] ^= 1; + const unsigned before = wire.messages.size(); + for (unsigned i = 0; i < 100; ++i) manager.on_message(packet, encode_proof(packet, sizeof(packet), proof)); + assert(manager.blocksHave() == 0 && wire.messages.size() == before); + siblings[0] ^= 1; + manager.on_message(packet, encode_proof(packet, sizeof(packet), proof)); + assert(manager.blocksHave() == 1); // forged proof did not erase valid DATA +} +int main() { + signature_admission(); + failure_cooldown(false); failure_cooldown(true); + leaf_pacing(false); leaf_pacing(true); + catalog_budget(); proof_noise(); + assert(allocated == 0); + puts("PASS: authenticated automatic staging, bounded catalog, paced leaves and proof-noise recovery"); +} diff --git a/test/fixtures/webconfig_recovery_auth.cpp b/test/fixtures/webconfig_recovery_auth.cpp new file mode 100644 index 000000000..8833f2941 --- /dev/null +++ b/test/fixtures/webconfig_recovery_auth.cpp @@ -0,0 +1,104 @@ +#include +#include +#include +#include +#include +#include +struct String : std::string { + using std::string::string; + String(std::string value) : std::string(std::move(value)) {} + int indexOf(const char* value) const { auto pos=find(value); return pos==npos ? -1 : int(pos); } + String substring(int begin, int end) const { return substr(begin, end-begin); } +}; +static uint32_t now_ms=10, random_word=0x12345678; +uint32_t millis() { return now_ms; } +uint32_t esp_random() { return ++random_word; } +static constexpr uint32_t WEBCONFIG_SESSION_TTL_MS=10000; +struct NodeSnapshot { char admin_password[16] = {}; }; +struct Callback { + NodeSnapshot node; + void getNodeSnapshot(NodeSnapshot& result) { result=node; } +}; +struct WCLock { explicit WCLock(int) {} }; +struct WiFiMock { int softAPIP() const { return 4; } } WiFi; +struct Client { int local_ip=4; int localIP() const { return local_ip; } }; +struct Header { String cookies; const String& value() const { return cookies; } }; +struct AsyncWebServerResponse { + int status; std::map headers; + void addHeader(const char* key, const char* value) { headers[key]=value; } +}; +struct AsyncWebServerRequest { + Client socket; bool has_client=true; + Header header; std::string body; void* _tempObject=nullptr; + int status=0; AsyncWebServerResponse response{}; + Client* client() { return has_client ? &socket : nullptr; } + bool hasHeader(const char*) const { return !header.cookies.empty(); } + Header* getHeader(const char*) { return &header; } + void send(int code, const char* =nullptr, const char* =nullptr) { status=code; } + AsyncWebServerResponse* beginResponse(int code, const char*, const char*) { response.status=code; return &response; } + void send(AsyncWebServerResponse* value) { status=value->status; } + void password(const char* value) { body=std::string("{\"password\":\"")+value+"\"}"; _tempObject=body.data(); } +}; +struct WebConfigServer { + enum { MODE_OFF, MODE_SETUP, MODE_LAN }; + int _mode=MODE_SETUP, _mux=0; + char _wifi_ssid[33]="SavedNet", _session_token[33] = {}; + bool _initial_setup=false, config_accepted=false; + uint32_t _last_activity=0, _session_last_seen=0, _login_lock_until=0; + int _login_fails=0; Callback callback; Callback* _cb=&callback; + WebConfigServer() { strcpy(callback.node.admin_password, "existing-secret"); } + bool checkAuth(AsyncWebServerRequest*); + void handleLogin(AsyncWebServerRequest*); + void handleLogout(AsyncWebServerRequest*); + void checkConfigPost(AsyncWebServerRequest*); +}; +@METHODS@ +int main() { + WebConfigServer portal; AsyncWebServerRequest attacker; + attacker.body="{\"set\":{\"password\":\"attacker\",\"wifi.ssid\":\"EvilNet\"}}"; + attacker._tempObject=attacker.body.data(); + assert(!portal.checkAuth(&attacker)); + portal.checkConfigPost(&attacker); + assert(attacker.status==401 && !portal.config_accepted); + attacker.password("wrong"); portal.handleLogin(&attacker); + assert(attacker.status==401 && portal._session_token[0]==0); + AsyncWebServerRequest admin; admin.password("existing-secret"); + portal.handleLogin(&admin); assert(admin.status==200); + assert(strlen(portal._session_token)==32); + assert(admin.response.headers["Set-Cookie"].find("HttpOnly; SameSite=Lax")!=std::string::npos); + admin.header.cookies=std::string("wcs=")+portal._session_token; + assert(portal.checkAuth(&admin)); portal.checkConfigPost(&admin); + assert(portal.config_accepted); + std::string valid_token=portal._session_token; + portal.handleLogout(&attacker); + assert(attacker.status==401 && valid_token==portal._session_token); + admin.socket.local_ip=9; + assert(!portal.checkAuth(&admin)); + admin.password("existing-secret"); portal.handleLogin(&admin); + assert(admin.status==401); // recovery must not authorize a recovered STA/LAN + admin.socket.local_ip=4; + admin.has_client=false; assert(!portal.checkAuth(&admin)); admin.has_client=true; + now_ms+=WEBCONFIG_SESSION_TTL_MS+1; assert(!portal.checkAuth(&admin)); + admin.password("existing-secret"); portal.handleLogin(&admin); assert(admin.status==200); + admin.header.cookies=std::string("wcs=")+portal._session_token; + portal.handleLogout(&admin); assert(admin.status==200 && portal._session_token[0]==0); + assert(!portal.checkAuth(&admin)); + portal._mode=WebConfigServer::MODE_LAN; admin.socket.local_ip=9; + admin.password("existing-secret"); portal.handleLogin(&admin); assert(admin.status==200); + admin.header.cookies=std::string("wcs=")+portal._session_token; assert(portal.checkAuth(&admin)); + portal._mode=WebConfigServer::MODE_OFF; assert(!portal.checkAuth(&admin)); + portal.handleLogin(&admin); assert(admin.status==503); + // First provisioning remains possible and retains its AP-only privilege + // through a save batch that changes SSID before the confirmation arrives. + portal._mode=WebConfigServer::MODE_SETUP; portal._wifi_ssid[0]=0; + portal._initial_setup=true; assert(portal.checkAuth(&attacker)); + strcpy(portal._wifi_ssid, "ProvisionedNet"); assert(portal.checkAuth(&attacker)); + portal.handleLogin(&attacker); assert(attacker.status==200); + attacker.socket.local_ip=9; assert(!portal.checkAuth(&attacker)); + portal.handleLogin(&attacker); assert(attacker.status==401); attacker.socket.local_ip=4; + // Companion images deliberately have no administrator password or CLI + // password management. Keep that explicit no-password deployment policy. + portal._initial_setup=false; portal.callback.node.admin_password[0]=0; + assert(portal.checkAuth(&attacker)); portal.handleLogin(&attacker); assert(attacker.status==200); + puts("WebConfig recovery authentication regression checks passed"); +} diff --git a/test/test_cli_error_bounds.py b/test/test_cli_error_bounds.py new file mode 100644 index 000000000..d572fbcb9 --- /dev/null +++ b/test/test_cli_error_bounds.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +"""Run both production unknown-config fallbacks with real sanitizer bounds. + +The final CommonCLI setter branch and nested observer MQTT-slot branch are +extracted verbatim. Hardware-dependent recognized setters are excluded. Negative +controls restore the audited legacy sprintf statement and must cause a genuine +AddressSanitizer overflow for the same maximum-size inputs. +""" + +from pathlib import Path +import os +import re +import shutil +import subprocess +import tempfile +import unittest + +from cpp_source import body + + +ROOT = Path(__file__).resolve().parents[1] +FIXTURE = ROOT / "test/fixtures/cli_error_bounds/main.cpp" + + +def fallback(method): + marker = method.index('"unknown config"') + assert method.count('"unknown config"') == 1 + start = method.rfind("} else {", 0, marker) + assert start >= 0, "unknown-setting branch moved; review the fixture" + branch = body(method[start + 2:], "else") + assert '"unknown config"' in branch + return branch + + +class CliErrorBoundsTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + compiler = os.environ.get("CXX") or shutil.which("g++") or shutil.which("clang++") + if not compiler: + raise RuntimeError("CLI reply bounds require a C++17 sanitizer compiler") + common = body((ROOT / "src/helpers/CommonCLI.cpp").read_text(), + "void CommonCLI::handleSetCmd(") + observer = body((ROOT / "src/helpers/CommonCLI_Observer.cpp").read_text(), + "bool CommonCLI::handleObserverSetCmd(") + config = re.search(r"const char\* config = &command\[4\];", common) + assert config, "production setter command prefix moved" + common_branch, observer_branch = fallback(common), fallback(observer) + template = FIXTURE.read_text(encoding="ascii") + cls.work = tempfile.TemporaryDirectory(prefix="meshcore-cli-error-bounds-") + cls.binaries = {} + for legacy in (False, True): + source = template.replace("@COMMON_CONFIG@", config.group(0)) + source = source.replace("@COMMON_FALLBACK@", common_branch) + source = source.replace("@OBSERVER_FALLBACK@", observer_branch) + if legacy: + previous = 'strcpy(reply, "unknown config");' + assert source.count(previous) == 2, "update the old formatter negative control" + source = source.replace(previous, 'sprintf(reply, "unknown config: %s", config);') + directory = Path(cls.work.name) + path = directory / ("legacy.cpp" if legacy else "production.cpp") + binary = directory / ("legacy" if legacy else "production") + path.write_text(source, encoding="ascii") + result = subprocess.run([ + compiler, "-std=c++17", "-O1", "-g", "-Wall", "-Wextra", "-Werror", + "-fsanitize=address,undefined", "-fno-sanitize-recover=all", + "-fno-omit-frame-pointer", "-fno-pie", "-no-pie", + str(path), "-o", str(binary), + ], capture_output=True, text=True, timeout=60) + if result.returncode: + cls.work.cleanup() + raise AssertionError(result.stdout + result.stderr) + cls.binaries[legacy] = binary + + @classmethod + def tearDownClass(cls): + cls.work.cleanup() + + def run_case(self, scenario, legacy=False): + for parser in ("common", "observer"): + with self.subTest(parser=parser, legacy=legacy): + environment = dict(os.environ, ASAN_OPTIONS="detect_leaks=0:abort_on_error=0") + result = subprocess.run([str(self.binaries[legacy]), parser, scenario], + capture_output=True, text=True, timeout=10, env=environment) + if legacy: + self.assertNotEqual(result.returncode, 0) + self.assertIn("AddressSanitizer", result.stderr) + self.assertIn("buffer-overflow", result.stderr) + else: + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + + def test_maximum_local_command_fits_exact_160_byte_reply_and_preserves_canaries(self): + self.run_case("local") + + def test_maximum_radio_command_preserves_reply_path_after_exact_179_byte_window(self): + self.run_case("radio") + + def test_error_fits_the_exact_literal_size_even_with_maximum_command(self): + self.run_case("minimum") + + def test_input_lengths_through_four_kilobytes_never_change_reply_or_touch_path(self): + self.run_case("lengths") + + def test_previous_formatter_fails_sanitizer_for_maximum_local_command(self): + self.run_case("local", legacy=True) + + def test_previous_formatter_fails_sanitizer_for_maximum_radio_command(self): + self.run_case("radio", legacy=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_fleet_channel_runtime.py b/test/test_fleet_channel_runtime.py index 86e15d342..38487e761 100644 --- a/test/test_fleet_channel_runtime.py +++ b/test/test_fleet_channel_runtime.py @@ -508,9 +508,47 @@ static int fragmentScenario(const std::string& scenario){ }else if(scenario=="fragments_fresh_retry"){ assert(f.feed(a)==0);f.partial();auto newer=envelope(f.publisher,seq+1,f.expected); Packet fresh_first=part(newer,1),fresh_second=part(newer,0); - assert(f.feed(fresh_first)==0);f.partial(); - assert(f.feed(b)==0);f.partial();assert(f.feed(fresh_second)==1&&f.reserved()==seq+1); - assert(f.feed(a)==0&&f.feed(b)==0&&f.calls==1&&f.mesh.queued==1); + assert(f.feed(fresh_first)==0&&f.stats().find("parts=2")!=std::string::npos); + // The unsigned newer metadata does not invalidate an authentic older + // envelope. Its signed sequence still passes the durable monotonic gate. + assert(f.feed(b)==1&&f.reserved()==seq&&f.stats().find("parts=0")!=std::string::npos); + assert(f.feed(fresh_second)==0&&f.feed(fresh_first)==1&&f.reserved()==seq+1); + assert(f.feed(a)==0&&f.feed(b)==0&&f.calls==2&&f.mesh.queued==2); + }else if(scenario=="fragments_future_poison"){ + for(unsigned reverse=0;reverse<2;++reverse){ + FragmentFixture x;auto encoded=envelope(x.publisher,seq,x.expected); + Packet first=part(encoded,reverse?1:0),second=part(encoded,reverse?0:1); + Packet poison=changePart(first,[&](uint8_t* frame){storage::writeLE32(frame+4,seq+60);}); + const auto saved=x.disk.files.at(Path);const unsigned verifies=verify_calls; + assert(x.feed(poison,nullptr,0)==0&&x.feed(first,nullptr,0)==0); + assert(x.stats().find("parts=2")!=std::string::npos&&x.disk.files.at(Path)==saved); + assert(x.feed(poison,nullptr,0)==0&&verify_calls==verifies); + assert(x.feed(second,nullptr,0)==1&&x.reserved()==seq&&verify_calls==verifies+1); + assert(x.stats().find("parts=0")!=std::string::npos&&x.feed(poison)==0); + assert(x.feed(first)==0&&x.feed(second)==0&&x.calls==1); + FleetChannel rebooted(&x.disk);unsigned calls=0; + for(Packet* packet:{&first,&second}){rebooted.receive(packet,x.mesh); + rebooted.service(x.mesh,x.profiles,"node",[&](uint32_t,const char*,char*){++calls;});} + assert(calls==0&&x.reserved()==seq); + } + }else if(scenario=="fragments_oldest_eviction"){ + Packet poison_a=changePart(a,[&](uint8_t* frame){storage::writeLE32(frame+4,seq+60);}); + Packet poison_b=changePart(a,[&](uint8_t* frame){storage::writeLE32(frame+4,seq+59);}); + assert(f.feed(poison_a)==0&&f.feed(poison_b)==0); + assert(f.stats().find("parts=2")!=std::string::npos); + // A third transfer replaces the oldest slot despite its higher sequence. + assert(f.feed(a)==0&&f.feed(b)==1&&f.reserved()==seq&&f.calls==1); + assert(f.stats().find("parts=0")!=std::string::npos); + }else if(scenario=="fragments_independent_failure"){ + Packet poison_a=changePart(a,[&](uint8_t* frame){storage::writeLE32(frame+4,seq+60);}); + Packet poison_b=changePart(b,[&](uint8_t* frame){storage::writeLE32(frame+4,seq+60);}); + assert(f.feed(a)==0&&f.feed(poison_a)==0&&f.feed(poison_b)==0); + f.partial();assert(f.feed(b)==1&&f.reserved()==seq&&f.calls==1); + }else if(scenario=="fragments_budget_partial"){ + const unsigned verifies=verify_calls; + for(unsigned i=0;i<20;++i)assert(f.feed(a,nullptr,0)==0); + assert(verify_calls==verifies&&f.feed(b,nullptr,0)==1); + assert(verify_calls==verifies+1&&f.reserved()==seq); }else if(scenario=="fragments_tamper"){ Packet mac=a;mac.payload[1]^=1;assert(f.feed(mac)==0&&f.stats().find("parts=0")!=std::string::npos); assert(f.feed(a)==0);f.partial();const auto saved=f.disk.files.at(Path); @@ -1037,11 +1075,38 @@ int main(int argc,char** argv){ Packet mine=command(publisher,mesh.clock.now,"set radio2 off",target);assert(apply(fleet,fs,mesh,profiles,mine)==1); assert(last_jitter_max==1500); }else if(scenario=="verify_budget"){ - enroll(fleet,publisher);Packet packet=command(publisher,mesh.clock.now); - packet.payload[1]^=1;unsigned before=decrypt_calls; - for(unsigned i=0;i<20;++i)assert(apply(fleet,fs,mesh,profiles,packet)==0); - assert(decrypt_calls-before==4);fake_ms+=1000;packet=command(publisher,mesh.clock.now); - assert(apply(fleet,fs,mesh,profiles,packet)==1); + enroll(fleet,publisher);LocalIdentity stranger; + Packet forged=command(stranger,mesh.clock.now); + const unsigned before=verify_calls; + for(unsigned i=0;i<20;++i)assert(apply(fleet,fs,mesh,profiles,forged)==0); + assert(verify_calls-before==4);fake_ms+=1000; + Packet valid=command(publisher,mesh.clock.now); + assert(apply(fleet,fs,mesh,profiles,valid)==1); + }else if(scenario=="invalid_mac_cannot_starve"){ + enroll(fleet,publisher);Packet valid=command(publisher,mesh.clock.now); + Packet garbage=valid;garbage.payload[1]^=1; + const unsigned before=verify_calls; + for(unsigned i=0;i<20;++i)assert(apply(fleet,fs,mesh,profiles,garbage)==0); + assert(verify_calls==before); + assert(apply(fleet,fs,mesh,profiles,valid)==1); + assert(verify_calls==before+1&&mesh.queued==1); + }else if(scenario=="replay_cannot_starve"){ + enroll(fleet,publisher);const uint32_t seq=mesh.clock.now; + Packet previous=command(publisher,seq); + assert(apply(fleet,fs,mesh,profiles,previous)==1); + fake_ms+=1000;const unsigned before=verify_calls; + for(unsigned i=0;i<20;++i)assert(apply(fleet,fs,mesh,profiles,previous)==0); + assert(verify_calls==before); + Packet next=command(publisher,seq+1); + assert(apply(fleet,fs,mesh,profiles,next)==1&&verify_calls==before+1); + }else if(scenario=="wrong_target_cannot_starve"){ + enroll(fleet,publisher);LocalIdentity other; + Packet not_mine=command(publisher,mesh.clock.now,"get radio2",publicHex(other).c_str()); + const unsigned before=verify_calls; + for(unsigned i=0;i<20;++i)assert(apply(fleet,fs,mesh,profiles,not_mine)==0); + assert(verify_calls==before); + Packet valid=command(publisher,mesh.clock.now); + assert(apply(fleet,fs,mesh,profiles,valid)==1&&verify_calls==before+1); }else if(scenario=="primary_denied"){ assert(!FleetCommand::commandAllowed("set radio 915,500,5,5")); assert(!FleetCommand::commandAllowed("set tempradio 915,500,5,5,10")); @@ -1410,9 +1475,18 @@ class SHA256 : public SHA256Base {{ public: def test_real_signature_mac_padding_and_full_identity_target_checks(self): self.scenario("tamper_padding_target") - def test_forged_packets_have_bounded_verification_cost(self): + def test_forged_mac_authenticated_packets_have_bounded_signature_verification_cost(self): self.scenario("verify_budget") + def test_invalid_mac_packets_cannot_exhaust_the_signature_verification_budget(self): + self.scenario("invalid_mac_cannot_starve") + + def test_recorded_used_command_replays_cannot_spend_signature_budget_before_next_command(self): + self.scenario("replay_cannot_starve") + + def test_recorded_commands_for_another_target_cannot_spend_signature_budget(self): + self.scenario("wrong_target_cannot_starve") + def test_fleet_permission_never_allows_primary_radio_or_administrator_changes(self): self.scenario("primary_denied") @@ -1479,9 +1553,21 @@ class SHA256 : public SHA256Base {{ public: def test_conflicting_parts_cannot_destroy_a_valid_incomplete_transfer(self): self.scenario("fragments_conflicts") - def test_fresh_retry_preempts_missing_part_and_delayed_old_parts_cannot_pollute_it(self): + def test_unsigned_newer_fragment_cannot_invalidate_an_older_authenticated_envelope(self): self.scenario("fragments_fresh_retry") + def test_forged_future_sequence_interleaved_with_both_legitimate_fragment_orders_cannot_lock_out(self): + self.scenario("fragments_future_poison") + + def test_third_transfer_evicts_oldest_slot_instead_of_highest_unsigned_sequence(self): + self.scenario("fragments_oldest_eviction") + + def test_failed_complete_poisoned_assembly_preserves_the_other_legitimate_slot(self): + self.scenario("fragments_independent_failure") + + def test_duplicate_partial_fragments_cannot_spend_signature_verification_budget(self): + self.scenario("fragments_budget_partial") + def test_mac_and_last_signature_byte_tampering_never_authorize_partial_commands(self): self.scenario("fragments_tamper") diff --git a/test/test_mota_folder_deadline.py b/test/test_mota_folder_deadline.py new file mode 100644 index 000000000..90fc1e0c9 --- /dev/null +++ b/test/test_mota_folder_deadline.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +"""Exercise actual folder transactions against malicious/slow host streams.""" +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile +import unittest + +ROOT = Path(__file__).resolve().parents[1] + + +class MotaFolderDeadlineTest(unittest.TestCase): + def compile_run(self, production, expect_rejection=False): + compiler = shutil.which("g++") or shutil.which("clang++") + self.assertIsNotNone(compiler) + with tempfile.TemporaryDirectory(prefix="meshcore-mota-folder-deadline-") as temporary: + work = Path(temporary) + source = work / "FolderMotaStore.cpp" + source.write_text(production) + binary = work / "deadline" + sanitizers = (["-fsanitize=address,undefined", "-fno-sanitize-recover=all", + "-fno-pie", "-no-pie"] if sys.platform.startswith("linux") else []) + built = subprocess.run([compiler, "-std=c++17", "-Wall", "-Wextra", "-Werror", + *sanitizers, "-I" + str(ROOT / "src"), + "-I" + str(ROOT / "src/helpers/ota"), + "-isystem", str(ROOT / "test/mocks"), + str(source), str(ROOT / "test/fixtures/mota_folder_deadline.cpp"), + "-o", str(binary)], capture_output=True, text=True, timeout=60) + self.assertEqual(built.returncode, 0, built.stderr) + checked = subprocess.run([str(binary)], capture_output=True, text=True, timeout=10) + if expect_rejection: + self.assertNotEqual(checked.returncode, 0, checked.stdout + checked.stderr) + self.assertIn("Assertion", checked.stderr) + else: + self.assertEqual(checked.returncode, 0, checked.stdout + checked.stderr) + + def test_single_response_deadline_and_bounded_pre_request_drain(self): + self.compile_run((ROOT / "src/helpers/ota/FolderMotaStore.cpp").read_text()) + + def test_reintroduced_per_byte_timeout_is_rejected_at_runtime(self): + source = (ROOT / "src/helpers/ota/FolderMotaStore.cpp").read_text() + old = source.replace("bool FolderMotaStore::readByteT(uint8_t& b, uint32_t started) const {", + "bool FolderMotaStore::readByteT(uint8_t& b, uint32_t started) const {\n started = millis();", 1) + self.assertNotEqual(old, source) + self.compile_run(old, expect_rejection=True) + + def test_reintroduced_unbounded_drain_is_rejected_at_runtime(self): + source = (ROOT / "src/helpers/ota/FolderMotaStore.cpp").read_text() + old = source.replace(" int pending = _io.available();\n while (pending-- > 0) if (_io.read() < 0) break;", + " while (_io.read() >= 0) {}", 1) + self.assertNotEqual(old, source) + self.compile_run(old, expect_rejection=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_mqtt_tls_security.py b/test/test_mqtt_tls_security.py new file mode 100644 index 000000000..b98a5d97c --- /dev/null +++ b/test/test_mqtt_tls_security.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +"""Execute production custom-broker setup; no CA must mean no connection.""" +from pathlib import Path +import re +import shutil +import subprocess +import sys +import tempfile +import unittest + +from test_replay_reset_integration import extract_braced + +ROOT = Path(__file__).resolve().parents[1] + + +class MqttTlsSecurityTest(unittest.TestCase): + def compile_run(self, source, portable=False, expect_rejection=False): + compiler = shutil.which("g++") or shutil.which("clang++") + self.assertIsNotNone(compiler) + with tempfile.TemporaryDirectory(prefix="meshcore-mqtt-tls-security-") as temporary: + work = Path(temporary) + generated = work / "security.cpp" + generated.write_text(source) + binary = work / "security" + sanitizers = (["-fsanitize=address,undefined", "-fno-sanitize-recover=all", + "-fno-pie", "-no-pie"] if sys.platform.startswith("linux") else []) + compiled = subprocess.run([compiler, "-std=c++17", "-Wall", "-Wextra", *sanitizers, + *(["-DPORTABLE_MQTT_OBSERVER=1"] if portable else []), + str(generated), "-o", str(binary)], + capture_output=True, text=True, timeout=60) + self.assertEqual(compiled.returncode, 0, compiled.stderr) + result = subprocess.run([str(binary)], capture_output=True, text=True, timeout=10) + if expect_rejection: + self.assertNotEqual(result.returncode, 0, result.stdout + result.stderr) + self.assertIn("Assertion", result.stderr) + else: + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + + def fixture(self): + source = (ROOT / "src/helpers/bridges/MQTTBridge.cpp").read_text() + setup = extract_braced(source, "bool MQTTBridge::setupSlot(") + start = setup.index(" // Custom broker slot - build persistent URI") + # This is the entire production custom setup branch and the final + # connection attempt, including both real build preprocessor paths. + custom = "bool MQTTBridge::setupCustom(int index) {\nMQTTSlot& slot=_slots[index];\n{\n" + setup[start:] + return (ROOT / "test/fixtures/mqtt_tls_security.cpp").read_text().replace("@METHOD@", custom) + + def test_custom_tls_refuses_missing_ca_before_credentials_or_connect(self): + self.compile_run(self.fixture()) + + def test_portable_custom_tls_refuses_missing_ca_but_plaintext_policy_is_preserved(self): + self.compile_run(self.fixture(), portable=True) + + def test_old_no_bundle_fallback_fails_executable_regression(self): + fixture = self.fixture() + old = fixture.replace(" slot.initial_connect_done = false;\n" + " slot.last_reconnect_attempt = millis();\n" + " return false;\n", "", 1) + self.assertNotEqual(old, fixture) + self.compile_run(old, expect_rejection=True) + + def test_old_portable_fallback_fails_executable_regression(self): + fixture = self.fixture() + old = re.sub(r' if \(needs_tls\) \{\n MQTT_DEBUG_PRINTLN\("MQTT%d TLS refused: custom brokers require a CA bundle"[\s\S]*? return false;\n }', + " (void)needs_tls;", fixture, count=1) + self.assertNotEqual(old, fixture) + self.compile_run(old, portable=True, expect_rejection=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ota/test_ota_core.cpp b/test/test_ota/test_ota_core.cpp index 32fe7d85c..47dd259ee 100644 --- a/test/test_ota/test_ota_core.cpp +++ b/test/test_ota/test_ota_core.cpp @@ -4598,6 +4598,7 @@ TEST(OtaCatalog, IncompleteCatalogRetriesOnlyMissingFragment) { TEST(OtaCatalog, RetainsProtocolMaximumRows) { OtaManager client; client.begin(SIM_TARGET_ID, nullptr, nullptr); + client.queryAll(); // operator-requested browse opts into the bounded large cache const uint8_t per = (uint8_t)((MAX_PACKET_PAYLOAD - 12) / OTA_HAVE_ROW_BYTES); const uint8_t total = (uint8_t)((255 + per - 1) / per); uint8_t sid[4] = {1, 2, 3, 4}, digest[4] = {5, 6, 7, 8}; @@ -4763,6 +4764,7 @@ TEST(OtaTransfer, BootResumeHonorsCurrentAutofetchTargetAndVersionPolicy) { newer.begin(manifest.target_id, nullptr, nullptr); newer.set_fetch_store(&newer_store); newer.set_autofetch(OtaManager::AUTOFETCH_SIGNED); + newer.set_manifest_admission([](void*, const MotaManifest&) { return true; }, nullptr); newer.set_auto_version_floor(manifest.fw_version - 1u, true); EXPECT_TRUE(newer.resumeStaged(nullptr)); EXPECT_EQ(newer.fetchState(), OtaManager::VERIFYING_STAGED); diff --git a/test/test_ota_device_deflate_encoder.py b/test/test_ota_device_deflate_encoder.py index 0cbb85695..d09456547 100644 --- a/test/test_ota_device_deflate_encoder.py +++ b/test/test_ota_device_deflate_encoder.py @@ -475,7 +475,9 @@ class DeviceDeflateManagerTest(unittest.TestCase): "c++", "-std=c++17", "-Os", *flags, *defines, "-I", str(ROOT / "src"), "-I", str(ROOT / "test/mocks"), str(source), *[str(ROOT / "src/helpers/ota" / name) for name in sources], - str(ROOT / "src/Utils.cpp"), str(tinf), "-o", str(binary), + str(ROOT / "src/Utils.cpp"), str(tinf), + str(ROOT / "test/fixtures/ota_security/identity_verify.cpp"), + "-lcrypto", "-o", str(binary), ], capture_output=True, text=True) self.assertEqual(result.returncode, 0, result.stderr) for scenario in scenarios: diff --git a/test/test_ota_identity_policy.py b/test/test_ota_identity_policy.py index 6a20dc88f..e1d38933b 100644 --- a/test/test_ota_identity_policy.py +++ b/test/test_ota_identity_policy.py @@ -272,7 +272,9 @@ class OtaIdentityPolicyTest(unittest.TestCase): "-I", str(ROOT / "src"), "-I", str(ROOT / "test/mocks"), str(source), *[str(ROOT / "src/helpers/ota" / name) for name in sources], - str(ROOT / "src/Utils.cpp"), str(tinf), "-o", str(binary), + str(ROOT / "src/Utils.cpp"), str(tinf), + str(ROOT / "test/fixtures/ota_security/identity_verify.cpp"), + "-lcrypto", "-o", str(binary), ], capture_output=True, text=True) self.assertEqual(result.returncode, 0, result.stderr) subprocess.run([str(binary)], check=True) diff --git a/test/test_ota_security.py b/test/test_ota_security.py new file mode 100644 index 000000000..3df1ac72e --- /dev/null +++ b/test/test_ota_security.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +"""Run real OTA ingress/egress policy with real Ed25519 and bounded resources.""" +from pathlib import Path +import os +import shutil +import subprocess +import tempfile +import unittest + +ROOT = Path(__file__).resolve().parents[1] + + +class OtaSecurityTests(unittest.TestCase): + def test_manifest_authentication_cooldown_catalog_and_paced_metadata(self): + compiler = shutil.which("g++") or shutil.which("clang++") + self.assertIsNotNone(compiler) + with tempfile.TemporaryDirectory(prefix="ota-security-") as directory: + binary = Path(directory) / "security" + sources = ("OtaManager.cpp", "OtaProtocol.cpp", "MotaContainer.cpp", "MerkleTree.cpp") + flags = [] if os.name == "nt" else ["-fsanitize=address,undefined", "-fno-pie", "-no-pie"] + compiled = subprocess.run([ + compiler, "-std=c++17", "-O1", "-Wall", "-Wextra", "-Werror", + "-Wno-unused-parameter", "-Wno-sign-compare", *flags, + "-I", str(ROOT / "test/fixtures/ota_security"), + "-I", str(ROOT / "src"), "-I", str(ROOT / "test/mocks"), + "-I", str(ROOT / "test"), + str(ROOT / "test/fixtures/ota_security/test.cpp"), + str(ROOT / "test/fixtures/ota_security/identity_verify.cpp"), + *[str(ROOT / "src/helpers/ota" / name) for name in sources], + str(ROOT / "src/Utils.cpp"), "-lcrypto", "-Wl,--wrap=malloc", + "-Wl,--wrap=free", "-o", str(binary), + ], capture_output=True, text=True, timeout=90) + self.assertEqual(compiled.returncode, 0, compiled.stdout + compiled.stderr) + checked = subprocess.run([str(binary)], capture_output=True, text=True, timeout=30) + self.assertEqual(checked.returncode, 0, checked.stdout + checked.stderr) + self.assertIn("PASS: authenticated automatic staging", checked.stdout) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ota_self_serve_policy.py b/test/test_ota_self_serve_policy.py index 4b44adb42..e4c900978 100644 --- a/test/test_ota_self_serve_policy.py +++ b/test/test_ota_self_serve_policy.py @@ -89,6 +89,10 @@ typedef bool (*OtaSend)(void*, const uint8_t*, uint16_t, bool); struct SelfFwInfo { bool valid = false; uint32_t target_id = 0, fw_version = 0; char hw_id[33] = {}; }; static bool ota_self_firmware(SelfFwInfo& info) { info = SelfFwInfo(); return false; } static int ota_transport_inflate; +struct MotaManifest {}; +static bool ota_manifest_trusted(const MotaManifest&, int) { return false; } +struct Context; +using OtaContext = Context; enum { CODEC_DETOOLS_INPLACE = 1, CODEC_DETOOLS_SEQUENTIAL = 2 }; struct Store { bool external = false; @@ -100,6 +104,7 @@ struct Manager { bool accept_full = false; void begin(uint32_t, OtaSend, void*) {} void set_transport_deflate_decoder(int) {} + template void set_manifest_admission(Callback, void*) {} void set_auto_version_floor(uint32_t, bool) {} void set_accept_full(bool value) { accept_full = value; } void set_autofetch(uint8_t) {} @@ -112,6 +117,7 @@ struct Manager { using OtaManager = Manager; struct Context { Manager manager; + int allow = 0; Store fetch_store; bool self_serve_supported = false, fetch_to_folder = false; static const uint8_t AUTOINSTALL_OFF = 0; diff --git a/test/test_reply_tx_integration.py b/test/test_reply_tx_integration.py index 846a45962..932bbe910 100644 --- a/test/test_reply_tx_integration.py +++ b/test/test_reply_tx_integration.py @@ -177,18 +177,27 @@ int main() { assert(node.packet.radio_generation==primary.generation); node.ota_manager.clearPendingEgress(); - // LEAVES remains an immediate response and inherits the live receive scope. - // Deferred affinity cannot bleed into that callback or a later local send. + // LEAVES is paced and retains its request scope after the receive stack + // unwinds. Backpressure must not consume the pending descriptor. node.masks.clear(); mesh::ota::GetLeavesMsg leaves{}; memcpy(leaves.manifest_id,EXP_MERKLE_ROOT,4); leaves.want_mask=1; uint8_t leaves_wire[MAX_PACKET_PAYLOAD]; const auto leaves_len=mesh::ota::encode_get_leaves(leaves_wire,sizeof(leaves_wire),leaves); node.receiving=true; node.receive_profile=1; - node.ota_manager.on_message(leaves_wire,leaves_len,replacement); + assert(node.ota_manager.on_message(leaves_wire,leaves_len,replacement)); + assert(node.masks.empty() && node.ota_manager.pendingManifestJobs()==1); + node.receiving=false; node.receive_profile=0; + node.manager.free=4; + node.ota_manager.set_clock(2000000); + node.service(); + assert(node.masks.empty() && node.ota_manager.pendingManifestJobs()==1); + node.manager.free=40; + node.service(); assert(node.masks.size()==1 && node.masks[0]==2); assert(node.packet.radio_reply && !node.packet.radio_local); - node.receiving=false; node.receive_profile=0; + assert(node.ota_manager.pendingManifestJobs()==0); + // Deferred affinity cannot bleed into a later local send. const uint8_t data=mesh::ota::OTA_DATA; assert(node.otaSendAdapter(&node,&data,1,false)); assert(node.masks.size()==2 && node.masks[1]==1 && node.packet.radio_local); @@ -286,7 +295,8 @@ int main() { assert(node.was_reply==reply); } const uint8_t data=mesh::ota::OTA_DATA, proof=mesh::ota::OTA_PROOF; - for (const uint8_t type : {data,proof}) { + const uint8_t manifest=mesh::ota::OTA_MANIFEST, leaves=mesh::ota::OTA_LEAVES; + for (const uint8_t type : {data,proof,manifest,leaves}) { for (uint8_t mask : {1,2,3}) { for (int queued=0;queued<=mesh::OTA_EGRESS_QUEUE_CREDIT+1;++queued) { for (int free=0;free<=mesh::OTA_EGRESS_MIN_FREE+3;++free) { diff --git a/test/test_webconfig_recovery_auth.py b/test/test_webconfig_recovery_auth.py new file mode 100644 index 000000000..0651d7b77 --- /dev/null +++ b/test/test_webconfig_recovery_auth.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +"""Execute actual recovery/login/logout gates with real JSON and fake sockets.""" +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile +import unittest + +from test_replay_reset_integration import extract_braced + +ROOT = Path(__file__).resolve().parents[1] + + +class WebConfigRecoveryAuthTest(unittest.TestCase): + def compile_run(self, source, expect_rejection=False): + compiler = shutil.which("g++") or shutil.which("clang++") + self.assertIsNotNone(compiler) + json_header = next((ROOT / ".pio/libdeps").glob("*/ArduinoJson/src/ArduinoJson.h"), None) + self.assertIsNotNone(json_header, "native dependency headers are required") + with tempfile.TemporaryDirectory(prefix="meshcore-webconfig-auth-") as temporary: + work = Path(temporary) + generated = work / "auth.cpp" + generated.write_text(source) + binary = work / "auth" + sanitizers = (["-fsanitize=address,undefined", "-fno-sanitize-recover=all", + "-fno-pie", "-no-pie"] if sys.platform.startswith("linux") else []) + compiled = subprocess.run([compiler, "-std=c++17", "-Wall", "-Wextra", + *sanitizers, "-I" + str(json_header.parent), + str(generated), "-o", str(binary)], + capture_output=True, text=True, timeout=60) + self.assertEqual(compiled.returncode, 0, compiled.stderr) + result = subprocess.run([str(binary)], capture_output=True, text=True, timeout=10) + if expect_rejection: + self.assertNotEqual(result.returncode, 0, result.stdout + result.stderr) + self.assertIn("Assertion", result.stderr) + else: + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + + def fixture(self): + source = (ROOT / "src/helpers/esp32/WebConfigServer.cpp").read_text() + methods = "\n".join(extract_braced(source, signature) for signature in ( + "static bool fixedTimeEquals(", "bool WebConfigServer::checkAuth(", + "void WebConfigServer::handleLogin(", "void WebConfigServer::handleLogout(")) + # The actual config POST entry gate must reject a replacement password + # before parsing or queueing it; exercise its exact production prefix. + post = extract_braced(source, "void WebConfigServer::handleConfigPost(") + gate = post[post.index("{") + 1:post.index(" if (req->contentLength()")] + methods += "\nvoid WebConfigServer::checkConfigPost(AsyncWebServerRequest* req) {" + gate + "\nconfig_accepted=true;\n}" + return (ROOT / "test/fixtures/webconfig_recovery_auth.cpp").read_text().replace("@METHODS@", methods) + + def test_saved_network_fallback_requires_current_admin_session(self): + self.compile_run(self.fixture()) + + def test_old_interface_only_fallback_fails_executable_regression(self): + fixture = self.fixture() + old = fixture.replace("if (_initial_setup || _wifi_ssid[0] == 0) return true;", "return true;", 1) + self.assertNotEqual(old, fixture) + self.compile_run(old, expect_rejection=True) + + def test_old_unauthenticated_logout_fails_executable_regression(self): + fixture = self.fixture() + signature = "void WebConfigServer::handleLogout(" + start = fixture.index(signature, fixture.index("@METHODS@") if "@METHODS@" in fixture else 0) + prefix, logout = fixture[:start], fixture[start:] + gate = ' if (!checkAuth(req)) { req->send(401, "application/json", "{\\"error\\":\\"auth\\"}"); return; }\n' + old = prefix + logout.replace(gate, "", 1) + self.assertNotEqual(old, fixture) + self.compile_run(old, expect_rejection=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_webconfig_ui_runtime.py b/test/test_webconfig_ui_runtime.py index fc3ac1ed0..de2162e7b 100644 --- a/test/test_webconfig_ui_runtime.py +++ b/test/test_webconfig_ui_runtime.py @@ -77,6 +77,51 @@ def embedded_page(): class WebConfigUiRuntimeTest(unittest.TestCase): + def test_saved_network_recovery_requires_login_before_setup_wizard(self): + status, config = self.setup_values() + status.update(auth=False, mode="setup", needs_setup=False, + needs_password=False, password_supported=True) + prelude = r'''''' % (json.dumps(status), json.dumps(config)) + dom = self.run_page(prelude) + for attribute, value in (("login-visible", "true"), ("wizard-before", "false"), + ("config-before", "0"), ("wizard-after", "true"), + ("app-after", "false"), ("logins", "1"), + ("config-after", "1"), ("password-cleared", "true")): + self.assertIn('data-test-recovery-%s="%s"' % (attribute, value), dom) + def test_four_display_controls_and_pairing_capability(self): status, config = self.setup_values() config["display"] = { diff --git a/webui/index.html b/webui/index.html index 27816e375..4c54ccd15 100644 --- a/webui/index.html +++ b/webui/index.html @@ -774,8 +774,8 @@ function boot(){ return st.hasMqtt?api("/api/presets").catch(function(){return{presets:[]}}):{presets:[]}; }).then(function(p){ st.presets=p.presets||[]; - if(st.mode==="setup"){showWizard()} - else if(!st.authed){showLogin()} + if(!st.authed){showLogin()} + else if(st.mode==="setup"){showWizard()} else{enterApp()} }).catch(function(e){ if(e.message!=="auth"){$("#h-sub").textContent="connection failed - retrying";setTimeout(boot,2000)} @@ -796,7 +796,7 @@ $("#login-form").addEventListener("submit",function(ev){ .then(function(r){return r.json().then(function(j){return{s:r.status,j:j}})}) .then(function(x){ btn.disabled=false; - if(x.s===200){st.authed=true;$("#login-pwd").value="";enterApp()} + if(x.s===200){st.authed=true;$("#login-pwd").value="";if(st.mode==="setup"){showWizard()}else{enterApp()}} else $("#login-err").textContent=x.j.error||"login failed"; }).catch(function(){btn.disabled=false;$("#login-err").textContent="connection error"}); });