Forum Rule: Always post complete source code & details to reproduce any issue!
Page 1 of 2 1 2 LastLast
Results 1 to 25 of 38

Thread: Latency and Jitter values for Teensy 3.2 DAC and for the Audio Board's i2s

  1. #1

    Latency and Jitter values for Teensy 3.2 DAC and for the Audio Board's i2s

    I have just performed some simple tests with Teensy to measure the minimum latency the board could give between a controller's input and a sound output.
    The procedure is simple: I put a button on a digital input and wrote a code to give a square pulse on the audio output. I first measured the audio board's i2s output and then the teensy's dac, both using the Audio Library.
    I then used a Data Analyser (Saleae Logic) at 12MS/s (mega samples per sec) and measured each time difference between the button going high and the sound output going high. I made around 20 measurements for each setup. The average latency was the average of all these values and the jitter was the maximum variation of these values (the maximum minus the minimum). All the measurements used the same Teensy 3.2 and on the second test I unplugged the Audio Board and only loaded the "#include <Audio.h>" library

    The results I got were the following

    Audio Board's i2s with Audio Library
    Average Latency: 4,56 ms
    Jitter: 2,80 ms

    Teensy 3.2 DAC with Audio Library
    Average Latency: 7,32 ms
    Jitter: 2,82 ms

    All these values show good latency values (the minimum values used by the Digital Music Instruments community are 10 ms), but this jitter is quite high (the maximum values accepted for a high performance instrument should be around 1 ms)

    I got quite surprised with these results, since the embedded DAC gave a higher latency than the SGTL5000 i2s, that is loaded through SPI... Does anyone know why?

    I then measured the latency of the DAC without the Audio Board, with the button triggering a simple analogWrite(A14, 4095) at a "analogWriteResolution(12);".
    I got the following values:

    Teensy 3.2 DAC without Audio Library (using AnalogWrite())
    Average Latency: 2,70 us (that's right, microseconds!)
    Jitter: 3,75 us

    So I believe that what is giving this latency and jitter values is the Audio Library. The latency for all applications I can think of is good enough below 10 ms, but this jitter can really make a digital music instrument loose some immediate response feeling. Does anyone know what in the Audio Library makes this Jittery latency? Is there a way to create a fast wire to give a faster DAC output? Can the SGTL5000 i2s also be less jittery?

  2. #2
    I read that the audio interrupt occurs every 128 samples, is there a way to lower the buffer size?

  3. #3
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,591
    You can edit hardware/teensy/avr/cores/teensy3/AudioStream.h.

    Block size should be a multiple of 16 samples.

    Some parts of the library are hard-coded for 128 and won't work properly for any other setting, but most parts will adapt to whatever you do in AudioStream.h.

  4. #4
    Nice Paul! I'll try that out... see if I can improve this latency issue...
    do you have any idea of how to get a lower jitter? Did you understand why the DAC got a higher latency than the SGTL5000?
    Do you know if there is an alternative way to use the DAC to play an audio samples without loading the Audio Library?...
    I really wanted some of that 2,7 microseconds latency and 3,75us jitter from the analogWrite() tests I made... It would make of teensy the lowest latency around! The only one that shows the lowest latency is the BeagleBone Bela cape, from queen mary, London. They give out 600 us latency and 25 us jitter...
    Here is a paper showing no one else got a proper latency but them so far...
    http://www.eecs.qmul.ac.uk/~andrewm/...n_nime2016.pdf

    thank you!
    Last edited by joaotragtenberg; 11-28-2016 at 02:04 AM.

  5. #5
    I have tried lowering the AUDIO_BLOCK_SAMPLES from 16 up to 128 and it is impressive how the latency and jitter get down to 1ms when around the Audio Block of 16 samples. it seems to raise proportionally the latency and jitter with the size of the audio block. But the sound quality gets distorted in an unusual way... I tried playing samples and playing sines and the distortion isn't of some clicks like when I change the buffer size in ableton live. I recorded the Audio from 128 samples and 64 Samples Audio Blocks playing sine waves. And they look like this:
    Click image for larger version. 

Name:	Captura de Tela 2016-11-28 às 11.33.08.jpg 
Views:	93 
Size:	36.1 KB 
ID:	8934Click image for larger version. 

Name:	Captura de Tela 2016-11-28 às 11.33.16.jpg 
Views:	93 
Size:	40.7 KB 
ID:	8935

    So it is actually bugging, as if it was reading the first 64 samples of a 128 message.
    Is there a quick way to fix this? It would be amazing if I could run at 64 samples: Latency is at 1,77ms and jitter is only 1,32 ms

    thank you!

    the sound recorded is here: https://www.dropbox.com/s/cf9i95eazd...rSize.aif?dl=0

    And I am still intrigued: where does the jitter come from? Isn't it possible to lower it down some other way? Can't there be a way to synchronize i2s or DAC to the code instructions? How does the algorithm of the Audio Library work? Does it keep refreshing the audio block at the frequency: SAMPLE_RATE/BLOCK_SIZE in a Interrupt routine? Does the Audio Block only change its value when the audio Block has finished loading? isn't there a way for it to refresh the Audio Block at the Sample Frequency? This way the instruction would be take the same time, the sampling period, instead of having to wait for different times for the sound to be modified depending on how close to the next audio block change the instruction is... Like this, the jitter would not depend on the block size only on sampling frequency...
    The latency of your system is amazing, the jitter is the only issue on designing DMIs...
    Last edited by joaotragtenberg; 11-28-2016 at 02:19 PM.

  6. #6
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany NRW
    Posts
    5,679
    Quote Originally Posted by joaotragtenberg View Post
    I have tried lowering the AUDIO_BLOCK_SAMPLES from 16 up to 128 and it is impressive how the latency and jitter get down to 1ms when around the Audio Block of 16 samples. it seems to raise proportionally the latency and jitter with the size of the audio block. But the sound quality gets distorted in an unusual way...
    yes, maybe a part of the problem is :
    https://github.com/PaulStoffregen/Au...py_audio.S#L48
    Edit all lines with "//TODO: 256 = AUDIO_BLOCK_SAMPLES*2"


    Quote Originally Posted by joaotragtenberg View Post
    And I am still intrigued: where does the jitter come from? Isn't it possible to lower it down some other way?
    As long as buffers are used, there is no way - the whole lib and every part of it uses these buffers.

    In 99% there is no problem. Nobody can hear the small latency.
    The speed of sound is 343 m/s (20C air temperature) . In milliseconds: (343 m/s) / 1000 = 0.34m/ms. Means: If you play a guitar, you allready have 1ms - Only due to the speed of sound. So, don't spend too much time on these "issues"...
    (calc yourself how big the latency is in a big choir - is that a problem for the singers ? no. let's say only 10 meters: 29(!) ms)

    You have to write your own lib, if it is too slow for you - no chance to patch anything to work without these buffers.

    Edit:
    The jitter has various reasons. Not ideal divisors for clocks and so on.
    Edit: deleted last sentence - was wrong.

    Last edited by Frank B; 11-29-2016 at 07:06 PM.

  7. #7
    Quote Originally Posted by Frank B View Post
    yes, maybe a part of the problem is :
    https://github.com/PaulStoffregen/Au...py_audio.S#L48
    Edit all lines with "//TODO: 256 = AUDIO_BLOCK_SAMPLES*2"
    Thanks, I'll try that. Hope it works...
    Do I maintain the "#" before "AUDIO_BLOCK_SAMPLES*2" ?
    What does that # mean?

    As long as buffers are used, there is no way - the whole lib and every part of it uses these buffers.

    In 99% there is no problem. Nobody can hear the small latency.
    [FONT=Arial]The speed of sound is 343 m/s (20C air temperature) . In milliseconds: (343 m/s) / 1000 = 0.34m/ms. Means: If you play a guitar, you allready have 1ms - Only due to the speed of sound. So, don't spend too much time on these "issues"...
    (calc yourself how big the latency is in a big choir - is that a problem for the singers ? no. let's say only 10 meters: 29(!) ms)

    You have to write your own lib, if it is too slow for you - no chance to patch anything to work without these buffers.
    I am not complaining about latency at all... anything below 10 ms has practically no effect on the user perception...
    The problem is the jitter, which people believe that anything above 1 ms is perceptible...
    There have been some tests that showed that 3ms jitter has the same negative impacts as 20 ms latency, which is perceptible. I want to experiment exactly with the limits of low latency, I'm a researcher, so these 2.9ms jitter I'm finding are really bugging me.
    I don't believe you would need to change the whole library for this to change... maybe if I can interfere with the orderly manner the timer re-feeds the audio block.
    Would it be possible to call a method that restarts instantly the filling up of the audio buffer, so when I trigger a sample I automatically discards the information that is filling up the audio buffer and starts immediately filling up the audio buffer with the sample information?
    This way the latency is always the time to fill up an audio buffer... no more no less. The latency would always be 128/44100 = 0,0029 s. The latency is ranging from this to 5,8 ms exactly because depending on how full the buffer is at the time the synth/sample is triggered. If the buffer had just finished filling latency would be 2,9ms, if it had just started, it would take two blocks time: 5,8ms. And it varies in a random value between these two...

    Thank you
    Last edited by joaotragtenberg; 12-07-2016 at 11:48 AM.

  8. #8
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany NRW
    Posts
    5,679
    Edit all lines with "//TODO: 256 = AUDIO_BLOCK_SAMPLES*2"
    Please pull https://github.com/PaulStoffregen/Au...memcpy_audio.S
    and https://github.com/PaulStoffregen/co.../AudioStream.h

    the .S files got updated, so it doesn't need editing anymore. Its sufficiant to edit AudioStream.h, now.

  9. #9
    Senior Member duff's Avatar
    Join Date
    Jan 2013
    Location
    Las Vegas
    Posts
    969
    Quote Originally Posted by joaotragtenberg View Post
    I have just performed some simple tests with Teensy to measure the minimum latency the board could give between a controller's input and a sound output.
    Can you post the exact program you used to measure this? Are you sure the square wave object starts with high signal? I don't know but I'm willing to try to reproduce this also if i had a program to test?

  10. #10
    Quote Originally Posted by duff View Post
    Can you post the exact program you used to measure this? Are you sure the square wave object starts with high signal? I don't know but I'm willing to try to reproduce this also if i had a program to test?
    The exact procedures i used was described in the first post of this thread.
    I used a logic analyser and with their software there is a tool to measure time difference between two onsets.

  11. #11
    Quote Originally Posted by Frank B View Post
    Please pull https://github.com/PaulStoffregen/Au...memcpy_audio.S
    and https://github.com/PaulStoffregen/co.../AudioStream.h

    the .S files got updated, so it doesn't need editing anymore. Its sufficiant to edit AudioStream.h, now.
    ��
    I will do that, hope it works!

  12. #12
    Senior Member duff's Avatar
    Join Date
    Jan 2013
    Location
    Las Vegas
    Posts
    969
    Quote Originally Posted by joaotragtenberg View Post
    The exact procedures i used was described in the first post of this thread.
    I used a logic analyser and with their software there is a tool to measure time difference between two onsets.
    Yes, but without code to reproduce this then I doubt anyone will really delve into what your talking about or if they do they must make (coding) assumptions on how you got these results. Remember the forum rule!

    Also you never said what version of Teensyduino and what cpu speed you compiled at?
    Last edited by duff; 12-04-2016 at 10:03 PM.

  13. #13
    Senior Member
    Join Date
    Oct 2016
    Posts
    171
    Quote Originally Posted by Frank B View Post
    Please pull https://github.com/PaulStoffregen/Au...memcpy_audio.S
    and https://github.com/PaulStoffregen/co.../AudioStream.h

    the .S files got updated, so it doesn't need editing anymore. Its sufficiant to edit AudioStream.h, now.
    I haven't the instruments but for the ears is better now! great!

  14. #14
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany NRW
    Posts
    5,679
    Ok, great thank you for testing!

  15. #15
    Quote Originally Posted by duff View Post
    Yes, but without code to reproduce this then I doubt anyone will really delve into what your talking about or if they do they must make (coding) assumptions on how you got these results. Remember the forum rule!

    Also you never said what version of Teensyduino and what cpu speed you compiled at?
    Teensyduino v1.30

    And in the code I didn't use the square wave, I used the DC object. And for the switch-button, I used a simple circuit with a 10k resistor between one electrode of the button and GND, the same end of the button was connected to teensy's digital i/o pin "0", and the other electrode of the button was connected to 3V3.
    The Logic analyser was connected in one channel to the digital i/o "o" pin, another channel was connected to the audio board's Left headphones out pin and the ground pin was connected to teensy's gnd (not to VGND!)

    Code:
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    // GUItool: begin automatically generated code
    AudioSynthWaveformDc     dc1;            //xy=226,198
    AudioOutputI2S           i2s1;           //xy=616,194
    AudioConnection          patchCord1(dc1, 0, i2s1, 0);
    AudioConnection          patchCord2(dc1, 0, i2s1, 1);
    AudioControlSGTL5000     sgtl5000_1;     //xy=77,24
    // GUItool: end automatically generated code
    
    int button0 = 0;
    int button0Pin = 0;
    
    void setup() {
      pinMode(button0Pin, INPUT);
      AudioMemory(10);
      sgtl5000_1.enable();
      sgtl5000_1.volume(1);
    }
    
    void loop() {
      button0 = digitalRead(button0Pin);
      if (button0 == 1) {
        dc1.amplitude(1);
        delay(500);
        dc1.amplitude(-1);
      }
    
        
    }
    If anyone wants help ask me

  16. #16
    Quote Originally Posted by Frank B View Post
    Please pull https://github.com/PaulStoffregen/Au...memcpy_audio.S
    and https://github.com/PaulStoffregen/co.../AudioStream.h

    the .S files got updated, so it doesn't need editing anymore. Its sufficiant to edit AudioStream.h, now.
    Great Frank!
    It is a lot better!
    But there are still some error messages:

    Code:
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/analyze_fft256.cpp:33:13: warning: 'void copy_to_fft_buffer(void*, const void*)' defined but not used [-Wunused-function]
     static void copy_to_fft_buffer(void *destination, const void *source)
                 ^
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/analyze_fft256.cpp:43:13: warning: 'void apply_window_to_fft_buffer(void*, const void*)' defined but not used [-Wunused-function]
     static void apply_window_to_fft_buffer(void *buffer, const void *window)
                 ^
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/output_pwm.cpp: In member function 'void AudioOutputPWM::begin()':
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/output_pwm.cpp:60:26: warning: iteration 64u invokes undefined behavior [-Waggressive-loop-optimizations]
       pwm_dma_buffer[i] = 120; // zero must not be used
                              ^
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/output_pwm.cpp:59:2: note: containing loop
      for (int i=0; i<256; i+=2) {
      ^
    And I was checking some samples from the Audio Library Tutorial. Some of the samples sounded a lot different in 32 and 128 samples. But it is now a lot better!

  17. #17
    PaulStoffregen,
    Would it be possible to interfere with the orderly manner the timer re-feeds the audio block? To maybe call a method that restarts instantly the filling up of the audio buffer, so when I trigger a sample I automatically discards the information that is filling up the audio buffer and starts immediately filling up the audio buffer with the sample information?
    This way the latency is always the time to fill up an audio buffer... no more no less. The latency would always be 128/44100 = 0,0029 s. The latency is ranging from this to 5,8 ms exactly because depending on how full the buffer is at the time the synth/sample is triggered. If the buffer had just finished filling latency would be 2,9ms, if it had just started, it would take two blocks time: 5,8ms. And it varies in a random value between these two...

    thank you

  18. #18
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany NRW
    Posts
    5,679
    Quote Originally Posted by joaotragtenberg View Post
    Great Frank!
    It is a lot better!
    But there are still some error messages:

    Code:
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/analyze_fft256.cpp:33:13: warning: 'void copy_to_fft_buffer(void*, const void*)' defined but not used [-Wunused-function]
     static void copy_to_fft_buffer(void *destination, const void *source)
                 ^
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/analyze_fft256.cpp:43:13: warning: 'void apply_window_to_fft_buffer(void*, const void*)' defined but not used [-Wunused-function]
     static void apply_window_to_fft_buffer(void *buffer, const void *window)
                 ^
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/output_pwm.cpp: In member function 'void AudioOutputPWM::begin()':
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/output_pwm.cpp:60:26: warning: iteration 64u invokes undefined behavior [-Waggressive-loop-optimizations]
       pwm_dma_buffer[i] = 120; // zero must not be used
                              ^
    /.../Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio/output_pwm.cpp:59:2: note: containing loop
      for (int i=0; i<256; i+=2) {
      ^
    And I was checking some samples from the Audio Library Tutorial. Some of the samples sounded a lot different in 32 and 128 samples. But it is now a lot better!
    They should sound the same - are you sure ? Ok, maybe there are other places that need some editing.
    You can ignore the warning for output-pwm, if you don't use it - but you can just download the new version (it's already fixed)
    FFT: hm, don't know, i'd had to dig into that code ... but others know more about the fft.

    Can you tell me, which sample sounds different ?
    Last edited by Frank B; 12-06-2016 at 09:54 PM.

  19. #19
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,591
    Quote Originally Posted by joaotragtenberg View Post
    PaulStoffregen,
    Would it be possible to interfere with the orderly manner the timer re-feeds the audio block?
    Possible, maybe. But this would be very, very ugly. You'd need to halt the in-progress DMA transfer. Then you're re-initialize software and hardware.

    If "would it be possible" means some amount of "would you do this", the answer is no. But if you want to dive into the code and deal with all the thorny details, go right ahead. I might even answer a question or two that comes up along the way, but that'd be the limit of my involvement.

  20. #20
    Yes Paul, I was thinking it out better and it would be ugly... the sampling rate would no longer be constant and there would be a variation in the frequencies and durations of the sounds already playing... pretty ugly...
    I was thinking of another possibility: what about being able to change the values of what the audio block as it is being filled up? So if you start a sine wave when the buffer has only filled up half of it, the other half of the buffer would already consider the new sine, it wouldn't need to wait for the next block to start...
    Is that doable in the way you organized you library?

  21. #21
    Quote Originally Posted by Frank B View Post
    They should sound the same - are you sure ? Ok, maybe there are other places that need some editing.
    You can ignore the warning for output-pwm, if you don't use it - but you can just download the new version (it's already fixed)
    FFT: hm, don't know, i'd had to dig into that code ... but others know more about the fft.

    Can you tell me, which sample sounds different ?
    I used the samples in the Audio library tutorial, loaded in flash. (Part_2_03_Samples): AudioSampleKick, AudioSampleSnare and AudioSampleTomtom.
    a huge difference in timbre...

  22. #22
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,591
    Quote Originally Posted by joaotragtenberg View Post
    Is that doable in the way you organized you library?
    No, not really. But simply changing the block size to half as many samples would accomplish pretty much the exact same thing.

  23. #23
    Quote Originally Posted by PaulStoffregen View Post
    No, not really. But simply changing the block size to half as many samples would accomplish pretty much the exact same thing.
    Yes, this would lower latency and jitter to half (3.1980,726)ms. But if what I was saying was done, the jitter would always be the size of a Sample Period (1/44100 = 22,6us) But if it isn't possible to add to the audio library it is a pitty. 0,726 ms jitter is good already!
    I will try to use the sound library with a 64 sampled Audio Block. Even though it is still not sounding good in any audio block size different than 128.

    Thank you

  24. #24
    Quote Originally Posted by Frank B View Post
    They should sound the same - are you sure ? Ok, maybe there are other places that need some editing.
    You can ignore the warning for output-pwm, if you don't use it - but you can just download the new version (it's already fixed)
    FFT: hm, don't know, i'd had to dig into that code ... but others know more about the fft.

    Can you tell me, which sample sounds different ?
    Hello Frank!
    I found out that the timbre isn't changing at all... I saw a spectrum of each one and I couldn't note a change...
    The only problem is that when I set the Audio Block to 64 samples, the AudioPlayMemory object only plays half of the file...
    Click image for larger version. 

Name:	Captura de Tela 2016-12-07 às 17.44.03.jpg 
Views:	64 
Size:	68.2 KB 
ID:	9051

    On the image you can see the top wave as the sample played with a audio block of 64 samples, and the bottom wave is the audio block with 128 samples... you can see the tale goes missing on the top wave... apparently on half.
    Does anyone know how to make the sample to be played till the end without a hardcoded 128 samples Audio Block?

    here is the code I used, the hardware was just a pullup button on gpio 2.

    I am using now the latest version of teensyduino 1.31 with the Audio Library updated and the cores updated from git yesterday (with Frank's last changes)

    Code:
    // Advanced Microcontroller-based Audio Workshop
    //
    // https://github.com/PaulStoffregen/AudioWorkshop2015/raw/master/workshop.pdf
    // https://hackaday.io/project/8292-microcontroller-audio-workshop-had-supercon-2015
    //
    // Part 2-3: Playing Samples
    
    // WAV files converted to code by wav2sketch
    #include "AudioSampleSnare.h"        // http://www.freesound.org/people/KEVOY/sounds/82583/
    #include <Bounce.h>
    
    
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    // GUItool: begin automatically generated code
    
    AudioPlayMemory          playMem1;       //xy=143,97
    AudioMixer4              mixer1;         //xy=367,173
    AudioOutputI2S           i2s2;           //xy=553,168
    AudioConnection          patchCord4(playMem1, 0, mixer1, 0);
    AudioConnection          patchCord5(mixer1, 0, i2s2, 0);
    AudioConnection          patchCord6(mixer1, 0, i2s2, 1);
    AudioControlSGTL5000     sgtl5000_1;     //xy=495,294
    // GUItool: end automatically generated code
    
    
    
    
    
    // Bounce objects to read pushbuttons
    Bounce button2 = Bounce(2, 15);
    
    
    void setup() {
      pinMode(2, INPUT_PULLUP);
      AudioMemory(20);
      sgtl5000_1.enable();
      sgtl5000_1.volume(0.65);
      mixer1.gain(0, 0.5);
      mixer1.gain(1, 0);
      mixer1.gain(2, 0);
      mixer1.gain(3, 0);
    }
    
    void loop() {
      // Update all the button objects
      button2.update();
    
      if (button2.fallingEdge()) {
        playMem1.play(AudioSampleSnare);
      }
    }
    the other files hold the sample data to be put in flash memory: (sorry to upload it here)
    the AudioSampleSnare.cpp is:
    Code:
    // Audio data converted from WAV file by wav2sketch
    
    #include "AudioSampleSnare.h"
    
    // Converted from snare.wav, using 22050 Hz, u-law encoding
    const unsigned int AudioSampleSnare[2817] = {
    0x02002BD3,0x65636656,0x6B6A6B67,0x7071706F,0x43637171,0x29ABBA23,0x3137474C,0x3A4A544D,
    0x30C1542C,0xE14F6360,0xEDDCE2E6,0xEEF1F4F4,0xEEEDEAEA,0x3745A2E2,0xE7E6DAC8,0xC7C3C3DA,
    0x2931A5C6,0xDCD6C813,0xEEEFE6DD,0x5750C0E5,0x24424E52,0xC4BEB2A5,0x0F4744A4,0x329AA698,
    0x4C5E503E,0xC7D5D1D4,0x50737566,0x632BBED9,0x7A7C7A78,0x646B777A,0x5C595E62,0x60605C5B,
    0x5F636462,0x14475057,0x271EC6C8,0xC9D8D2C3,0x68666252,0x53676666,0x4848D2D1,0xD2E3D7BB,
    0xD7D2D6D6,0xDDD7D1CB,0xC4CCE3E7,0xD1BEBDB7,0xC6E3EBE5,0x493E2402,0xE6E9ECD4,0xCDECF1EA,
    0x5320BFA5,0x70706C64,0x6F70716F,0x73717071,0x72717577,0x6F6F7171,0x6F747272,0x42584E53,
    0x40402722,0x4E362416,0xD3A29A12,0xC2BCC0CD,0xEFE8E0CD,0xF4F4F3F2,0xF7F6F4F3,0xF8F7F7F6,
    0xF9FBF9F7,0xDADFE8F5,0x973541AB,0xF3F2EEDD,0xCFEDF2F1,0x13925540,0x6260635B,0x6D696464,
    0x6C6E696E,0x72716E6B,0x73767673,0x61747171,0x33913E34,0x726D6452,0x756E5161,0x73727274,
    0x73747675,0x6B6F7676,0xB05E6B6F,0xE7E5D3D4,0xEDEFEEE6,0x8359ACE4,0xE3DDE7E5,0xF3F2F2EF,
    0xF4F2F2F4,0xF7F5F3F4,0xFAFAF8F8,0xFFFEF8F7,0xFDFBFFFF,0xFBFCFAFC,0xE9FAFBFB,0x3823C0BC,
    0x48282621,0x605D4246,0x69656560,0x71707070,0x76757574,0x74767575,0x696F7170,0xA1627170,
    0x605E5F43,0x67545559,0x5E69696E,0xC084D9D1,0xBDC0DADC,0x37B291C4,0x545C5B5C,0x483C3D4F,
    0xDFCAC1B7,0xF7F7F4EB,0xF5F3F2F4,0xFAFCF9F7,0xF4F6F9F9,0xEDF3F4F2,0xEBEEF5F4,0xE6E4EBED,
    0xE6E9EDED,0xE7EAE7DF,0x696560C9,0x645E6164,0x6D6D656A,0xE6406263,0x50B223E0,0xAE3B4D5A,
    0x594E534E,0x4F585958,0x53515152,0x565D3B3E,0x56504F44,0x4C4D5C5A,0x22535B56,0xE0D5303C,
    0xD3BED6DE,0xCEA419C1,0xDBE8E5E1,0xABCDE1D9,0xD2CBDEDE,0xDEE2C0BE,0xBAC0E0DA,0xD7CDD0D1,
    0xDCE4E3E0,0xE1E0D4D3,0xD5E2E8E0,0xE7E2DED6,0xE5E3EAEF,0xE4E8E7E7,0xE1D3D2E1,0xDEE0492F,
    0xC9D5E6E1,0xCC45B2D5,0x614D129A,0x53534E5C,0x61666451,0x5F625956,0x5458533B,0x5C635A54,
    0x68626A68,0x69706E67,0x5B66666A,0x5441383E,0x5AB5D82B,0x5E606660,0x4FAAC655,0xD34CD1C0,
    0xE8E9E8E6,0xEEF1F0EB,0xE9E8E7F0,0xEAE6E9E2,0xEEE7E0ED,0xEEEEEFEC,0xE9E6ECF0,0xEEECE4E7,
    0xEAECECE9,0xDEDCD0E5,0xE7EFF0DB,0xD9E5E3DF,0xB911D3DD,0x22B7C9C4,0x42AC5756,0x4E494151,
    0x4653B8CE,0x4C4B4438,0x70685E48,0x6F6A6E74,0x646D6F71,0x65624D4F,0x706E635D,0x726E696B,
    0x54636F70,0x33415660,0xCCD4B441,0xC2B7C9D1,0xD6D9DFD3,0xEBDFE0DF,0xE9EFECEC,0xF5F0E6E5,
    0xF4F3F1F2,0xF8F9F9F8,0xF0F0ECF3,0xE1DDDFE7,0xF2E0E1E3,0xEEDFEFF8,0xF7F5F3F4,0xEFF0F3F3,
    0xDBE0CEE4,0xD9CBD3D7,0x0242E5EA,0x553DD4E0,0xBAD6CA43,0xC0ADC1B0,0x4B4A30CD,0x62685E54,
    0x4D505661,0x6457544F,0x655C6262,0x676F6768,0x42636B67,0xCEDBE3D5,0xE3DFD3C6,0xC2CACBE4,
    0x11DFE6D3,0xD6CF994E,0xECF1F0E4,0xEDF1EEE8,0xF0F4F1E7,0xF4EBF0F1,0xDBD9E3F1,0xE9E5E7E6,
    0xCADDE8EE,0xF5EEEBE2,0xE3E6E3F0,0x99D6E9E8,0xDBC92B40,0xD5D5CDDE,0xEEE3D3B8,0xC7D4E4EF,
    0x623BDDD3,0x49563851,0x5E58AAC1,0xE1E2E3D5,0x4C4946AB,0x63614E34,0x5D616565,0x53335F61,
    0x56686263,0x5B5744BE,0x959E5D67,0xDBDAD5C4,0xDEDCE4E7,0xE1E8EAE4,0xE4E7E2D8,0xE3E5DEDB,
    0xDAD7D6CF,0xBFBFB3CB,0xCFD9A6BE,0x1F5309C9,0xD4CBDFD7,0x309339CE,0x524507B2,0xE1E4D34A,
    0xC5E4E5D4,0xD62EC4C7,0x43C0CFDE,0x28325052,0xA5B3C130,0xD9D32826,0x4AB1D6D3,0xAB3BA3B8,
    0x5B5E37B4,0x54419A99,0xC1515150,0x29D1D5D1,0xE0E1DF3B,0xD9DDCCDB,0xE2D3B7CC,0xE1D8E2E4,
    0xE5E5E3E2,0xE2E5E6E6,0xE1E2E3E1,0xDCE6E7E5,0xD537B3D0,0xDDE3D8DB,0x9531D3D7,0x60624ACB,
    0x80575C54,0x482226BC,0xD9D1DFB4,0xE5E9E3E3,0xCACCC9D8,0x525032B4,0x89D5D834,0xD6CCC04A,
    0xD5D1B6DB,0xD5DBCCC7,0xCAE0D5B7,0x3F5C1DCC,0xE2E9DDCF,0xDFE4E1D1,0xDCE2E5E2,0xB0B7CBDA,
    0xD047524D,0xE2E1D9D9,0xE0D0CEDE,0xD6E2E2E2,0xE2D4D0D2,0xC84123E0,0xE2E2E3DE,0xE8E5E1DE,
    0xC8DCE7E6,0xE4E8EFE9,0xC6D9DEE2,0x2752A6B7,0xBAE2DECF,0xE0D0D2C1,0xDCDEE2E6,0xCAC6D8E1,
    0x132C37B8,0x373EC1B0,0xD3DACFC0,0x34CEC9BA,0x533B555A,0x59404059,0x56D2DE49,0xC1B74663,
    0xDCDAB8CF,0x36D8E0DA,0x260C4452,0xD4B4B2AB,0xE6DADAD9,0xE3E5E5E7,0xE4E0E1E4,0xE6E0DCE1,
    0xE4E3D9E0,0xE4E4E2E0,0xEAE8E5E4,0xBED3DEEA,0xD1D3C815,0x35B0B5DC,0xD4924756,0xA5C5CBC4,
    0xCB40503A,0xCED9D2D0,0x492FA8C6,0x4054514C,0xB20DB0C1,0xE3E1CEAE,0x3A80CEE3,0x49464C59,
    0x50505441,0x59605C5C,0xC1D4C54C,0xE3DC313D,0xCAD3C1D7,0xC3D1D3BE,0xD61B4602,0xCD10B7DB,
    0xDFE1D9D1,0xE0D6E2E4,0xE0DAD3E0,0xD0CFDDE2,0xE0E0DCD6,0xEAE7E8E2,0xE4E2E5E6,0xD7E3E2E7,
    0x20B03422,0xD1CEC6A5,0xC1B1BFC1,0x4237BFE0,0x58573A49,0x1B99313F,0x232BD024,0xE0E1D5C1,
    0x92A9BFD0,0xAEBBC7CB,0xB4D6DBD7,0x54535B5A,0xD2B35257,0xD6B94FA7,0xD1CEACBB,0x903742A3,
    0xB2B99093,0xD7D4D4B8,0xE3DED7DC,0xDED7D5E0,0xE4E4E6E2,0xDFE2E0E1,0xE2E0DCD8,0xD7DFD9E0,
    0xE2E7E7DD,0xC8CDD8E1,0xC8ADC5CB,0xD8D6D0D1,0xD4D7D0C7,0xCFA3BFD2,0x4427CAD2,0x90A9C4B5,
    0x38B2D2D2,0x37C9D593,0x373A2D3D,0xC1CCC7B5,0xACD8DDC7,0x38B9D4A1,0xC6C3CCC3,0xD1DDCBC5,
    0xE0DED5CE,0xD8DDD1D5,0xD5B72AC3,0x3B464833,0xE1DEC7AC,0xE3E4E5E3,0xDCE0E2E4,0xDED2D3D4,
    0xD5D8DBE0,0xC0C7CAD1,0x4832340B,0xD2D1CE95,0xDAD2D5D6,0xD4D5D3DA,0x90495228,0xE0D9A604,
    0xCCD1CCD6,0xAFCEDBC9,0xC7CAD2D0,0xCEBDC1C6,0xD8D5D1D2,0xD7D2DADC,0x474315D1,0xBEC3CCAF,
    0xA6A61F08,0x30D5E0D0,0xD6D0184B,0xB8D0D8DB,0xDBD8CCC6,0x114229C2,0x08B5D4D5,0x84194133,
    0xD5DCD78F,0xD5D4C8D1,0xCD20B5CC,0xCAD7D4D2,0xE5DBBDBE,0xD5DEE2E3,0xE1E2E1DC,0xE3E6E5E1,
    0xB9AEC3D6,0xDBD7CAB9,0xD3D9DCD9,0xCAD1C9CE,0xAEC8C6C5,0x8C4D47AE,0x479FC8C6,0xC3275055,
    0x2F26A5C4,0xC89F3F41,0x3D445825,0xC49B3747,0x93871396,0x351F3230,0x58534B46,0xC79C3248,
    0x01372DC7,0x14B1BCBC,0xD0D2C040,0xBFD4E1D9,0xD8D9D4CD,0xCFD3DCDA,0xE1D9D6D7,0xD6D5D1D7,
    0xD7DCD9D1,0xD5D4D4D7,0xDFD4D2D7,0xCAD1D1DA,0xB4C1B3C1,0x10A2BC97,0x27C1C6B4,0xC8C4B637,
    0x2517CBD5,0xCEC2BAB5,0xC0C8C9C5,0xB3BAB5BF,0x82474523,0x35221E09,0xCBC4C1B6,0xE0D9D1CF,
    0xD3D7DEDE,0xCAD6D8D6,0x2BB1C9C6,0xC7C03A37,0xBC362CB6,0xB0C2C2C7,0xA394BF28,0xC2B220B6,
    0xC9D1D3D1,0xDCD1C2BE,0xE0DCD5D9,0xDDDBDCE0,0xDAD9D4D5,0xD4D4D7D8,0xD6CFC8D2,0xD6D1CFD6,
    0xDBDBDAD8,0xC0C8D1CF,0xD7C6C5C4,0xD2DADEE2,0xCEC9D0D1,0xD1D7D4D3,0xD1CFD4D0,0x92C4D2D2,
    0x208AC6BA,0xC10032AA,0xC7C7C0C1,0xCAD3D9D2,0xC9C6D2CF,0xD2D2CACD,0xC7D2C6BB,0xDBDBD5CA,
    0xD2CDD4DC,0xC7D1D0D0,0x17402AB1,0xC9C6C0AB,0xCBD5CCC6,0xAEA4A6B7,0xDFD6D3CA,0xD8D4DBE1,
    0xDBDCDBD9,0xC6CBD3DB,0xE0DBD4CC,0xCFD8D8D9,0xD4D3D3CF,0xCCC8C9D1,0xD1D0C4C5,0xB9C8D1D0,
    0xAEA9B0BD,0x33423BA0,0x4094B8A4,0x2699B838,0xB1B10722,0xBDCBC6B3,0x9AA2B1B6,0x42313335,
    0x2F383E3A,0xC8219C21,0xD1CECED5,0xE0DFDAD6,0xD2D3D8DE,0xC7D2D5D2,0x2617B0C1,0xC0C39B34,
    0xC0B51EA1,0x94C0D1CA,0xB303A3B3,0xCDB90820,0xC4D1D8D7,0xCEC8C9C5,0xD2D4C9C9,0xB8C4C4C5,
    0xD0CBC2B4,0xB7BCC6CE,0xB4AD2500,0x402D3C29,0x44A9903C,0x474B3A43,0xCC345047,0xA889B3C4,
    0x173718BA,0xAFB9BAA9,0xB7C2B2A4,0x304210B5,0xBE11A1B6,0xC3BAACBC,0xD3D0C8C5,0xBDB8C9D5,
    0xBDBBBEC0,0xD1D0C3BE,0xD0D1D2D0,0xD1CDD4D3,0xC0C6CBD2,0xBEC8C8BE,0xB3B4A5AA,0xC2C1C5C1,
    0xCAD0C6C0,0xC12680C4,0xDBD7CBCD,0xD3D4D8D6,0xCFD4D7D6,0xC0B5C4C8,0xD8D0C3CA,0xC8C9C6CE,
    0xCFD7D4C8,0xBAC0C2C5,0xC4B8BFC6,0xB4CAD1CB,0x16B0B7A2,0xBCB82832,0xBFBEC6BE,0xC8C9CDCA,
    0xC3C8D0C8,0xC9B6B8CA,0xB2BCCAD1,0xC8B8BBC1,0xB6ACACB6,0xCAD1CBC4,0xD3D0D7D4,0xD7D9DAD9,
    0xC4CACED1,0xC6D0D4CF,0xD6DBDBD1,0xC7C4D0D5,0xC3C5D0D3,0xC0AFA8C0,0xC9D2D3C7,0xC3B7B6BD,
    0xBAC1BAC7,0xC6C3C2B7,0xD3CDC3BC,0xB1B3CAD4,0xD0D1C9C0,0x9FC1D0CD,0xB8C3B7B9,0xC1A3B1A2,
    0x2616B4C4,0xCCC70B09,0xAC1785B6,0x98B5BCB2,0xBAA5AEA9,0xCEC5C6C7,0xD3D1CED2,0xD3D3CDCB,
    0xD3D2D1D3,0xCDD0CACC,0xC296ADC9,0xC0C3BCC2,0xBFA1268B,0xD2C7B5B8,0xCDCCCCD0,0xBFC5D0D5,
    0x2B2DA4B6,0xAAA08906,0x1FB2B194,0x411CA122,0x1A41504D,0x2112C1BF,0x90C0B017,0xBBA8262E,
    0xBFB30694,0xB5AAACBD,0xC1CECBC3,0xD0C51E16,0xBBC7CAC8,0xC9CCC2B7,0xC1BEBAB8,0xC2C6CCC7,
    0x25AEC2CA,0xA90C0E2F,0xC5CBCDC1,0xD1D1C9C5,0xB0CBCFD0,0xC9C4C4B0,0x3221B9C3,0xADB1A8A6,
    0x3910BDAE,0x9BA40927,0xB10B3439,0xA888A4BF,0xB6B0A0AE,0xC1B2B2B4,0xB5ACBCC3,0x193E32B3,
    0x2F2395A2,0xAE2D3F26,0x3A31ADAF,0x2FA5B084,0xB297223B,0xA4A2A2B8,0xCFD3D3C3,0xCCC2C2CC,
    0xCDC7D2D1,0xD3D3C8CE,0xD0C9D3D5,0xD5DAD9D5,0xCBCFCED0,0xBDC6C8CB,0xA6BFC6BA,0xAD1B2905,
    0x89122613,0xB4C3B7A8,0xA70CA7AA,0x200EBCBE,0xC8B8A2A5,0xB0B5C0C5,0xB2BDB0B0,0xB8B2BFBA,
    0xB9C0CAC3,0xB9AE8BA6,0xC5C7C3C3,0xC3BEC0C2,0xC8C4C4C1,0xC9D0CDCB,0xCDCAC7C3,0x83B2C1CE,
    0xC9C6AF21,0xC8C8C6C4,0xCFD1D0CA,0xCBCECBCA,0xB1BCC8CC,0xCBBBB2AF,0xC5C5C8CD,0xCCCACCCB,
    0xD2D2CCC8,0xCCCECFD1,0xB7C6C8C7,0xB4BCB1AC,0xB3B7B29D,0xB7C2C1B1,0xCCCAC7C2,0xB6C2C0C2,
    0xCBCCC9C1,0xC8C8C8C7,0xBDBAB9C0,0xC7CFC9BF,0xC2C4CECD,0xB7C4C2C3,0xCAC0B5B6,0xBBC4BEC0,
    0xC5C5C2B8,0xC0C8C5C2,0xB4A8ABB9,0xB1B1ABB1,0xC8C1B9AF,0xC7D0D2CC,0xB3B6B9C0,0xB5BBBDB6,
    0xC5C1B5B8,0xC3C6C9C7,0xD0D1D0C8,0xC8CAC8C7,0xD0D3D2CB,0xCDC7C3C9,0xCCD0D4D3,0xC7C7C8C9,
    0xC7C7CBCC,0xBDBFC4C7,0x4133299E,0x3E34323B,0x3E413D3E,0x4140423D,0x1B2A3843,0x2C3D3E31,
    0x24B0A403,0x042B393C,0xB6BCB6A5,0xC1BBB2AD,0xC8CCCEC8,0xC9C8C5C7,0xC0B4C0C7,0xADADB9B8,
    0xC1B9B5C0,0xC6CDCBC8,0xA3959EA9,0xBFC0C0BB,0xC2B4B3B5,0xB7C0C6C9,0xADACB4BA,0x8D9CA7B1,
    0x9628352C,0x8109A6AA,0xBBB6AD9A,0xB5C0C5C1,0x930E9CB5,0x30990314,0x232A353D,0x2D31322F,
    0x3F434033,0x2E203235,0x24353235,0x9615261D,0x1189AAA9,0x1104A39D,0xC9C1B2A1,0xB39FBFCC,
    0xC7C8CDC8,0xC2B8B5C0,0xBFBFC7CA,0xC4C4C1C2,0xB0BDB9B6,0x96082296,0xBFB5A812,0xC7C5C3C2,
    0xC9C2C4CA,0xC4C0B1C4,0xB9C4C8C5,0xBEBFB493,0xC2C2C1C5,0xC2BFB8B6,0xB7ACC1C7,0xB5C7C9C4,
    0xB1B0B3AA,0xBBB2B0B7,0xC1C3C2BC,0x2F97B3B7,0xBEC0AD24,0xA6B4B4AD,0xBFC8C4BE,0xBDBAA50F,
    0xAC0291B7,0xB4BEC2BA,0xD4CEBDB3,0xC3C8CBD1,0xCED1CDC7,0xC5C7CEC6,0xCDCFD0D1,0xD7D2CEC9,
    0xCFD1D4D7,0xCED0CFD0,0xCBC5C2C9,0xADB6BFC5,0xB9BCC3BB,0xC3C0C0BB,0xB2BFC2C7,0xC3C8BDA7,
    0xC6C6BBAC,0xC6CDD1CD,0xB8B7BEC1,0xB3BCB1BD,0xB4B3B2A8,0x9111ABB0,0xC6C3BAB0,0xB8C0C0C7,
    0xBFB4B6B6,0xC5C1B7B3,0xC3BEC1C6,0xA1C1C8C7,0xB407809A,0xB9BEC5C4,0xC2C4C4BC,0xB9BAC3C4,
    0xA5BDB9BB,0x151E150B,0xB6C4C4AF,0xBBBAB9B0,0xC4BCBCBD,0xC1C0C4C8,0xBDBDC4C6,0x121982B7,
    0x8A302D80,0xB30D2288,0xB1AE94A9,0x9806B2B5,0xB8B30492,0xBDB5AFB7,0x95A3B1BB,0xB011050E,
    0xC0C3BABB,0xA6A2A9A5,0x230009AE,0x242A9D88,0x14313728,0x32392D14,0x433B3B35,0x41424243,
    0x383D3D3F,0xBAAE162E,0x322B13AD,0x911D2D32,0x8791821D,0xBEBAB5B4,0xC4B9AEB3,0xB3B0BEC6,
    0xC3BEB2B2,0xB5B5C0C2,0xC7CBC6C1,0xBABDBFC0,0xC0C3B9B4,0xBEC0BEBB,0x1893B0B5,0x222B2F28,
    0x2623281D,0x34322C30,0x21373530,0x31209BA3,0xAC90142C,0x383D33A4,0xB092202D,0x152283AE,
    0xC0B8A70A,0x87A0B6C0,0x1EA9B0A8,0x041F9D11,0xA3B09021,0xC2BDB2AD,0xA294B9C4,0xC0BDA593,
    0xBBBBC1C2,0xC6C9C7C0,0xC2C3C1C2,0xBFC2C1C0,0xB2AFBDC1,0xBCC3C4BE,0xB8B1B3B4,0xCDCCC5C1,
    0xB5C0C4C7,0xC0C2C1B8,0xAD9EADBD,0xAFA8AEB1,0x0BADABAB,0x8E90821D,0x1591909C,0xAC011D2D,
    0xB0BBBEBA,0x27292B19,0xB7B11F26,0xB3BCC2BF,0xBFBAB2A9,0xB6B1BABC,0xC8CAC0B8,0xC0C0C1C3,
    0xC2C1C0C3,0xADB1B3BA,0xB7B3B7B5,0xC0C2BBB3,0xB0BCC3C2,0xB5B7BDBD,0xA3B6BEB5,0xC0BBB3A5,
    0xC8C6C4C1,0xB6C0C4C7,0xC4C5BFB8,0xC6C5BCBD,0xBEB3B9C3,0xB7B4B3BB,0xB4B99CA2,0xB4B8B1A7,
    0xB3A9ABB1,0x14A1A8AF,0x2A222324,0x31323432,0x3236281C,0xAD173437,0x969AA9B5,0xA7B3AC99,
    0x2C220BA0,0x131C2E30,0x9A9AA00C,0xBCBFB6A1,0xC7C3C3BF,0xCFD0D0CF,0xC3C6C8C9,0xB4C3C7C5,
    0xBBB7B1B0,0xB1A3B2B9,0xB4BEBFB7,0xBAB7B4B3,0xC3BDB9BA,0xB8BDBEC2,0xAFAFABB0,0xA30396AB,
    0xAEA9A7A6,0xB0B2BDBC,0xA8ABA3AE,0xA8929299,0x8C181CA0,0xA7ACB8AF,0x899FA3A3,0x88102310,
    0x38322C1B,0x2723162C,0xA4808B82,0xB4A88B87,0x98AFAFB0,0xA59D8B84,0xA7AEB0B0,0xB4ADB0AD,
    0xC3C0BBB8,0xC2C2C3C3,0xC2C2C4C4,0xC5C4C2C1,0xC3C2C2C5,0xC5C4C0C1,0xB3B1B6BF,0xBABAB9B7,
    0xA3A9B0B7,0x990AA3A1,0xA38C9FB1,0xB6B2A1A1,0xA0A3A6B1,0x149AA79B,0x1FA00E20,0x2020242E,
    0xA2A4A706,0x980D2384,0x1097959C,0xBCB7A51C,0xB3B1A7B2,0x95909EB0,0x1F2F3210,0x9E072223,
    0xC0B3A9A6,0xB7B4BAC0,0xBBB8BABB,0xC4C5C1C0,0xBBC1C1BD,0xB0B6B2B5,0xBFB4A09C,0xBABBBDC0,
    0xC7C3C1BB,0xC2C5C9C9,0xB1B5BDC1,0xA2B0A6A9,0x949C9C8D,0x209BAAA9,0xA88B0923,0xB0AEB1B3,
    0x8DA8AEAF,0x1C1A2C26,0x2F2E2A2A,0x2E2B3333,0xA60C282E,0xB4A8A1A6,0xBAB5B5B7,0xBCBBBCBF,
    0xB0ADB2B7,0xBFB8BABA,0xB7B9B9BD,0xB4B6B6B5,0xB5AEACB1,0xB1B1B0B2,0xA7A9A6AA,0xB2AB8AA0,
    0xB3B3AEAA,0xC0C0BCB2,0xBBC0C1C0,0xB4B4B5BB,0xABB0B8B6,0xB3ACAEAD,0xB6BBBBBA,0xB8BCBEB6,
    0xACB4B9B7,0xBAC1BDB3,0xB0B4B4B5,0x85A6A9A8,0x0E821822,0x9F910019,0xB9B9A89F,0xADA59FAD,
    0xB2B0AEB0,0xA7B2B6B2,0x8295A6A9,0x261B0B11,0xABAE9226,0xABA8A8A4,0xC4C3BFB6,0xBABDBFC3,
    0x9EA8B1B6,0x98A1A79B,0xA899959D,0x29229CA7,0xB7B0980B,0xBCBCB7B3,0x94B1B8BC,0x22869812,
    0x17900E1B,0xA2929619,0xBFC0B8AF,0xC4C4C0BB,0xC4C2C0C1,0xB9C0C0C2,0xB2AFAEB3,0xAEB4ACAE,
    0x958B999F,0x99939B9E,0x8C9D0311,0x160D0801,0x25179792,0x17080325,0x11959209,0x9D9AA297,
    0x179BB3B0,0x20161623,0x23212725,0xA3931523,0xB5B1B1AC,0xBFBEBAB9,0xB7B5B9C0,0xC1C1C0BA,
    0xB7B8BCC0,0xB6B9C0BE,0x91ABB2B3,0x1396A092,0x9CA9A88E,0xA8A6AA9F,0xAFB1B1B0,0x21969A9E,
    0x9D9B1C28,0x97928E09,0xA6AFAEA5,0xA7A5A5A4,0xB2B0B5B5,0xB1AAB2B6,0x31290FA4,0x2217212C,
    0x87283028,0x1587938F,0xB3B0A798,0xAEB2B1AD,0xB0B7B5B1,0xA5A4ADA8,0xA6B0B4B2,0xB0B3A59E,
    0xB0A8AAA1,0xBDBEB5B3,0xB4B3B6BD,0xB2B3B3B1,0x9CA3A1AE,0xBAB4B3AB,0x888BA7B3,0x85949B9C,
    0xB1A7978F,0xB0A7B7BB,0xAEB5B7B7,0x29262289,0x24202728,0x84860828,0xA5A4A498,0xB7B8B1A6,
    0xB4B7B8B9,0xC2BFB9B7,0xB2B6B9BE,0xA3A5A8B1,0xB0AB9B95,0xA3ACB2AF,0xA49F0000,0x27171195,
    0x8D9D911D,0x8D929982,0xB3B1AB9E,0xBCBEB7B4,0xABB1B9BB,0x0B9A9CA1,0xA49C8B16,0xADB1B2AC,
    0xB0A890A7,0xB2B3AEA7,0xB9BBB6AF,0xACAFB6B9,0xA9B2B0AA,0x9EA0A09B,0xA0998C94,0xACAFB3AD,
    0xA9B1B1B0,0xA4A7AEAB,0x172518A0,0x14909995,0x918F0A25,0x86959494,0xAEA49790,0xB4B5B5AE,
    0xB9BAB9B8,0xB7BDBCBD,0x95A1AEAD,0x27140D07,0xAC9A0F25,0xAEADAEB2,0xA9ACAEB0,0xA4A3ACAB,
    0x929387A3,0x94909A8B,0x87008090,0xB5ABA29B,0xB7B6AFB3,0xB9B8BBB8,0xB0AEB0B5,0xADABACB1,
    0xA2A1A5AB,0xA096A0A7,0xA39C9CA0,0xA6A6A0A2,0xA39A97A0,0xA5ADB1AC,0xB2A79D9B,0x9A9EA3B1,
    0x989B9E93,0x161C1796,0x9999A088,0x8E151481,0xA1A1A0A6,0xB3B3AC9F,0xA1AAB1B3,0xB0A7A196,
    0xA69EA4B4,0xBBB9BCB1,0xA6ADACB6,0x118AA4A3,0x979B0B0E,0xA0959394,0xAEACA59E,0xB0A9A9B0,
    0xB1B4B6B1,0xA0A6ACB1,0xB5B0A59D,0xB2AFB3B4,0xA7A9AEB5,0xA4A09DA0,0x82A1A8A6,0x8785191A,
    0x2A190F02,0x27292F33,0xA3A49F0F,0xBAB6AAA3,0xA6B2B4B8,0x9398830E,0x0A95A4A6,0x9F959112,
    0x1380959E,0xA9AA9D00,0xB6B1ABA8,0xB3B3B7B8,0xB4B4B2B3,0xB0B4B4B4,0xADAAA0A5,0xA9A5ABA8,
    0xAFAFB3B3,0xA69B96A9,0xA0A4A4A8,0x0891A297,0x1E170090,0x1D212421,0x81202120,0x069B9B97,
    0xB8B5AD8C,0xACB4B6B9,0xAAB0B0A5,0x0B91A2A6,0xB0A3A395,0x9DA3B0B4,0xADB1B0A7,0xAEACA6A1,
    0xABADA3AB,0x1D141387,0x01202820,0x9D8B9292,0xA8A09DA1,0x9BA8AFAD,0x94919193,0x28220296,
    0x0E131920,0xA59C998B,0xABA8A7A9,0xA4ABABAA,0xB0A9A59E,0x9FA2ABB3,0xB3B5AB9A,0xA9A6A9AE,
    0xB3B5B5B0,0xB0ABA4AD,0x97A8ACA9,0xA1A3A192,0x8388929F,0xB3A19794,0xA6ACA8B1,0xADAAA3A2,
    0x999298A5,0xAB9D939E,0x949398A4,0x12140C97,0x2A292721,0x272E302B,0xA39D821D,0xACAEAFA6,
    0x90A4A9AC,0x95959C88,0x9DA29F9E,0xA1A2A099,0xA5A39CA0,0xB3B4B2A9,0xB5B6B7B4,0xB0B4B4B3,
    0x03058EA8,0x16131713,0x9F0A2324,0xB3B4B3AE,0xACAFB1B1,0x96A0A1A7,0x8D81938F,0x00030A90,
    0x1C201808,0x040F171A,0xA49DA39C,0xABACAAAA,0x8A93A0A9,0x8A05958D,0x93959599,0x97A2A59D,
    0xA2A2A29D,0xA8A2A4A3,0xA8AAADAE,0xB0B2B0AA,0xA29CA1A9,0xA0A8ADAA,0xA5A09298,0x1600A2A2,
    0xA09F8403,0x13110099,0x99999714,0xAAA19099,0xA3ADB0AF,0xA5978790,0x09A2B0AB,0xB0B0A393,
    0x8690AAAF,0x231C1D07,0x1E282829,0x15101515,0x9A900109,0x989DA29D,0xB0AEA6A4,0x8F99A2A6,
    0xA291808A,0xACB1B1AC,0xB0B4B4AD,0xA9A9A8AE,0xA9AEAEAA,0x94160B9D,0x869CA0A1,0x252C2A19,
    0xA89B1122,0xB4ABA7A7,0xB4B7BBBB,0x8D0894AF,0x0A92820C,0x1723291F,0x13068B05,0xA490131A,
    0xA8A5A1A3,0xB1B4B2B0,0xA8A4A9AD,0xA5A4A6A8,0x820F98A6,0x8F97949C,0xA0A7A288,0x1E129898,
    0x0190920A,0x110F160A,0x22161B21,0x23231D21,0x04071417,0xA3A1A193,0xB5AD9D9C,0xB6B8BAB8,
    0xAFAEA7B0,0x91A0A5A9,0x91821210,0x92A7ACA0,0xA8A69B82,0xA4A0A2A9,0xA6A3ABA7,0x08069DAD,
    0x1920120D,0x98958E87,0xA4A7AAA3,0xA3AAAAA7,0x1C150492,0x29211518,0x22262D30,0x100F1B20,
    0x8E99940A,0xA19D9990,0xA29B939D,0xA1ACADA3,0xB09D9099,0xA2A4ACB2,0xB0B0A6A3,0x9697A7AC,
    0x9E9B9BA3,0x9B8E088D,0x0D8A9295,0x91918611,0xA8A8B2AC,0xA4A0A3A7,0x9AA3ACAD,0xA3A4A6A2,
    0xA0A5AFAE,0x0399A49F,0x2522190C,0x302E2D2C,0x9014232B,0xABA8A1A0,0xA4A9ADA9,0x858F849B,
    0x94959008,0x010B0F01,0x10120B02,0xA0911611,0xA4A4A39C,0xAFABA7A6,0x0D9099A7,0x040C0702,
    0x091E1B11,0xB6B4AC98,0xB3B5B5B6,0xA0A5AEB1,0x8690949A,0x190A8E8D,0x241E8113,0x16181A1C,
    0x09131D20,0xA6A9A79A,0xA8AAB0AA,0xA0A9A8AA,0xA0A1A4A1,0xA19F928A,0x029196A0,0x0383010D,
    0x9D930912,0x8C97999A,0x21809997,0x22212226,0x851F2826,0x07080290,0x96909401,0xA6A5A8A3,
    0xA5A0A1A9,0x141293A5,0x00120907,0x96958B83,0xA4A2A4A2,0xA7A6A2A1,0x98A1ABAA,0x01969B9A,
    0x999F9483,0x9D9A9B90,0xB0B0B0AC,0xB1B1B2B1,0x889DAAB1,0x2C2C2212,0x2A2B2C2B,0x19222729,
    0x928D0C17,0x85949597,0x97A1A691,0x92989695,0x9299A39F,0x82878B90,0x22241E0D,0x8C08181F,
    0x9EA0A5A2,0x9A95A3A1,0x0894A5A8,0x9F911516,0x90929FA3,0x0E808B8F,0x8A0A2021,0xAEAFABA0,
    0xAAAFB1AD,0x91A4AAAB,0x11079695,0x22251E14,0x101A100F,0xA7980384,0xB2AFB0AD,0xACB2B0B2,
    0x919EAAAA,0x800B908F,0x1F1C0693,0x18181415,0x161B1C16,0x1C000112,0x22221D21,0x1C1C1114,
    0x171A1517,0xA1A18714,0x918F9199,0x91988302,0x9C929392,0x81869A9D,0x96918F92,0x2119108B,
    0xA49F001D,0xA2A29D9E,0xAAB0AFA6,0xAAAAA8A6,0xABAAACAD,0x838C93A4,0x05879491,0xA495010D,
    0x9087A1A9,0x9B989391,0x0E09889A,0x20201004,0x18232319,0x13160D03,0xA6A39A05,0x99A2AAAB,
    0x1A0D8F98,0x2B1F2224,0x1A1C222A,0x17222320,0x8E01800E,0xA09F9A9A,0xA4ABA8A3,0x96968E92,
    0x211E1780,0x8985071D,0xA2958F8D,0xB3B2B0AA,0xB0AFB1B5,0x94A2AAB0,0x22201805,0x1E171520,
    0x8B021822,0x9B9C9894,0x90939096,0x999A958A,0xA6988F96,0x148EA2A8,0x0E15161C,0x181D1505,
    0x8184000A,0x14088081,0x92928A09,0x8511818D,0x92979691,0x8702028E,0x8A9A9A92,0x880A0F10,
    0x1089979A,0x9A908D0D,0x090C8299,0x14849386,0x1321251F,0x9996958B,0xACA7A49F,0xA4A7A8AC,
    0xA8A3A2A4,0x95A1A4A8,0x87008D91,0x07121200,0xA09D9581,0x90888695,0x00889296,0x8C830806,
    0x17121186,0x93880E19,0x8B84858A,0xA5A5A199,0x078593A1,0x26231E15,0x25292621,0x1615121C,
    0x80111619,0x98968E8B,0xAAA5A19C,0x8E9CA6AB,0x0F8D9994,0x0A1C1914,0x90908E8E,0xAAA39B91,
    0xB2B2B0B0,0xABAEB0B0,0x1F0F90A2,0x22272625,0x1F201D1D,0x9B988D09,0x8B95999B,0x8B018C8B,
    0x8E969495,0xA5A7A18C,0x1719039C,0x0D011416,0x8607191C,0x9492928C,0x81100E8C,0x87878B82,
    0x9995020B,0x93989EA1,0x98999289,0x0B079297,0x9A9A810A,0x80140392,0x92988A86,0x0F161B0F,
    0x2B262215,0x1A21272C,0x97880C17,0xA6AAAAA4,0x99A1A8A8,0xA0A39E96,0xA09C9193,0x949D9696,
    0x9C989082,0x959F9C9D,0x9B9D938B,0x10100A8D,0x8F989486,0x8C0D1011,0x9FA4A39A,0x9E989196,
    0x999B9B9F,0x1F12028E,0x25211C1B,0x18282525,0x11080405,0x938E1317,0x96050E00,0x9FA1A7A6,
    0x91939699,0x1D168095,0x14101821,0x0D151617,0x010C100A,0xA2988885,0xA0A3A1A2,0xA0A8A8A2,
    0x090C8A94,0x13161405,0x8A860108,0xADA7A395,0xB0B0B2B2,0xA5ADAFB1,0x0D08929A,0x211B0C81,
    0x23252021,0x1A211B1B,0x9A90810A,0xA19A989E,0x8494989E,0x1F151309,0x13131D21,0x1721221E,
    0x9D989302,0x8592858F,0x1B1A160A,0x14182020,0x0518201A,0x939B9B94,0xA2999A93,0xA19FA7A8,
    0xA3A096A1,0x95918E94,0x919AA09E,0x99969590,0x04068A95,0x94930602,0x020A9093,0x06038385,
    0x91870008,0x9297989B,0x86849891,0x9F999C9C,0xA19E989E,0x86878092,0x16110D03,0x25262521,
    0x22212123,0x0E15181E,0x95868282,0xA2A2A19F,0xA0988E96,0x1602919D,0x24211B1D,0x21242121,
    0x948A8510,0xA7A2A3A1,0xA6AAABAC,0xA7A6A7A5,0x820294A4,0x8A8B8E86,0xA09F9991,0x929AA0A1,
    0x02908B83,0x91860309,0x929A9B94,0x17060B00,0x19171E22,0x231F1D21,0x1214151C,0x8D828205,
    0x93948A89,0x81919293,0x100B1013,0x010C1113,0x0F0E0785,0x8C82070F,0x99929493,0x9C9A9B9D,
    0x04909699,0x040D100D,0x10088487,0xA1969207,0xA6A7A5A3,0x9CA2A9AA,0x8B8C9299,0x028B9190,
    0x8600110E,0x830B838A,0x959E9F91,0x98A09F9A,0x130A818B,0x14131919,0x1C171B1A,0x08121217,
    0x96908702,0x97929496,0x8F949297,0x1C150487,0x21232420,0x1212111E,0x9B8F0810,0xA0A19D9F,
    0x91979C9B,0x94969C98,0x95919191,0x110C0397,0x1F1D1719,0x100E191E,0x820A1018,0x969B9B97,
    0x959AA19A,0x0B878586,0x0514120F,0x9FA19786,0xA099969A,0xA5A6A4A1,0xA3A4A5A4,0x029397A0,
    0x1B1A1615,0x1621211D,0x8A878983,0x93909391,0x0005869A,0x13141006,0x1A1C1B15,0x2527231D,
    0x1C212222,0x03101315,0x96969085,0x0E0D8494,0x11140F09,0xA095870B,0xA3A6A8A5,0xA5A9A7A2,
    0xA4A6A7A7,0x979FA1A1,0x888E9798,0x8B880501,0x0E060282,0x1B141115,0x19181C1F,0x0B0E1113,
    0x948D800B,0x90939C9B,0x8A8A8F92,0x13121004,0x0E101717,0x130A8005,0x9180040F,0x00899494,
    0x8D86898A,0x1D181080,0x1C161C1F,0x8507171F,0xA39F948D,0x9CA0A2A1,0x94999C9D,0x1C140984,
    0x140E171E,0x00161C18,0x92918D89,0x9A9A9A95,0x84848A94,0x88860282,0x8B8F8081,0x9796948C,
    0x8B8C8D91,0x9D9A9694,0x86858A91,0x08858A90,0x0A161917,0x130E0885,0x82070D15,0x9392928D,
    0x989A9594,0x8A929091,0x0D020100,0x12121112,0x1F181614,0x191A1F22,0x0F121215,0x95958D04,
    0x96999492,0x1B14038B,0x20201A19,0x0912161B,0x8F008382,0xA5A19D98,0xA1A4A7A8,0x989BA0A1,
    0x01100E8F,0x85858B84,0x9A989691,0x9194989C,0x90969590,0x9D9A9390,0x90969A9A,0x16050581,
    0x1914141A,0x24211D20,0x1419191E,0x0B111512,0x07051013,0x12070404,0x17121317,0x07080C16,
    0x12100903,0x81040D11,0x948D8C8B,0x9A9A9898,0x0D899194,0x08111413,0x0E070181,0xA0999201,
    0xA4A3A3A0,0x98A0A5A8,0x92909094,0x81909696,0x92918303,0x90818590,0x949BA198,0x939B9E9A,
    0x19110982,0x1914181C,0x201B1E21,0x1215171A,0x928B000D,0x93918F8E,0x8789888C,0x211E1283,
    0x22232623,0x1216151D,0x94880F13,0x979B9595,0x90929794,0x91929A9A,0x95918E8B,0x09070393,
    0x1415130F,0x80850C15,0x978C8903,0x939AA0A1,0x8D919D9E,0x13050407,0x0712100F,0x9DA09781,
    0x9F9C9698,0xA0A2A2A0,0xA0A0A09E,0x11828F99,0x201D1C1B,0x17222221,0x8400050B,0x968C8B8A,
    0x07100D95,0x181B140A,0x1C1E1E19,0x2224221E,0x141B2121,0x8A02060C,0x9C979697,0x0F0E0196,
    0x1216140C,0x9A90800D,0x9CA0A2A0,0xA3A6A7A1,0xA1A4A4A5,0x9BA0A19E,0x878A979D,0x8B8D8385,
    0x0B838788,0x1813070E,0x1814181C,0x14121316,0x89830911,0x0203898D,0x0C070483,0x1C171714,
    0x0610171E,0x05818987,0x9D979186,0x87919B9E,0x8587898E,0x1E1B1105,0x1A161F21,0x810A151A,
    0xA09E948D,0x9C9EA19F,0x9195989C,0x16140682,0x12060F15,0x8F061616,0x98989592,0x9E9EA09E,
    0x84848D98,0x06800706,0x110A0B10,0x00010208,0x8082050A,0x95979490,0x88838789,0x14800089,
    0x131E201F,0x1D151310,0x0609131C,0x92939181,0x98969693,0x96969899,0x8B8F9194,0x8B8B8485,
    0x1A110B02,0x13131B1F,0x0A0B0509,0x98968E03,0x8D999B9A,0x1B1D1304,0x151A1B16,0x10121817,
    0x000F0E10,0xA29E958E,0xA1A0A3A5,0x01909AA0,0x15161A16,0x07131714,0x8F878481,0x96949493,
    0x9C9C9E9A,0x92989999,0x10010383,0x201A1214,0x1111141E,0x18202219,0x9294880D,0x81838085,
    0x0F010108,0x090F1414,0x8687010B,0x928A9393,0x86808790,0x96979691,0x8C899397,0x8687818A,
    0x83030A05,0x09828987,0x16181110,0x161C1B14,0x08070A11,0x100C0082,0x0C101211,0x06101813,
    0x0412120C,0x90939087,0x9B9C9F98,0x9C989498,0x86939CA0,0x05008486,0x0C0D0609,0x92870605,
    0x9B969697,0x9DA09E9B,0x94949297,0x1F170E86,0x25252421,0x191B2124,0x0A111516,0x0C07050B,
    0x14111110,0x81800D16,0x0B080680,0x05100F0A,0x918D8D87,0x9B9C9A94,0x8E949A9E,0x03898E8A,
    0x88000708,0x07050382,0x0B0E100B,0x04060B0D,0xA0988201,0x979A9C9A,0x95979D9E,0x07008991,
    0x0A0F1110,0x1617130A,0x13131916,0x8D8D8311,0x9997908D,0x8A929193,0x12120B06,0x1F202118,
    0x14171A1B,0x110A1015,0x85020711,0x10090487,0x1E161212,0x18191B1E,0x83111315,0x9293938F,
    0x9F9D9A98,0x9BA1A3A1,0x97949195,0x898C9495,0x8791918A,0x91000085,0x93909395,0x8280838E,
    0x110D0485,0x131A1E17,0x18181613,0x8E021118,0x8B8A9192,0x03869391,0x10100600,0x02141512,
    0x9087898D,0x1612038D,0x1D1D1B16,0x06141C20,0x908C8582,0x8590908E,0x00000002,0x16110F07,
    0x100F1219,0x83820910,0x8C830080,0x8F8D9090,0x94949192,0x050B0D82,0x06070201,0x84810709,
    0x9E9C948C,0xA19D9D9D,0x969FA1A3,0x0E889090,0x1D1A1B19,0x2121201F,0x181A1A1D,0x14181A1A,
    0x10101214,0x10171611,0x86838200,0x07050282,0x80030609,0x8E828283,0x96939192,0x85838D94,
    0x07058588,0x00878983,0x09808203,0x07020106,0x0B070507,0x98979882,0x9A95939A,0x8A909294,
    0x0F0A0680,0x1005080E,0x1A191917,0x0D171518,0x89868783,0x90949792,0x00808C90,0x1C121007,
    0x1D1E2020,0x13141419,0x0C111010,0x018A8701,0x0E11100A,0x191E1D14,0x13151517,0x938D0511,
    0x95908D93,0x9F9A9898,0x8F949CA1,0x9391908F,0x908E8D90,0x00048793,0x92908500,0x8087888C,
    0x11060203,0x1B131014,0x1213171E,0x12161614,0x91928A07,0x9289878C,0x03010390,0x1817130E,
    0x88831116,0x808B8502,0x1614140F,0x1A1B191A,0x8E840914,0x90919393,0x0200898F,0x0C068084,
    0x18180E0B,0x12121212,0x0908050D,0x8D8C0007,0x878B8987,0x1284928A,0x0D101013,0x0404070B,
    0x95918C81,0xA1A1A19E,0xA4A3A1A1,0x8A939CA1,0x1B180C84,0x1B171516,0x1B1F201F,0x1611161A,
    0x1916161A,0x14131214,0x080D1417,0x0604050B,0x0F0B0904,0x0288820D,0x120C0908,0x8683000E,
    0x86020482,0x8E8D8689,0x8002878D,0x06018585,0x8D000182,0x918C888D,0x95949794,0x908E9296,
    0x868E9293,0x100F0E04,0x16130F0F,0x03111818,0x81010482,0x9796938D,0x09058390,0x11130F08,
    0x0F111612,0x0304060D,0x8D8C8903,0x8C919694,0x140E0B02,0x2423221B,0x20222325,0x1115151A,
    0x9D9D9887,0x9093989C,0x8B8F9392,0x05048389,0x09028381,0x0680050B,0x91908309,0x93959692,
    0x92929193,0x120B0484,0x16161410,0x17191718,0x01101414,0x838D8C86,0x02818203,0x8C8E8C88,
    0x8C888A89,0x0B06838D,0x1B15100B,0x171E2120,0x0E0A0B12,0x98918806,0x9798999B,0x90969A98,
    0x0601828B,0x0C070104,0x0806020A,0x090A0D07,0x14150D0B,0x17141714,0x211F1E1C,0x161C2022,
    0x8A82050E,0x9F9D9891,0xA09C9C9E,0x979C9EA0,0x848F9091,0x1C1A150E,0x86010E14,0x00038483,
    0x078E938D,0x05090F10,0x848B8B82,0x16181408,0x16191716,0x12151411,0x8D8E830C,0x060B0886,
    0x12140F03,0x18161210,0x0B091215,0x8681030C,0x03878E8E,0x938C8602,0x999B9C98,0x9C9D9B99,
    0x17108191,0x1D1A1818,0x1B20211E,0x0B0E1216,0x88030A0B,0x92909091,0x80018791,0x0A030200,
    0x1113100D,0x070F1311,0x918A8301,0xA1A09B94,0x93989B9D,0x1D158290,0x21201C1C,0x1316181E,
    0x0D0C0F12,0x8C010A0D,0x89878B92,0x858A8A85,0x0F0C0C03,0x0B101110,0x04838401,0x0F048007,
    0x908E8C02,0x110E008A,0x07080B0D,0x1717160F,0x89020C13,0x8583008A,0x928C8003,0x8783808E,
    0x08018385,0x100C0B0A,0x1E1B1913,0x181D2121,0x10151817,0x948E8602,0xA09F9C99,0x9B989CA0,
    0x8E93979B,0x02048088,0x090B0E07,0x83050304,0x84080585,0x16098288,0x201C1C1D,0x201F1E20,
    0x181D1F20,0x85040D12,0x918F8F8F,0x8A8C8D90,0x0E0B0487,0x100F0D10,0x03111411,0x01868780,
    0x86008003,0x93908B8C,0x91929191,0x0602828B,0x0402090A,0x8202100E,0x868A8880,0x01838686,
    0x07050909,0x16171610,0x1B181818,0x17181517,0x16161919,0x86820712,0x9A97938E,0xA0A0A1A0,
    0x8B959CA0,0x15120B82,0x21211C16,0x1213181D,0x0F0E0D0F,0x8181070D,0x00838781,0x80810082,
    0x13130F07,0x13141513,0x85020C11,0x9391918E,0x9B9C9794,0x150A8892,0x140D0C12,0x15151718,
    0x11101315,0x82050C0F,0x84878C8A,0x878A8985,0x05060582,0x070C100C,0x0B080506,0x0901040B,
    0x88858305,0x09030183,0x01050709,0x14141108,0x83000911,0x80020183,0x86868000,0x83030285,
    0x01020082,0x0F0D0602,0x18171711,0x1A1C1C1C,0x10131719,0x90878307,0x9B989895,0x9895979A,
    0x8991969B,0x02008383,0x10111008,0x0A0F0E10,0x03070406,0x10008584,0x1A171B1B,0x1B1C1C1C,
    0x151A1C1C,0x81090F10,0x86858888,0x82818385,0x100D0680,0x0F0D0B0D,0x06121110,0x83868482,
    0x82818002,0x918E8986,0x8E919292,0x0600828A,0x01090C0B,0x020B1007,0x85878303,0x02040284,
    0x08040804,0x1414120F,0x15141514,0x17151317,0x15181815,0x00050E13,0x96928883,0x9C9D9C98,
    0x92969A9B,0x14100489,0x201D1614,0x1113171D,0x0C0E0E0E,0x84060A0A,0x08050481,0x00038200,
    0x15100A02,0x18191617,0x050E1316,0x84828986,0x96938E87,0x130C8090,0x07060A11,0x13141410,
    0x0D0B0A10,0x8A830309,0x0502878B,0x8B8A8401,0x0A0E0289,0x05060602,0x15131007,0x09060812,
    0x06090302,0x03000407,0x0B0E0B05,0x07101310,0x06080503,0x04080D09,0x06818883,0x86010205,
    0x04020380,0x15120D06,0x19161616,0x1F1D1B1A,0x090C131B,0x82030403,0x91908F8A,0x8E8E8F90,
    0x06859190,0x800E1310,0x02818586,0x8C8B8681,0x90909191,0x8F8B8E91,0x0501868E,0x19191811,
    0x1B1B1A1B,0x1014191B,0x87818206,0x01898D8D,0x1413120E,0x1A181516,0x1617181A,0x15161414,
    0x090F1415,0x918D8400,0x95939191,0x90949595,0x888C9090,0x88878A89,0x0289908E,0x04090707,
    0x100B0303,0x0F141210,0x0C0A0F10,0x1311100D,0x15111215,0x14151719,0x030B0E11,0x80828482,
    0x84838A87,0x8A8E8B8A,0x80060486,0x03020301,0x8D8F8780,0x83868785,0x06058287,0x0F070303,
    0x0F111110,0x1012110E,0x090F1010,0x80010306,0x03818283,0x100C0403,0x14121110,0x11121516,
    0x81040E12,0x83808485,0x9493918E,0x898A8D92,0x83828186,0x07018100,0x0A0D0D0A,0x06040105,
    0x040A0A08,0x07050282,0x0E080407,0x11101110,0x13151715,0x0B050811,0x84000E10,0x09048183,
    0x88828005,0x0A030185,0x0F08030B,0x16191712,0x10111111,0x8482030A,0x8B858687,0x90919291,
    0x868B8D8C,0x0F0B0581,0x0E0F1110,0x080D0E0E,0x86810609,0x8F918E89,0x0182888B,0x110D0B06,
    0x15161512,0x0D111313,0x81828203,0x88878585,0x0D0B0385,0x10111111,0x13151511,0x14131212,
    0x070D0E11,0x01020403,0x8E888782,0x8382888E,0x04030400,0x05008202,0x84888205,0x84838787,
    0x07828886,0x0B0B0C0B,0x08080A0C,0x130E0708,0x16151514,0x15151518,0x080D1112,0x84020B0E,
    0x0C050382,0x0202070D,0x09080D0A,0x02070906,0x06070602,0x90870104,0x898D9194,0x87878787,
    0x0D080084,0x060C0809,0x0B0A0601,0x8784050A,0x82828687,0x0B060201,0x14141310,0x16161717,
    0x12171A18,0x0B09090E,0x85040A0B,0x80818387,0x80838686,0x03030100,0x0C0B0705,0x0A090B0C,
    0x82030708,0x84830202,0x888A8584,0x01800081,0x0E0A0603,0x0F0D0F10,0x11151412,0x0B09090F,
    0x8B880007,0x8B8D8E8D,0x05028188,0x1612120D,0x16151416,0x040E1416,0x02040401,0x87898400,
    0x87858383,0x07060284,0x0E0C0B0B,0x0E101211,0x0506060D,0x82810102,0x00838282,0x0C0A0302,
    0x1111100E,0x0B0C0D10,0x87898404,0x8A898686,0x08818B8B,0x0B0C0A08,0x1111100D,0x110C1011,
    0x0C0D1012,0x0707060A,0x83800104,0x80838686,0x04090805,0x80830001,0x82060905,0x00848481,
    0x87888583,0x0C090582,0x080C0D0C,0x100B0A08,0x14141213,0x14131514,0x10101014,0x020B0B07,
    0x82828000,0x02070B06,0x06090600,0x090A0808,0x04040304,0x01060706,0x8D929086,0x86868486,
    0x07048285,0x0B09090D,0x09050105,0x810B0F0D,0x06808386,0x090A0805,0x1413110C,0x17191815,
    0x15181615,0x04070E13,0x02050705,0x80838784,0x83888780,0x03018082,0x07050201,0x06060809,
    0x04060708,0x81070601,0x83868787,0x81838383,0x07040300,0x080A0C09,0x11110B08,0x01070C0B,
    0x81040908,0x898A8886,0x09028486,0x1615110D,0x17171918,0x10151817,0x08070408,0x88810405,
    0x81000084,0x04028586,0x07060706,0x0B0C0C0A,0x0604080B,0x06060606,0x0502080A,0x0D038006,
    0x0D0C0C10,0x060C100F,0x908A8001,0x898A8C8E,0x838C8D8E,0x0B0B0A06,0x11100D0A,0x07101213,
    0x0D0C0C09,0x03070B0D,0x80820205,0x03020402,0x13110E09,0x0C0A090F,0x0A100E0C,0x81020002,
    0x8E8C8300,0x80858B8E,0x09070281,0x11100F0C,0x14151311,0x0E0F1315,0x090C0B0D,0x83858304,
    0x84878786,0x04818483,0x110C0908,0x13131313,0x0E111214,0x00828206,0x8F850003,0x8482878E,
    0x03028287,0x06010203,0x050B0D0A,0x01010203,0x84820003,0x82838886,0x07010200,0x1413100D,
    0x18181615,0x12141516,0x11101011,0x06081112,0x83010507,0x81818083,0x80808180,0x08070603,
    0x06040607,0x05070807,0x81808201,0x82868683,0x03040180,0x00800080,0x07040300,0x01040606,
    0x84828080,0x84858482,0x0A080281,0x0C0D0D0B,0x1211100F,0x0F111213,0x07080609,0x84848401,
    0x02828383,0x05030302,0x0C070505,0x0608090B,0x08080504,0x81810104,0x01050400,0x0B040081,
    0x0A0F0F0E,0x0F0E0D0C,0x0202060B,0x86858281,0x88888B8A,0x83858688,0x06030380,0x10100C07,
    0x0807080B,0x04080C0C,0x02020102,0x82800101,0x01008184,0x06070704,0x05060507,0x08050206,
    0x00010308,0x84810102,0x80808285,0x02818182,0x01010204,0x090B0602,0x0507090A,0x82000305,
    0x83858786,0x82838685,0x03000182,0x0C080A08,0x11100F0E,0x0A0C0E11,0x06030206,0x02030306,
    0x03040000,0x02020101,0x02020302,0x81800204,0x84858581,0x85838182,0x80818486,0x02020300,
    0x04040404,0x03030304,0x02040603,0x03010100,0x01010204,0x04030101,0x04030202,0x03040403,
    0x05030304,0x04040504,0x02000303,0x02040504,0x05030202,0x04050707,0x02040203,0x00000103,
    0x80828101,0x83828181,0x00828382,0x04030201,0x08070705,0x06080808,0x02030505,0x84838100,
    0x83838485,0x81818383,0x04010100,0x04040403,0x04050403,0x01010103,0x82828000,0x01818181,
    0x02020100,0x06060403,0x03030506,0x02020303,0x81800081,0x81828282,0x81818181,0x03020180,
    0x05050404,0x06050506,0x03030505,0x02020203,0x80000001,0x80000000,0x01010100,0x01020202,
    0x01010102,0x80800000,0x80000080,0x01008080,0x00000001,0x01010101,0x00020101,0x80000001,
    0x81818281,0x81828282,0x00008080,0x01010000,0x02020201,0x01010101,0x01010101,0x00000000,
    0x00000000,0x01010100,0x00010001,0x01000101,0x00000000,0x80808000,0x00808080,0x80000080,
    0x00000000,0x00000000,0x00000000,0x00800000,0x80008080,0x00008000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,
    };
    and the AudioSampleSnare.h is:
    Code:
    // Audio data converted from WAV file by wav2sketch
    
    extern const unsigned int AudioSampleSnare[2817];

  25. #25
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,591
    Quote Originally Posted by joaotragtenberg View Post
    Does anyone know how to make the sample to be played till the end without a hardcoded 128 samples Audio Block?
    Please give this a try. Does it solve the problem?
    Attached Files Attached Files

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •