diff --git a/grc/lora_receiver.xml b/grc/lora_receiver.xml index a015256..6402fbf 100644 --- a/grc/lora_receiver.xml +++ b/grc/lora_receiver.xml @@ -102,7 +102,6 @@ Reduced rate reduced_rate enum - $implicit.hide_imp No False diff --git a/lib/decoder_impl.cc b/lib/decoder_impl.cc index 76d6b32..0cd3b53 100644 --- a/lib/decoder_impl.cc +++ b/lib/decoder_impl.cc @@ -16,6 +16,7 @@ * along with this software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, * Boston, MA 02110-1301, USA. + * 2018: patches by wilfried.philips@wphilipe.eu for low data rate and implicit header decoding */ #ifdef HAVE_CONFIG_H @@ -85,7 +86,6 @@ namespace gr { d_number_of_bins_hdr = (uint32_t)(1u << (d_sf-2)); d_decim_factor = d_samples_per_symbol / d_number_of_bins; d_energy_threshold = 0.0f; - d_whitening_sequence = gr::lora::prng_payload; d_fine_sync = 0; d_enable_fine_sync = !disable_drift_correction; set_output_multiple(2 * d_samples_per_symbol); @@ -480,7 +480,7 @@ namespace gr { bool decoder_impl::demodulate(const gr_complex *samples, const bool reduced_rate) { // DBGR_TIME_MEASUREMENT_TO_FILE("SFxx_method"); - + bool is_first = d_implicit && (d_demodulated.size()==0); // DBGR_START_TIME_MEASUREMENT(false, "only"); uint32_t bin_idx = max_frequency_gradient_idx(samples); @@ -504,9 +504,10 @@ namespace gr { d_words.push_back(word); // Look for 4+cr symbols and stop - if (d_words.size() == (4u + d_phdr.cr)) { - // Deinterleave - deinterleave((reduced_rate || d_sf > 10) ? d_sf - 2u : d_sf); + + if (d_words.size() == (4u + (is_first ? 4 : d_phdr.cr))) { + // Deinterleave + deinterleave((reduced_rate||is_first || d_sf > 10) ? d_sf - 2u : d_sf); return true; // Signal that a block is ready for decoding } @@ -562,8 +563,17 @@ namespace gr { // For determining whitening sequence //if (!is_header) // values_to_file("/tmp/after_deshuffle", &d_words_deshuffled[0], d_words_deshuffled.size(), 8); + if (d_implicit && ! d_reduced_rate) + dewhiten(is_header ? gr::lora::prng_header : + (d_phdr.cr ==4) ? gr::lora::prng_payload_cr8_implicit_fullrate: + (d_phdr.cr ==3) ? gr::lora::prng_payload_cr7_implicit_fullrate: + (d_phdr.cr ==2) ? gr::lora::prng_payload_cr6_implicit_fullrate : + gr::lora::prng_payload_cr5_implicit_fullrate); + else - dewhiten(is_header ? gr::lora::prng_header : d_whitening_sequence); + + dewhiten(is_header ? gr::lora::prng_header : + (d_phdr.cr <=2) ? gr::lora::prng_payload_cr56 : gr::lora::prng_payload_cr78); //if (!is_header) // values_to_file("/tmp/after_dewhiten", &d_words_dewhitened[0], d_words_dewhitened.size(), 8); @@ -828,7 +838,7 @@ namespace gr { //d_phy_crc = SM(decoded[1], 4, 0xf0) | MS(decoded[2], 0xf0, 4); // Calculate number of payload symbols needed - uint8_t redundancy = (d_sf > 10 ? 2 : 0); + uint8_t redundancy = ((d_sf > 10 || d_reduced_rate) ? 2 : 0); const int symbols_per_block = d_phdr.cr + 4u; const float bits_needed = float(d_payload_length) * 8.0f; const float symbols_needed = bits_needed * (symbols_per_block / 4.0f) / float(d_sf - redundancy); @@ -851,7 +861,7 @@ namespace gr { d_payload_symbols = 0; //d_demodulated.erase(d_demodulated.begin(), d_demodulated.begin() + 7u); // Test for SF 8 with header d_payload_length = (int32_t)(d_demodulated.size() / 2); - } else if (demodulate(input, d_implicit && d_reduced_rate)) { + } else if (demodulate(input, d_implicit || d_reduced_rate)) { if(!d_implicit) d_payload_symbols -= (4u + d_phdr.cr); } diff --git a/lib/decoder_impl.h b/lib/decoder_impl.h index 4ad3a50..28febcf 100644 --- a/lib/decoder_impl.h +++ b/lib/decoder_impl.h @@ -100,7 +100,6 @@ namespace gr { uint32_t d_payload_length; ///< The number of words after decoding the HDR or payload. Calculated from an indicator in the HDR. uint32_t d_corr_fails; ///< Indicates how many times the correlation failed. After some tries, the state will revert to `DecoderState::DETECT`. float d_energy_threshold; ///< The absolute threshold to distinguish signal from noise. - const uint8_t* d_whitening_sequence; ///< A pointer to the whitening sequence to be used in decoding. Determined by the SF in the ctor. float d_snr; ///< Signal to noise ratio boost::circular_buffer d_pwr_queue; ///< Queue holding symbol power values @@ -298,7 +297,7 @@ namespace gr { * \param is_header * Whether the demodulated words were from the HDR. */ - bool demodulate(const gr_complex *samples, const bool is_header); + bool demodulate(const gr_complex *samples, const bool reduced_rate); /** * \brief Deinterleave the raw demodulated words by reversing the interleave pattern. diff --git a/lib/tables.h b/lib/tables.h index 5a25894..2db045d 100644 --- a/lib/tables.h +++ b/lib/tables.h @@ -34,10 +34,40 @@ namespace gr { /** * Whitening sequence */ - const uint8_t prng_payload[] = { - 0xff, 0xff, 0x2d, 0xff, 0x78, 0xff, 0xe1, 0xff, 0x00, 0xff, 0xd2, 0x2d, 0x55, 0x78, 0x4b, 0xe1, 0x66, 0x00, 0x1e, 0xd2, 0xff, 0x55, 0x2d, 0x4b, 0x78, 0x66, 0xe1, 0x1e, 0xd2, 0xff, 0x87, 0x2d, 0xcc, 0x78, 0xaa, 0xe1, 0xb4, 0xd2, 0x99, 0x87, 0xe1, 0xcc, 0x00, 0xaa, 0x00, 0xb4, 0x00, 0x99, 0x00, 0xe1, 0xd2, 0x00, 0x55, 0x00, 0x99, 0x00, 0xe1, 0x00, 0xd2, 0xd2, 0x87, 0x55, 0x1e, 0x99, 0x2d, 0xe1, 0x78, 0xd2, 0xe1, 0x87, 0xd2, 0x1e, 0x55, 0x2d, 0x99, 0x78, 0x33, 0xe1, 0x55, 0xd2, 0x4b, 0x55, 0x66, 0x99, 0x1e, 0x33, 0x2d, 0x55, 0x78, 0x4b, 0xe1, 0x66, 0x00, 0x1e, 0x00, 0x2d, 0x00, 0x78, 0xd2, 0xe1, 0x87, 0x00, 0xcc, 0x00, 0x78, 0x00, 0x33, 0xd2, 0x55, 0x87, 0x99, 0xcc, 0x33, 0x78, 0x55, 0x33, 0x99, 0x55, 0x33, 0x99, 0x87, 0x33, 0xcc, 0x55, 0xaa, 0x99, 0x66, 0x33, 0x1e, 0x87, 0x2d, 0xcc, 0x78, 0xaa, 0x33, 0x66, 0x55, 0x1e, 0x99, 0x2d, 0xe1, 0x78, 0x00, 0x33, 0x00, 0x55, 0xd2, 0x99, 0x55, 0xe1, 0x4b, 0x00, 0xb4, 0x00, 0x4b, 0xd2, 0x66, 0x55, 0xcc, 0x4b, 0xaa, 0xb4, 0x66, 0x4b, 0xcc, 0x66, 0xaa, 0xcc, 0xb4, 0xaa, 0x4b, 0x66, 0x66, 0xcc, 0xcc, 0xaa, 0x78, 0xb4, 0x33, 0x4b, 0x55, 0x66, 0x4b, 0xcc, 0x66, 0x78, 0xcc, 0x33, 0x78, 0x55, 0xe1, 0x4b, 0x00, 0x66, 0xd2, 0xcc, 0x87, 0x78, 0x1e, 0xe1, 0xff, 0x00, 0xff, 0xd2, 0x2d, 0x87, 0xaa, 0x1e, 0x66, 0xff, 0xcc, 0xff, 0xaa, 0x2d, 0x66, 0xaa, 0x1e, 0x66, 0xff, 0xcc, 0x2d, 0xaa, 0xaa, 0x66, 0xb4, 0x1e, 0x4b, 0xff, 0x66, 0x2d, 0x1e, 0xaa, 0x2d, 0xb4, 0xaa, 0x4b, 0xb4, 0x66, 0x99, 0x1e, 0xe1, 0x2d, 0xd2, 0xaa, 0x55, 0xb4, 0x99, 0x99, 0xe1, 0xe1, 0x00, 0xd2, 0xd2, 0x55, 0x87, 0x99, 0xcc, 0xe1, 0xaa, 0x00, 0x66, 0xd2, 0xcc, 0x87, 0x78, 0xcc, 0xe1, 0xaa, 0xd2, 0x66, 0x87, 0xcc, 0x1e, 0x78, 0xff, 0xe1, 0x2d, 0xd2, 0x78, 0x87, 0x33, 0x1e, 0x87, 0xff, 0x1e, 0x2d, 0x2d, 0x78, 0x78, 0x33, 0x33, 0x87, 0x87, 0x1e, 0xcc, 0x2d, 0x78, 0x78, 0xe1, 0x33, 0xd2, 0x87, 0x55, 0xcc, 0x4b, 0x78, 0x66, 0xe1, 0xcc, 0xd2, 0xaa, 0x55, 0xb4, 0x4b, 0x99, 0x66, 0x33, 0xcc, 0x55, 0xaa, 0x99, 0xb4, 0xe1, 0x99, 0xd2, 0x33, 0x55, 0x55, 0x4b, 0x99, 0xb4, 0xe1, 0x99, 0xd2, 0x33, 0x55, 0x55, 0x4b, 0x4b, 0xb4, 0xb4, 0x99, 0x4b, 0x33, 0xb4, 0x55, 0x99, 0x4b, 0x33, 0xb4, 0x87, 0x4b, 0x1e, 0xb4, 0x2d, 0x99, 0xaa, 0x33, 0x66, 0xc7, 0x1e, 0x1e, 0x2d, 0x2d, 0xaa, 0xaa, 0x66, 0x66, 0xcc, 0x1e, 0x78, 0x2d, 0x33, 0xaa, 0x87, 0x66, 0x1e, 0xcc, 0xff, 0x78, 0x2d, 0x33, 0xaa, 0x87, 0x66, 0x1e, 0x1e, 0xff, 0xff, 0x2d, 0xff, 0xaa, 0xff, 0x66, 0x2d, 0x1e, 0xaa, 0xff, 0xb4, 0xff, 0x99, 0xff, 0x33, 0x2d, 0x87, 0xaa, 0xcc, 0xb4, 0x78, 0x99, 0x33, 0x33, 0x87, 0x87, 0xcc, 0xcc, 0xaa, 0x78, 0xb4, 0x33, 0x4b, 0x87, 0xb4, 0xcc, 0x99, 0xaa, 0xe1, 0xb4, 0xd2, 0x4b, 0x87, 0xb4, 0xcc, 0x99, 0x78, 0xe1, 0xe1, 0xd2, 0x00, 0x87, 0x00, 0xcc, 0xd2, 0x78, 0x87, 0xe1, 0x1e, 0x00, 0x2d, 0x00, 0xaa, 0xd2, 0xb4, 0x87, 0x4b, 0x1e, 0xb4, 0x2d, 0x4b, 0xaa, 0xb4, 0xb4, 0x4b, 0x4b, 0x66, 0xb4, 0x1e, 0x4b, 0xff, 0xb4, 0xff, 0x4b, 0x2d, 0x66, 0x78, 0x1e, 0x33, 0xff, 0x55, 0xff, 0x4b, 0x2d, 0xb4, 0x78, 0x99, 0x33, 0xe1, 0x55, 0x00, 0x4b, 0xd2, 0xb4, 0x55, 0x99, 0x99, 0xe1, 0x33, 0x00, 0x87, 0xd2, 0x1e, 0x55, 0xff, 0x99, 0xff, 0x33, 0xff, 0x87, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe1, 0xaa, 0xcc, + + const uint8_t prng_payload_cr56[] = { + +0xff, 0xff, 0x2d, 0xff, 0x78, 0xff, 0x30, 0x2e, 0x0, 0x2e, 0x12, 0x3c, 0x14, 0x28, 0xa, 0x30, 0x36, 0x0, 0x1e, 0x12, 0x2e, 0x14, 0x3c, 0xa, 0x28, 0x36, 0x30, 0x1e, 0x12, 0x2e, 0x6, 0x3c, 0xc, 0x28, 0x3a, 0x30, 0x24, 0x12, 0x18, 0x6, 0x30, 0xc, 0x0, 0x3a, 0x0, 0x24, 0x0, 0x18, 0x0, 0x30, 0x12, 0x0, 0x14, 0x0, 0x18, 0x0, 0x30, 0x0, 0x12, 0x12, 0x6, 0x14, 0x1e, 0x18, 0x3c, 0x30, 0x28, 0x12, 0x30, 0x6, 0x12, 0x1e, 0x14, 0x3c, 0x18, 0x28, 0x22, 0x30, 0x14, 0x12, 0xa, 0x14, 0x36, 0x18, 0x1e, 0x22, 0x3c, 0x14, 0x28, 0xa, 0x30, 0x36, 0x0, 0x1e, 0x0, 0x3c, 0x0, 0x28, 0x12, 0x30, 0x6, 0x0, 0xc, 0x0, 0x28, 0x0, 0x22, 0x12, 0x14, 0x6, 0x18, 0xc, 0x22, 0x28, 0x14, 0x22, 0x18, 0x14, 0x22, 0x18, 0x6, 0x22, 0xc, 0x14, 0x3a, 0x18, 0x36, 0x22, 0x1e, 0x6, 0x3c, 0xc, 0x28, 0x3a, 0x22, 0x36, 0x14, 0x1e, 0x18, 0x3c, 0x30, 0x28, 0x0, 0x22, 0x0, 0x14, 0x12, 0x18, 0x14, 0x30, 0xa, 0x0, 0x24, 0x0, 0xa, 0x12, 0x36, 0x14, 0xc, 0xa, 0x3a, 0x24, 0x36, 0xa, 0xc, 0x36, 0x3a, 0xc, 0x24, 0x3a, 0xa, 0x36, 0x36, 0xc, 0xc, 0x3a, 0x28, 0x24, 0x22, 0xa, 0x14, 0x36, 0xa, 0xc, 0x36, 0x28, 0xc, 0x22, 0x28, 0x14, 0x30, 0xa, 0x0, 0x36, 0x12, 0xc, 0x6, 0x28, 0x1e, 0x30, 0x2e, 0x0, 0x2e, 0x12, 0x3c, 0x6, 0x3a, 0x1e, 0x36, 0x2e, 0xc, 0x2e, 0x3a, 0x3c, 0x36, 0x3a, 0x1e, 0x36, 0x2e, 0xc, 0x3c, 0x3a, 0x3a, 0x36, 0x24, 0x1e, 0xa, 0x2e, 0x36, 0x3c, 0x1e, 0x3a, 0x3c, 0x24, 0x3a, 0xa, 0x24, 0x36, 0x18, 0x1e, 0x30, 0x3c, 0x12, 0x3a, 0x14, 0x24, 0x18, 0x18, 0x30, 0x30, 0x0, 0x12, 0x12, 0x14, 0x6, 0x18, 0xc, 0x30, 0x3a, 0x0, 0x36, 0x12, 0xc, 0x6, 0x28, 0xc, 0x30, 0x3a, 0x12, 0x36, 0x6, 0xc, 0x1e, 0x28, 0x2e, 0x30, 0x3c, 0x12, 0x28, 0x6, 0x22, 0x1e, 0x6, 0x2e, 0x1e, 0x3c, 0x3c, 0x28, 0x28, 0x22, 0x22, 0x6, 0x6, 0x1e, 0xc, 0x3c, 0x28, 0x28, 0x30, 0x22, 0x12, 0x6, 0x14, 0xc, 0xa, 0x28, 0x36, 0x30, 0xc, 0x12, 0x3a, 0x14, 0x24, 0xa, 0x18, 0x36, 0x22, 0xc, 0x14, 0x3a, 0x18, 0x24, 0x30, 0x18, 0x12, 0x22, 0x14, 0x14, 0xa, 0x18, 0x24, 0x30, 0x18, 0x12, 0x22, 0x14, 0x14, 0xa, 0xa, 0x24, 0x24, 0x18, 0xa, 0x22, 0x24, 0x14, 0x18, 0xa, 0x22, 0x24, 0x6, 0xa, 0x1e, 0x24, 0x3c, 0x18, 0x3a, 0x22, 0x36, 0x6, 0x1e, 0x1e, 0x3c, 0x3c, 0x3a, 0x3a, 0x36, 0x36, 0xc, 0x1e, 0x28, 0x3c, 0x22, 0x3a, 0x6, 0x36, 0x1e, 0xc, 0x2e, 0x28, 0x3c, 0x22, 0x3a, 0x6, 0x36, 0x1e, 0x1e, 0x2e, 0x2e, 0x3c, 0x2e, 0x3a, 0x2e, 0x36, 0x3c, 0x1e, 0x3a, 0x2e, 0x24, 0x2e, 0x18, 0x2e, 0x22, 0x3c, 0x6, 0x3a, 0xc, 0x24, 0x28, 0x18, 0x22, 0x22, 0x6, 0x6, 0xc, 0xc, 0x3a, 0x28, 0x24, 0x22, 0xa, 0x6, 0x24, 0xc, 0x18, 0x3a, 0x30, 0x24, 0x12, 0xa, 0x6, 0x24, 0xc, 0x18, 0x28, 0x30, 0x30, 0x12, 0x0, 0x6, 0x0, 0xc, 0x12, 0x28, 0x6, 0x30, 0x1e, 0x0, 0x3c, 0x0, 0x3a, 0x12, 0x24, 0x6, 0xa, 0x1e, 0x24, 0x3c, 0xa, 0x3a, 0x24, 0x24, 0xa, 0xa, 0x36, 0x24, 0x1e, 0xa, 0x2e, 0x24, 0x2e, 0xa, 0x3c, 0x36, 0x28, 0x1e, 0x22, 0x2e, 0x14, 0x2e, 0xa, 0x3c, 0x24, 0x28, 0x18, 0x22, 0x30, 0x14, 0x0, 0xa, 0x12, 0x24, 0x14, 0x18, 0x18, 0x30, 0x22, 0x0, 0x6, 0x12, 0x1e, 0x14, 0x2e, 0x18, 0x2e, 0x22, 0x2e, 0x6, 0x2e, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x24, 0x6 + }; + + const uint8_t prng_payload_cr78[] = { + 0xff, 0xff, 0x2d, 0xff, 0x78, 0xff, 0xe1, 0xff, + 0x00, 0xff, 0xd2, 0x2d, 0x55, 0x78, 0x4b, 0xe1, + 0x66, 0x00, 0x1e, 0xd2, 0xff, 0x55, 0x2d, 0x4b, 0x78, + 0x66, 0xe1, 0x1e, 0xd2, 0xff, 0x87, 0x2d, 0xcc, 0x78, 0xaa, 0xe1, 0xb4, 0xd2, 0x99, 0x87, 0xe1, 0xcc, 0x00, 0xaa, 0x00, 0xb4, 0x00, 0x99, 0x00, 0xe1, 0xd2, 0x00, 0x55, 0x00, 0x99, 0x00, 0xe1, 0x00, 0xd2, 0xd2, 0x87, 0x55, 0x1e, 0x99, 0x2d, 0xe1, 0x78, 0xd2, 0xe1, 0x87, 0xd2, 0x1e, 0x55, 0x2d, 0x99, 0x78, 0x33, 0xe1, 0x55, 0xd2, 0x4b, 0x55, 0x66, 0x99, 0x1e, 0x33, 0x2d, 0x55, 0x78, 0x4b, 0xe1, 0x66, 0x00, 0x1e, 0x00, 0x2d, 0x00, 0x78, 0xd2, 0xe1, 0x87, 0x00, 0xcc, 0x00, 0x78, 0x00, 0x33, 0xd2, 0x55, 0x87, 0x99, 0xcc, 0x33, 0x78, 0x55, 0x33, 0x99, 0x55, 0x33, 0x99, 0x87, 0x33, 0xcc, 0x55, 0xaa, 0x99, 0x66, 0x33, 0x1e, 0x87, 0x2d, 0xcc, 0x78, 0xaa, 0x33, 0x66, 0x55, 0x1e, 0x99, 0x2d, 0xe1, 0x78, 0x00, 0x33, 0x00, 0x55, 0xd2, 0x99, 0x55, 0xe1, 0x4b, 0x00, 0xb4, 0x00, 0x4b, 0xd2, 0x66, 0x55, 0xcc, 0x4b, 0xaa, 0xb4, 0x66, 0x4b, 0xcc, 0x66, 0xaa, 0xcc, 0xb4, 0xaa, 0x4b, 0x66, 0x66, 0xcc, 0xcc, 0xaa, 0x78, 0xb4, 0x33, 0x4b, 0x55, 0x66, 0x4b, 0xcc, 0x66, 0x78, 0xcc, 0x33, 0x78, 0x55, 0xe1, 0x4b, 0x00, 0x66, 0xd2, 0xcc, 0x87, 0x78, 0x1e, 0xe1, 0xff, 0x00, 0xff, 0xd2, 0x2d, 0x87, 0xaa, 0x1e, 0x66, 0xff, 0xcc, 0xff, 0xaa, 0x2d, 0x66, 0xaa, 0x1e, 0x66, 0xff, 0xcc, 0x2d, 0xaa, 0xaa, 0x66, 0xb4, 0x1e, 0x4b, 0xff, 0x66, 0x2d, 0x1e, 0xaa, 0x2d, 0xb4, 0xaa, 0x4b, 0xb4, 0x66, 0x99, 0x1e, 0xe1, 0x2d, 0xd2, 0xaa, 0x55, 0xb4, 0x99, 0x99, 0xe1, 0xe1, 0x00, 0xd2, 0xd2, 0x55, 0x87, 0x99, 0xcc, 0xe1, 0xaa, 0x00, 0x66, 0xd2, 0xcc, 0x87, 0x78, 0xcc, 0xe1, 0xaa, 0xd2, 0x66, 0x87, 0xcc, 0x1e, 0x78, 0xff, 0xe1, 0x2d, 0xd2, 0x78, 0x87, 0x33, 0x1e, 0x87, 0xff, 0x1e, 0x2d, 0x2d, 0x78, 0x78, 0x33, 0x33, 0x87, 0x87, 0x1e, 0xcc, 0x2d, 0x78, 0x78, 0xe1, 0x33, 0xd2, 0x87, 0x55, 0xcc, 0x4b, 0x78, 0x66, 0xe1, 0xcc, 0xd2, 0xaa, 0x55, 0xb4, 0x4b, 0x99, 0x66, 0x33, 0xcc, 0x55, 0xaa, 0x99, 0xb4, 0xe1, 0x99, 0xd2, 0x33, 0x55, 0x55, 0x4b, 0x99, 0xb4, 0xe1, 0x99, 0xd2, 0x33, 0x55, 0x55, 0x4b, 0x4b, 0xb4, 0xb4, 0x99, 0x4b, 0x33, 0xb4, 0x55, 0x99, 0x4b, 0x33, 0xb4, 0x87, 0x4b, 0x1e, 0xb4, 0x2d, 0x99, 0xaa, 0x33, 0x66, 0xc7, 0x1e, 0x1e, 0x2d, 0x2d, 0xaa, 0xaa, 0x66, 0x66, 0xcc, 0x1e, 0x78, 0x2d, 0x33, 0xaa, 0x87, 0x66, 0x1e, 0xcc, 0xff, 0x78, 0x2d, 0x33, 0xaa, 0x87, 0x66, 0x1e, 0x1e, 0xff, 0xff, 0x2d, 0xff, 0xaa, 0xff, 0x66, 0x2d, 0x1e, 0xaa, 0xff, 0xb4, 0xff, 0x99, 0xff, 0x33, 0x2d, 0x87, 0xaa, 0xcc, 0xb4, 0x78, 0x99, 0x33, 0x33, 0x87, 0x87, 0xcc, 0xcc, 0xaa, 0x78, 0xb4, 0x33, 0x4b, 0x87, 0xb4, 0xcc, 0x99, 0xaa, 0xe1, 0xb4, 0xd2, 0x4b, 0x87, 0xb4, 0xcc, 0x99, 0x78, 0xe1, 0xe1, 0xd2, 0x00, 0x87, 0x00, 0xcc, 0xd2, 0x78, 0x87, 0xe1, 0x1e, 0x00, 0x2d, 0x00, 0xaa, 0xd2, 0xb4, 0x87, 0x4b, 0x1e, 0xb4, 0x2d, 0x4b, 0xaa, 0xb4, 0xb4, 0x4b, 0x4b, 0x66, 0xb4, 0x1e, 0x4b, 0xff, 0xb4, 0xff, 0x4b, 0x2d, 0x66, 0x78, 0x1e, 0x33, 0xff, 0x55, 0xff, 0x4b, 0x2d, 0xb4, 0x78, 0x99, 0x33, 0xe1, 0x55, 0x00, 0x4b, 0xd2, 0xb4, 0x55, 0x99, 0x99, 0xe1, 0x33, 0x00, 0x87, 0xd2, 0x1e, 0x55, 0xff, 0x99, 0xff, 0x33, 0xff, 0x87, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe1, 0xaa, 0xcc, }; + + const uint8_t prng_payload_cr5_implicit_fullrate[] = { + 0xff, 0xff, 0xff, 0xff, 0x2d, 0xff, 0x36, 0x2e, 0x18, 0x2e, 0x18, 0x3c, 0x18, 0x28, 0x14, 0x30, 0x6, 0x0, 0x3c, 0x12, 0xa, 0x14, 0xa, 0xa, 0x0, 0x36, 0xa, 0x1e, 0x2e, 0x2e, 0x28, 0x3c, 0xc, 0x3a, 0x28, 0x22, 0x30, 0x0, 0x1e, 0x14, 0x28, 0x1e, 0xa, 0x28, 0xc, 0x36, 0x1a, 0xa, 0x30, 0x22, 0x30, 0x12, 0x30, 0x12, 0x2e, 0x12, 0x18, 0x12, 0x28, 0x0, 0x3a, 0x6, 0x30, 0xa, 0x3c, 0x24, 0x3a, 0x6, 0x24, 0x12, 0x14, 0xa, 0xc, 0x28, 0x12, 0x3c, 0x2e, 0x24, 0xa, 0x6, 0x3a, 0x0, 0x14, 0xc, 0x3a, 0x36, 0xa, 0x0, 0x0, 0x1e, 0xa, 0x22, 0x3c, 0xa, 0x2e, 0x28, 0x0, 0x2e, 0x0, 0x36, 0x12, 0x6, 0xa, 0x6, 0x30, 0x6, 0x28, 0x14, 0x18, 0x0, 0x6, 0xa, 0x12, 0x2e, 0x36, 0x24, 0x3c, 0x12, 0x14, 0x1e, 0x2e, 0x24, 0x36, 0x12, 0x6, 0x1e, 0x18, 0x24, 0x1e, 0x1e, 0x2e, 0x14, 0x3c, 0x22, 0x24, 0x2e, 0xc, 0x6, 0x12, 0x24, 0x3c, 0x30, 0x1e, 0x3a, 0x30, 0xc, 0x30, 0x0, 0x30, 0x28, 0x3c, 0x18, 0xc, 0x18, 0x30, 0xa, 0xa, 0xc, 0x22, 0x12, 0x3a, 0x2e, 0x24, 0x0, 0x18, 0x3c, 0x3c, 0x6, 0x3c, 0x30, 0x0, 0x3c, 0x3a, 0x6, 0x12, 0x30, 0x18, 0x2e, 0x0, 0x0, 0x30, 0x3c, 0x3c, 0x6, 0x1e, 0x22, 0x36, 0x28, 0x14, 0x1e, 0x1e, 0x0, 0x0, 0x3a, 0x0, 0x0, 0x12, 0x24, 0x18, 0x3c, 0x36, 0xc, 0x24, 0x1e, 0x30, 0xa, 0x24, 0x12, 0x6, 0x22, 0x2e, 0x22, 0x1e, 0x30, 0x0, 0x36, 0x36, 0x3a, 0x14, 0x0, 0x0, 0x36, 0x14, 0x3a, 0x24, 0x0, 0x18, 0x30, 0x22, 0x22, 0x18, 0x24, 0x24, 0x3a, 0x30, 0x14, 0x28, 0x28, 0x6, 0x0, 0x0, 0x22, 0x30, 0x24, 0x30, 0x3a, 0x2e, 0x6, 0x18, 0x2e, 0x3a, 0xc, 0x2e, 0xa, 0x28, 0x6, 0xc, 0x0, 0x28, 0x30, 0x22, 0x22, 0xa, 0x36, 0x30, 0x3c, 0x3a, 0xa, 0x1e, 0x6, 0x18, 0x3c, 0x2e, 0x18, 0xc, 0x0, 0x18, 0x22, 0x1e, 0x36, 0xa, 0x2e, 0x3c, 0x1e, 0x22, 0xc, 0x12, 0x18, 0x28, 0x0, 0x30, 0x24, 0x12, 0x3c, 0xa, 0x1e, 0x30, 0xa, 0x3a, 0x0, 0x1e, 0x24, 0xa, 0x2e, 0x3a, 0xa, 0x14, 0x12, 0x28, 0x30, 0xc, 0x36, 0xc, 0x28, 0x22, 0x14, 0x1e, 0x2e, 0x3a, 0x18, 0x18, 0x0, 0x22, 0x3c, 0x6, 0x6, 0x12, 0x30, 0x12, 0x3c, 0x2e, 0x14, 0x14, 0x36, 0x3c, 0x30, 0x24, 0x2e, 0x28, 0x0, 0x0, 0x3c, 0x3c, 0x6, 0xc, 0x30, 0x22, 0x2e, 0x1e, 0x0, 0x28, 0x2e, 0x1e, 0x12, 0x2e, 0x2e, 0x2e, 0x14, 0x30, 0x30, 0x6, 0x28, 0x36, 0xa, 0x36, 0xc, 0x28, 0x0, 0x3c, 0x28, 0xa, 0xa, 0x6, 0xc, 0x30, 0x0, 0x36, 0x3a, 0x14, 0x1e, 0x0, 0x14, 0x14, 0x30, 0x36, 0x36, 0xc, 0x6, 0x3a, 0x14, 0x28, 0x12, 0x36, 0x1e, 0x36, 0x36, 0x36, 0x6, 0x3a, 0x6, 0x28, 0x6, 0x0, 0x14, 0x22, 0x12, 0x3a, 0xc, 0x0, 0x30, 0x18, 0xa, 0x3a, 0x2e, 0x22, 0x24, 0x3a, 0x12, 0x36, 0x18, 0x1e, 0x3c, 0x22, 0x36, 0x0, 0x0, 0x3a, 0x1e, 0x1e, 0x30, 0x18, 0x1e, 0x3c, 0x22, 0xa, 0xa, 0x14, 0x28, 0x36, 0x3c, 0x28, 0x36, 0x28, 0x12, 0x3a, 0xa, 0x30, 0x3a, 0x3c, 0x3c, 0x28, 0x2e, 0x30, 0x3a, 0xc, 0x22, 0x3c, 0x0, 0x0, 0x6, 0x28, 0x18, 0x14, 0x36, 0x6, 0x18, 0x3c, 0x36, 0xa, 0x18, 0x18, 0x36, 0x14, 0xa, 0x12, 0x22, 0x1e, 0x12, 0x3a, 0x12, 0xa, 0x12, 0x36, 0x6, 0xc, 0xc, 0x36, 0x3a, 0x18, 0x24, 0x18, 0xa, 0x18, 0x36, 0x6, 0x1e, 0x12, 0x2e, 0x24, 0x3c, 0x3a, 0x3a, 0x18, 0x36, 0x6, 0xc, 0x14, 0x28, 0x12, 0x30, 0x2e, 0x0, 0xa, 0xc, 0xc, 0x1e, 0x3c, 0x1e + + + }; + + const uint8_t prng_payload_cr6_implicit_fullrate[] = { + +0xff, 0xff, 0xff, 0xff, 0x2d, 0xff, 0x26, 0x3f, 0x19, 0x3f, 0x19, 0x2d, 0x19, 0x38, 0x15, 0x21, 0x7, 0x0, 0x2d, 0x12, 0xb, 0x15, 0xb, 0xb, 0x0, 0x26, 0xb, 0x1e, 0x3f, 0x3f, 0x38, 0x2d, 0xc, 0x2a, 0x38, 0x33, 0x21, 0x0, 0x1e, 0x15, 0x38, 0x1e, 0xb, 0x38, 0xc, 0x26, 0x1a, 0xb, 0x21, 0x33, 0x21, 0x12, 0x21, 0x12, 0x3f, 0x12, 0x19, 0x12, 0x38, 0x0, 0x2a, 0x7, 0x21, 0xb, 0x2d, 0x34, 0x2a, 0x7, 0x34, 0x12, 0x15, 0xb, 0xc, 0x38, 0x12, 0x2d, 0x3f, 0x34, 0xb, 0x7, 0x2a, 0x0, 0x15, 0xc, 0x2a, 0x26, 0xb, 0x0, 0x0, 0x1e, 0xb, 0x33, 0x2d, 0xb, 0x3f, 0x38, 0x0, 0x3f, 0x0, 0x26, 0x12, 0x7, 0xb, 0x7, 0x21, 0x7, 0x38, 0x15, 0x19, 0x0, 0x7, 0xb, 0x12, 0x3f, 0x26, 0x34, 0x2d, 0x12, 0x15, 0x1e, 0x3f, 0x34, 0x26, 0x12, 0x7, 0x1e, 0x19, 0x34, 0x1e, 0x1e, 0x3f, 0x15, 0x2d, 0x33, 0x34, 0x3f, 0xc, 0x7, 0x12, 0x34, 0x2d, 0x21, 0x1e, 0x2a, 0x21, 0xc, 0x21, 0x0, 0x21, 0x38, 0x2d, 0x19, 0xc, 0x19, 0x21, 0xb, 0xb, 0xc, 0x33, 0x12, 0x2a, 0x3f, 0x34, 0x0, 0x19, 0x2d, 0x2d, 0x7, 0x2d, 0x21, 0x0, 0x2d, 0x2a, 0x7, 0x12, 0x21, 0x19, 0x3f, 0x0, 0x0, 0x21, 0x2d, 0x2d, 0x7, 0x1e, 0x33, 0x26, 0x38, 0x15, 0x1e, 0x1e, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x12, 0x34, 0x19, 0x2d, 0x26, 0xc, 0x34, 0x1e, 0x21, 0xb, 0x34, 0x12, 0x7, 0x33, 0x3f, 0x33, 0x1e, 0x21, 0x0, 0x26, 0x26, 0x2a, 0x14, 0x0, 0x0, 0x26, 0x15, 0x2a, 0x34, 0x0, 0x19, 0x21, 0x33, 0x33, 0x19, 0x34, 0x34, 0x2a, 0x21, 0x15, 0x38, 0x38, 0x7, 0x0, 0x0, 0x33, 0x21, 0x34, 0x21, 0x2a, 0x3f, 0x7, 0x19, 0x3f, 0x2a, 0xc, 0x3f, 0xb, 0x38, 0x7, 0xc, 0x0, 0x38, 0x21, 0x33, 0x33, 0xb, 0x26, 0x21, 0x2d, 0x2a, 0xb, 0x1e, 0x7, 0x19, 0x2d, 0x3f, 0x19, 0xc, 0x0, 0x19, 0x33, 0x1e, 0x26, 0xb, 0x3f, 0x2d, 0x1e, 0x33, 0xc, 0x12, 0x19, 0x38, 0x0, 0x21, 0x34, 0x12, 0x2d, 0xb, 0x1e, 0x21, 0xb, 0x2a, 0x0, 0x1e, 0x34, 0xb, 0x3f, 0x2a, 0xb, 0x15, 0x12, 0x38, 0x21, 0xc, 0x26, 0xc, 0x38, 0x33, 0x15, 0x1e, 0x3f, 0x2a, 0x19, 0x19, 0x0, 0x33, 0x2d, 0x7, 0x7, 0x12, 0x21, 0x12, 0x2d, 0x3f, 0x15, 0x15, 0x26, 0x2d, 0x21, 0x34, 0x3f, 0x38, 0x0, 0x0, 0x2d, 0x2d, 0x7, 0xc, 0x21, 0x33, 0x3f, 0x1e, 0x0, 0x38, 0x3f, 0x1e, 0x12, 0x3f, 0x3f, 0x3f, 0x15, 0x21, 0x21, 0x7, 0x28, 0x26, 0xb, 0x26, 0xc, 0x38, 0x0, 0x2d, 0x38, 0xb, 0xb, 0x7, 0xc, 0x21, 0x0, 0x26, 0x2a, 0x15, 0x1e, 0x0, 0x15, 0x15, 0x21, 0x26, 0x26, 0xc, 0x7, 0x2a, 0x15, 0x38, 0x12, 0x26, 0x1e, 0x26, 0x26, 0x26, 0x7, 0x2a, 0x7, 0x38, 0x7, 0x0, 0x15, 0x33, 0x12, 0x2a, 0xc, 0x0, 0x21, 0x19, 0xb, 0x2a, 0x3f, 0x33, 0x34, 0x2a, 0x12, 0x26, 0x19, 0x1e, 0x2d, 0x33, 0x26, 0x0, 0x0, 0x2a, 0x1e, 0x1e, 0x21, 0x19, 0x1e, 0x2d, 0x33, 0xb, 0xb, 0x15, 0x38, 0x26, 0x2d, 0x38, 0x26, 0x38, 0x12, 0x2a, 0xb, 0x21, 0x2a, 0x2d, 0x2d, 0x38, 0x3f, 0x21, 0x2a, 0xc, 0x33, 0x2d, 0x0, 0x0, 0x7, 0x38, 0x19, 0x15, 0x26, 0x7, 0x19, 0x2d, 0x26, 0xb, 0x19, 0x19, 0x26, 0x15, 0xb, 0x12, 0x33, 0x1e, 0x12, 0x2a, 0x12, 0xb, 0x12, 0x26, 0x7, 0xc, 0xc, 0x26, 0x2a, 0x19, 0x34, 0x19, 0xb, 0x19, 0x26, 0x7, 0x1e, 0x12, 0x3f, 0x34, 0x2d, 0x2a, 0x2a, 0x19, 0x26, 0x7, 0xc, 0x15, 0x38, 0x12, 0x21, 0x3f, 0x0, 0xb, 0xc, 0xc, 0x1e, 0x2d, 0x1e + + }; + + const uint8_t prng_payload_cr7_implicit_fullrate[] = { +0xff, 0xff, 0xff, 0xff, 0x2d, 0xff, 0x66, 0x7f, 0x19, 0x7f, 0x19, 0x2d, 0x19, 0x78, 0x55, 0x61, 0x7, 0x0, 0x2d, 0x52, 0x4b, 0x55, 0x4b, 0x4b, 0x0, 0x66, 0x4b, 0x1e, 0x7f, 0x7f, 0x78, 0x2d, 0x4c, 0x2a, 0x78, 0x33, 0x61, 0x0, 0x1e, 0x55, 0x78, 0x1e, 0x4b, 0x78, 0x4c, 0x66, 0x1a, 0x4b, 0x61, 0x33, 0x61, 0x52, 0x61, 0x52, 0x7f, 0x52, 0x19, 0x52, 0x78, 0x0, 0x2a, 0x7, 0x61, 0x4b, 0x2d, 0x34, 0x2a, 0x7, 0x34, 0x52, 0x55, 0x4b, 0x4c, 0x78, 0x52, 0x2d, 0x7f, 0x34, 0x4b, 0x7, 0x2a, 0x0, 0x55, 0x4c, 0x2a, 0x66, 0x4b, 0x0, 0x0, 0x1e, 0x4b, 0x33, 0x2d, 0x4b, 0x7f, 0x78, 0x0, 0x7f, 0x0, 0x66, 0x52, 0x7, 0x4b, 0x7, 0x61, 0x7, 0x78, 0x55, 0x19, 0x0, 0x7, 0x4b, 0x52, 0x7f, 0x66, 0x34, 0x2d, 0x52, 0x55, 0x1e, 0x7f, 0x34, 0x66, 0x52, 0x7, 0x1e, 0x19, 0x34, 0x1e, 0x1e, 0x7f, 0x55, 0x2d, 0x33, 0x34, 0x7f, 0x4c, 0x7, 0x52, 0x34, 0x2d, 0x61, 0x1e, 0x2a, 0x61, 0x4c, 0x61, 0x0, 0x61, 0x78, 0x2d, 0x19, 0x4c, 0x19, 0x61, 0x4b, 0x4b, 0x4c, 0x33, 0x52, 0x2a, 0x7f, 0x34, 0x0, 0x19, 0x2d, 0x2d, 0x7, 0x2d, 0x61, 0x0, 0x2d, 0x2a, 0x7, 0x52, 0x61, 0x19, 0x7f, 0x0, 0x0, 0x61, 0x2d, 0x2d, 0x7, 0x1e, 0x33, 0x66, 0x78, 0x55, 0x1e, 0x1e, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x52, 0x34, 0x19, 0x2d, 0x66, 0x4c, 0x34, 0x1e, 0x61, 0x4b, 0x34, 0x52, 0x7, 0x33, 0x7f, 0x33, 0x1e, 0x61, 0x0, 0x66, 0x66, 0x2a, 0x54, 0x0, 0x0, 0x66, 0x55, 0x2a, 0x34, 0x0, 0x19, 0x61, 0x33, 0x33, 0x19, 0x34, 0x34, 0x2a, 0x61, 0x55, 0x78, 0x78, 0x7, 0x0, 0x0, 0x33, 0x61, 0x34, 0x61, 0x2a, 0x7f, 0x7, 0x19, 0x7f, 0x2a, 0x4c, 0x7f, 0x4b, 0x78, 0x7, 0x4c, 0x0, 0x78, 0x61, 0x33, 0x33, 0x4b, 0x66, 0x61, 0x2d, 0x2a, 0x4b, 0x1e, 0x7, 0x19, 0x2d, 0x7f, 0x19, 0x4c, 0x0, 0x19, 0x33, 0x1e, 0x66, 0x4b, 0x7f, 0x2d, 0x1e, 0x33, 0x4c, 0x52, 0x19, 0x78, 0x0, 0x61, 0x34, 0x52, 0x2d, 0x4b, 0x1e, 0x61, 0x4b, 0x2a, 0x0, 0x1e, 0x34, 0x4b, 0x7f, 0x2a, 0x4b, 0x55, 0x52, 0x78, 0x61, 0x4c, 0x66, 0x4c, 0x78, 0x33, 0x55, 0x1e, 0x7f, 0x2a, 0x19, 0x19, 0x0, 0x33, 0x2d, 0x7, 0x7, 0x52, 0x61, 0x52, 0x2d, 0x7f, 0x55, 0x55, 0x66, 0x2d, 0x61, 0x34, 0x7f, 0x78, 0x0, 0x0, 0x2d, 0x2d, 0x7, 0x4c, 0x61, 0x33, 0x7f, 0x1e, 0x0, 0x78, 0x7f, 0x1e, 0x52, 0x7f, 0x7f, 0x7f, 0x55, 0x61, 0x61, 0x7, 0x68, 0x66, 0x4b, 0x66, 0x4c, 0x78, 0x0, 0x2d, 0x78, 0x4b, 0x4b, 0x7, 0x4c, 0x61, 0x0, 0x66, 0x2a, 0x55, 0x1e, 0x0, 0x55, 0x55, 0x61, 0x66, 0x66, 0x4c, 0x7, 0x2a, 0x55, 0x78, 0x52, 0x66, 0x1e, 0x66, 0x66, 0x66, 0x7, 0x2a, 0x7, 0x78, 0x7, 0x0, 0x55, 0x33, 0x52, 0x2a, 0x4c, 0x0, 0x61, 0x19, 0x4b, 0x2a, 0x7f, 0x33, 0x34, 0x2a, 0x52, 0x66, 0x19, 0x1e, 0x2d, 0x33, 0x66, 0x0, 0x0, 0x2a, 0x1e, 0x1e, 0x61, 0x19, 0x1e, 0x2d, 0x33, 0x4b, 0x4b, 0x55, 0x78, 0x66, 0x2d, 0x78, 0x66, 0x78, 0x52, 0x2a, 0x4b, 0x61, 0x2a, 0x2d, 0x2d, 0x78, 0x7f, 0x61, 0x2a, 0x4c, 0x33, 0x2d, 0x0, 0x0, 0x7, 0x78, 0x19, 0x55, 0x66, 0x7, 0x19, 0x2d, 0x66, 0x4b, 0x19, 0x19, 0x66, 0x55, 0x4b, 0x52, 0x33, 0x1e, 0x52, 0x2a, 0x52, 0x4b, 0x52, 0x66, 0x7, 0x4c, 0x4c, 0x66, 0x2a, 0x19, 0x34, 0x19, 0x4b, 0x19, 0x66, 0x7, 0x1e, 0x52, 0x7f, 0x34, 0x2d, 0x2a, 0x2a, 0x19, 0x66, 0x7, 0x4c, 0x55, 0x78, 0x52, 0x61, 0x7f, 0x0, 0x4b, 0x4c, 0x4c, 0x1e, 0x2d, 0x1e + }; + const uint8_t prng_payload_cr8_implicit_fullrate[] = { + 0xff, 0xff, 0xff, 0xff, 0x2d, 0xff, 0x66, 0xff, 0x99, 0xff, 0x99, 0x2d, 0x99, 0x78, 0x55, 0xe1, 0x87, 0x0, 0x2d, 0xd2, 0x4b, 0x55, 0x4b, 0x4b, 0x0, 0x66, 0x4b, 0x1e, 0xff, 0xff, 0x78, 0x2d, 0xcc, 0xaa, 0x78, 0x33, 0xe1, 0x0, 0x1e, 0x55, 0x78, 0x1e, 0x4b, 0x78, 0xcc, 0xe6, 0x1a, 0x4b, 0xe1, 0x33, 0xe1, 0xd2, 0xe1, 0xd2, 0xff, 0xd2, 0x99, 0xd2, 0x78, 0x0, 0xaa, 0x87, 0xe1, 0x4b, 0x2d, 0xb4, 0xaa, 0x87, 0xb4, 0xd2, 0x55, 0x4b, 0xcc, 0x78, 0xd2, 0x2d, 0xff, 0xb4, 0x4b, 0x87, 0xaa, 0x0, 0x55, 0xcc, 0xaa, 0x66, 0x4b, 0x0, 0x0, 0x1e, 0x4b, 0x33, 0x2d, 0x4b, 0xff, 0x78, 0x0, 0xff, 0x0, 0x66, 0xd2, 0x87, 0x4b, 0x87, 0xe1, 0x87, 0x78, 0x55, 0x99, 0x0, 0x87, 0x4b, 0xd2, 0xff, 0x66, 0xb4, 0x2d, 0xd2, 0x55, 0x1e, 0xff, 0xb4, 0x66, 0xd2, 0x87, 0x1e, 0x99, 0xb4, 0x1e, 0x1e, 0xff, 0x55, 0x2d, 0x33, 0xb4, 0xff, 0xcc, 0x87, 0xd2, 0xb4, 0x2d, 0xe1, 0x1e, 0xaa, 0xe1, 0xcc, 0xe1, 0x0, 0xe1, 0x78, 0x2d, 0x99, 0xcc, 0x99, 0xe1, 0x4b, 0x4b, 0xcc, 0x33, 0xd2, 0xaa, 0xff, 0xb4, 0x0, 0x99, 0x2d, 0x2d, 0x87, 0x2d, 0xe1, 0x0, 0x2d, 0xaa, 0x87, 0xd2, 0xe1, 0x99, 0xff, 0x0, 0x0, 0xe1, 0x2d, 0x2d, 0x87, 0x1e, 0x33, 0x66, 0x78, 0x55, 0x1e, 0x1e, 0x0, 0x0, 0xaa, 0x0, 0x0, 0xd2, 0xb4, 0x99, 0x2d, 0x66, 0xcc, 0xb4, 0x1e, 0xe1, 0x4b, 0xb4, 0xd2, 0x87, 0x33, 0xff, 0x33, 0x1e, 0xe1, 0x0, 0x66, 0x66, 0xaa, 0x54, 0x0, 0x0, 0x66, 0x55, 0xaa, 0xb4, 0x0, 0x99, 0xe1, 0x33, 0x33, 0x99, 0xb4, 0xb4, 0xaa, 0xe1, 0x55, 0x78, 0x78, 0x87, 0x0, 0x0, 0x33, 0xe1, 0xb4, 0xe1, 0xaa, 0xff, 0x87, 0x99, 0xff, 0xaa, 0xcc, 0xff, 0x4b, 0x78, 0x87, 0xcc, 0x0, 0x78, 0xe1, 0x33, 0x33, 0x4b, 0x66, 0xe1, 0x2d, 0xaa, 0x4b, 0x1e, 0x87, 0x99, 0x2d, 0xff, 0x99, 0xcc, 0x0, 0x99, 0x33, 0x1e, 0x66, 0x4b, 0xff, 0x2d, 0x1e, 0x33, 0xcc, 0xd2, 0x99, 0x78, 0x0, 0xe1, 0xb4, 0xd2, 0x2d, 0x4b, 0x1e, 0xe1, 0x4b, 0xaa, 0x0, 0x1e, 0xb4, 0x4b, 0xff, 0xaa, 0x4b, 0x55, 0xd2, 0x78, 0xe1, 0xcc, 0x66, 0xcc, 0x78, 0x33, 0x55, 0x1e, 0xff, 0xaa, 0x99, 0x99, 0x0, 0x33, 0x2d, 0x87, 0x87, 0xd2, 0xe1, 0xd2, 0x2d, 0xff, 0x55, 0x55, 0x66, 0x2d, 0xe1, 0xb4, 0xff, 0x78, 0x0, 0x0, 0x2d, 0x2d, 0x87, 0xcc, 0xe1, 0x33, 0xff, 0x1e, 0x0, 0x78, 0xff, 0x1e, 0xd2, 0xff, 0xff, 0xff, 0x55, 0xe1, 0xe1, 0x87, 0x68, 0x66, 0x4b, 0x66, 0xcc, 0x78, 0x0, 0x2d, 0x78, 0x4b, 0x4b, 0x87, 0xcc, 0xe1, 0x0, 0x66, 0xaa, 0x55, 0x1e, 0x0, 0x55, 0x55, 0xe1, 0x66, 0x66, 0xcc, 0x87, 0xaa, 0x55, 0x78, 0xd2, 0x66, 0x1e, 0x66, 0x66, 0x66, 0x87, 0xaa, 0x87, 0x78, 0x87, 0x0, 0x55, 0x33, 0xd2, 0xaa, 0xcc, 0x0, 0xe1, 0x99, 0x4b, 0xaa, 0xff, 0x33, 0xb4, 0xaa, 0xd2, 0x66, 0x99, 0x1e, 0x2d, 0x33, 0x66, 0x0, 0x0, 0xaa, 0x1e, 0x1e, 0xe1, 0x99, 0x1e, 0x2d, 0x33, 0x4b, 0x4b, 0x55, 0x78, 0x66, 0x2d, 0x78, 0x66, 0x78, 0xd2, 0xaa, 0x4b, 0xe1, 0xaa, 0x2d, 0x2d, 0x78, 0xff, 0xe1, 0xaa, 0xcc, 0x33, 0x2d, 0x0, 0x0, 0x87, 0x78, 0x99, 0x55, 0x66, 0x87, 0x99, 0x2d, 0x66, 0x4b, 0x99, 0x99, 0x66, 0x55, 0x4b, 0xd2, 0x33, 0x1e, 0xd2, 0xaa, 0xd2, 0x4b, 0xd2, 0x66, 0x87, 0xcc, 0xcc, 0x66, 0xaa, 0x99, 0xb4, 0x99, 0x4b, 0x99, 0x66, 0x87, 0x1e, 0xd2, 0xff, 0xb4, 0x2d, 0xaa, 0xaa, 0x99, 0x66, 0x87, 0xcc, 0x55, 0x78, 0xd2, 0xe1, 0xff, 0x0, 0x4b, 0xcc, 0xcc, 0x1e, 0x2d, 0x1e + }; + } + } #endif /* TABLES_H */