John Bradnam
Published © GPL3+

Quad Electronic Fuse

Protect your circuits with a powerful and resettable E-Fuse when handling circuits with high current batteries.

IntermediateFull instructions provided11 hours719
Quad Electronic Fuse

Things used in this project

Hardware components

ATmega4809 Curiosity Nano
Microchip ATmega4809 Curiosity Nano
DIL 40 Pin chip + IC socket
×1
High-Side-Switch Shield with PROFET +2 12V BTS700x-1EPP
Infineon High-Side-Switch Shield with PROFET +2 12V BTS700x-1EPP
×1
DC/DC Step-Down Converter
×1
Rotary Encoder with Push-Button
Rotary Encoder with Push-Button
×1
Adafruit 1.8 SPI TFT display, 160x128 18-bit color - ST7735R driver
×1
3mm red/green LED - 3 Wire
×4
Pushbutton Switch, Push-Pull
Pushbutton Switch, Push-Pull
×4

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)
Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Custom parts and enclosures

STL Files

Files for 3D printing

Schematics

Schematic (Front panel)

PCB - (Front panel)

Schematic (CPU board)

PCB (CPU Board)

Eagle Files

CPU and Front Panel boards in Eagle format

Code

ElectronicFuseV2.ino

C/C++
/**
 * @file        ElectronicFuseV2.ino
 * @brief       Code for an electronic fuse application with Infineon BTS7002 high side switch shield.
 * Specs:
 *  - Input voltage: 7-28V DC
 *  - Max. input current: 60A
 *  - Max. output current: 4 x 21A
 *  
 * @copyright   Copyright (c) 2021 Infineon Technologies AG   
 * @version     2.0.1
 * 
 * 2021 - jbrad2089@gmail.com
 *  - Increased channels from 3 to 4
 *  - Changed processor to a ATmega4809
 *  - Changed LCD display to 160x128 color display (ST7735)
 *  - Added a RED/GREEN common anode led to each channel
 *  
 * MIT License
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
  
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  SOFTWARE.

 --------------------------------------------------------------------------
 Arduino IDE:
 --------------------------------------------------------------------------
  Board: ATmega4809
  Clock Speed: Internal 16MHz
  Pinout: 40 pin standard
  Bootloader: No bootloader
  Programmer: JTAG2UPDI
  
  ATmega4809 Pins mapped to Ardunio Pins
                            ________
              PC0   8     1|*       |40  7   PA7 (SS)
              PC1   9     2|        |39  6   PA6 (SCK)
              PC2  10     3|        |38  5   PA5 (MISO)
              PC3  11     4|        |37  4   PA4 (MOSI)
                     VCC  5|        |36  3   PA3 (SCL)
                     GND  6|        |35  2   PA2 (SDA)
              PC4  12     7|        |34  1   PA1 (RXD0)
              PC5  13     8|        |33  0   PA0 (TXD0)
       (AIN0) PD0  14/A0  9|        |32  GND
       (AIN1) PD1  15/A1 10|        |31  VCC
       (AIN2) PD2  16/A2 11|        |30  UPDI
       (AIN3) PD3  17/A3 12|        |29  32     PF6 (RST)
       (AIN4) PD4  18/A4 13|        |28  31/A15 PF5 (AIN15)
       (AIN5) PD5  19/A5 14|        |27  30/A14 PF4 (AIN14)
       (AIN6) PD6  20/A6 15|        |26  29/A13 PF3 (AIN13)
       (AIN7) PD7  21/A7 16|        |25  28/A12 PF2 (AIN12)
                    AVCC 17|        |24  27     PF1
                     GND 18|        |23  26     PF0
       (AIN8) PE0  22/A8 19|        |22  25/A11 PE3 (AIN11)
       (AIN9) PE1  23/A9 20|________|21  24/A10 PE2 (AIN10)

 NOTE: D8 to D13 not used on DIP 40 packages
 */

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>

#define TFT_SCK 6   //PA6
#define TFT_MISO 5  //PA5
#define TFT_MOSI 4  //PA4
#define TFT_CS 7    //PA7
#define TFT_DC 9    //PC1
#define TFT_RST 8   //PC0

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

#define ENC_A 12    //PC4
#define ENC_B 13    //PC5
#define SWITCHES 14 //PD0
#define SW_NONE 99  //0-3 are channel switches, 98 is rotary switch, 99 is no switch pressed
#define SW_ROTARY 98

#define LED_1_G 11  //PC3
#define LED_1_R 15  //PD1
#define LED_2_G 16  //PD2
#define LED_2_R 17  //PD3
#define LED_3_G 18  //PD4
#define LED_3_R 19  //PD5
#define LED_4_G 20  //PD6
#define LED_4_R 21  //PD7
#define SPEAKER 22  //PE0

#define IN1 32       //PF6
#define IN2 0        //PA0
#define IN3 1        //PA1
#define IN4 28       //PF2
#define OLOFF 30     //PF4
#define DEN1_DEN3 29 //PF3
#define DEN2_DEN4 31 //PF5
#define VBAT 25      //PE3 (A11)
#define IS1_IS2 23   //PE1 (A9)
#define IS3_IS4 24   //PE2 (A10)
#define A_VBAT A11   //PE3
#define A_IS1_IS2 A9 //PE1
#define A_IS3_IS4 A10//PE2

#include <hss-board-arduino.hpp>

#include "Infineon.h"
#include "Memory.h"


// --------------- Defines / System settings ----------------------------------------------------------------------------------------------------------

#define RGB565(r, g, b) (((r&0xF8)<<8)|((g&0xFC)<<3)|(b>>3))

#define AMOUNT_MEASUREMENTS             16      // how many measurements are stored in order to calculate a rolling average (Must be a power of two)
#define TRIGGER_DELAY_INTERVAL          50      // [ms] how many milliseconds will td be increased when turning the knob
#define CURRENT_THRESHOLD_INTERVAL      0.2     // [A]  how many Amps will th be increased when turning the knob
#define CURRENT_SUM_THRESHOLD_INTERVAL  0.5     // [A]  how many Amps will the summmarized current threshold be increased when turning the knob
#define DISPLAY_UPDATE_INTERVAL         1000    // [ms] how often will Vbatt and the actual current values be updated on the LCD. Too many refreshes may affect usability of the rotary encoder.
#define MAX_CURRENT_THRESHOLD           21.0    // [A]  the top limit for the current threshold when turning the knob
#define SLASH_SCREEN_TIMEOUT            3000    // Time in mS to display splash screen. Rotary encoder will change CURRENT_SUM_THRESHOLD during this period
#define CURSOR_TIMEOUT                  250     // Speed of flashing cursor
#define ST7735_CURSOR RGB565(128,128,128)       // Background cursor color

//Frequency for different states
#define ALL_TONE 1760
#define OVR_TONE 880

//Y position of each screen lines
#define LINE_1_Y 5
#define LINE_2_Y 25
#define LINE_3_Y 45
#define LINE_4_Y 65
#define LINE_5_Y 85
#define LINE_6_Y 105

enum STATUS_ENUM {CHAN_OFF, CHAN_ON, CHAN_OVR, CHAN_BTS_ERROR, CHAN_UNDERVOLTAGE};  //Status for each of the channels
enum CURSOR_ENUM {NORMAL, TRIGGER, CHAN_1, CHAN_2, CHAN_3, CHAN_4};                 //Menu cursor positions

// --------------- Channel structure ----------------------------------------------------------------------------------------------------------

typedef struct {
  uint8_t hss;
  uint8_t greenPin;
  uint8_t redPin;
  STATUS_ENUM status;
  float curThreshold;
  float curMeasurementAvg;
  float curMeasurement[AMOUNT_MEASUREMENTS];
  float curMeasurementTotal;
  uint8_t curMeasurementHead;
  uint8_t curMeasurementTail;
  uint8_t curMeasurementCount;
  uint8_t lineY;
  uint32_t color;
} CHANNEL;

#define NUM_OF_CHANNELS 4
CHANNEL channel[NUM_OF_CHANNELS] = {
  {1,LED_1_G,LED_1_R,CHAN_OFF,8.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_3_Y,ST7735_RED},
  {2,LED_2_G,LED_2_R,CHAN_OFF,6.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_4_Y,ST7735_YELLOW},
  {3,LED_3_G,LED_3_R,CHAN_OFF,8.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_5_Y,ST7735_GREEN},
  {4,LED_4_G,LED_4_R,CHAN_OFF,5.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_6_Y,ST7735_CYAN}
};

// -----------------------------------------------------------------------------------------------------------------------------------------------------

hardwareconfig_t EFUSE_PINS
{
    .led1 = GPIOIno::unusedPin,     //LED 1
    .led2 = GPIOIno::unusedPin,     //LED 2
    .led3 = GPIOIno::unusedPin,     //LED 3
    .led4 = GPIOIno::unusedPin,     //LED 4

    .in1 = IN1,                     //IN 1
    .in2 = IN2,                     //IN 2
    .in3 = IN3,                     //IN 3
    .in4 = IN4,                     //IN 4

    .oloff = OLOFF,                 //OLOFF

    .den1_den3 = DEN1_DEN3,         //DEN 1_3
    .den2_den4 = DEN2_DEN4,         //DEN 2_4

    .pushButtonDigital = GPIOIno::unusedPin,  //PUSHBUTTONDIGITAL

    .pushButtonAnalog = GPIOIno::unusedPin,   //PUSHBUTTONANALOG
    .vBat =             A_VBAT,     //VBAT
    .is1_is2 =          A_IS1_IS2,  //IS 1_2
    .is3_is4 =          A_IS3_IS4   //IS 3_4
};

// --------------- Global Variables --------------------------------------------------------------------------------------------------------------------
CURSOR_ENUM     menuMode = NORMAL;                              // state the menu
uint32_t        cursorUpdateTimer = 0;                          // counter variable to flash the cusror
bool            cursorOn = false;                               // cursor state
uint32_t        displayUpdateTimer = 0;                         // counter variable to update the LCD information in constant time intervalls
uint32_t        currentMeasurementTimer = 0;                    // counter variable to scan for an overcurrent event with a specific delay
bool            currentExceededFlag = 0;                        // Set to one as soon as current threshold was exceeded
int8_t volatile rotaryDirection = 0;                            // Stores the change in the rotary encoder
bool volatile   lastRotA = false;                               // Used to determine direction of rotary encoder
bool volatile   lastRotB = false;                               // Used to determine direction of rotary encoder
bool            eePromDirty = false;                            // Set true if eeprom needs to be updated
char            buf[80];                                        // Used to format strings

// ---------------- String arrays (for display) ----------------------------------------------------------------------------------------------------------
const String  statusMessages[5] = {"OFF", "ON ", "OVR", "ERR", "UND"};
//------------------------------------------------------------------------------------------------------------------------------------------------------

HssBoardIno         HSS = HssBoardIno(&BTS7002, EFUSE_PINS);        // create an instance of a high-side switch board with custom pin configuration in order to disable the LEDs

/*-----------------------------------------------------------------------------------------
 * HARDWARE SETUP
 ------------------------------------------------------------------------------------------*/

void setup(void) 
{
  // If your TFT's plastic wrap has a Black Tab, use the following:
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  // If your TFT's plastic wrap has a Red Tab, use the following:
  //tft.initR(INITR_REDTAB);   // initialize a ST7735R chip, red tab
  // If your TFT's plastic wrap has a Green Tab, use the following:
  //tft.initR(INITR_GREENTAB); // initialize a ST7735R chip, green tab
  tft.setTextWrap(false);      // Allow text to run off right edge

  //Read in default settings
  readEepromData();           // Get last threshold settings
  for(int i = 0; i < NUM_OF_CHANNELS; i++)
  {
    channel[i].curThreshold = ee.cuThreshold[channel[i].hss];
  }
  
  pinMode(SPEAKER,OUTPUT);
  
  setupButtons();
  setupChannelLeds();
  HSS.init();                 // Initialization of the High-Side-Switch-Board
  
  setupSplashScreen();        // Display status screen and update max current setting

  setupStatusScreen();        // Now display the fixed status values
  updateStatusScreen();       // Show the variable status values
  
}

/*-----------------------------------------------------------------------------------------
 * Main program loop
 ------------------------------------------------------------------------------------------*/

void loop(void) 
{
  checkAllCurrent();  //Measure current on each channel and handle any exceeding threshold

  bool refreshScreen = ((millis() - displayUpdateTimer) > DISPLAY_UPDATE_INTERVAL); // update voltage and current information every second
  
  if (menuMode == NORMAL)
  {
    processNormalMode(&refreshScreen);
  }
  else
  {
    processEditMode(&refreshScreen);
  }

  //Update screen if there are any changes    
  if (refreshScreen)
  {
    updateStatusScreen();
    displayUpdateTimer = millis();
  }
}

//In normal mode, only need to check for push buttons and rotary switch
void processNormalMode(bool* refreshScreen)
{
  CHANNEL* c;

  int switchState = getSwitchState();
  if (switchState < NUM_OF_CHANNELS)
  {
    c = &channel[switchState];
    //Only turn on channel if currently off otherwise turn it off.
    switch (c->status)
    {
      case CHAN_OFF: c->status = CHAN_ON; break;
      default: c->status = CHAN_OFF; break;
    }
    c->curMeasurementAvg = 0.0;
    c->curMeasurementTotal = 0.0;
    c->curMeasurementCount = 0;
    c->curMeasurementHead = 0;
    c->curMeasurementTail = 0;
    setChannelLeds(c);
    *refreshScreen = true;
    noTone(SPEAKER); //Turn off any sounds if a button is pessed
  }
  else if (switchState == SW_ROTARY)
  {
    menuMode = (CURSOR_ENUM)((int)menuMode + 1);
    cursorOn = true;
    cursorUpdateTimer = millis();
    rotaryDirection = 0;  
    *refreshScreen = true;
  }
}

//In edit mode, only check rotary switch to select value and the encoder to change that value
void processEditMode(bool* refreshScreen)
{
  CHANNEL* c;

  //In edit mode the rotary switch will switch between modes
  int switchState = getSwitchState();
  if (switchState == SW_ROTARY)
  {
    menuMode = (menuMode == CHAN_4) ? NORMAL : (CURSOR_ENUM)((int)menuMode + 1);
    rotaryDirection = 0;  
    *refreshScreen = true;

    if (menuMode == NORMAL && eePromDirty)
    {
      //Update eeProm if there were changes to the settings
      writeEepromData();
      eePromDirty = false;
    }
  }

  //Handle Flashing cursor
  if ((millis() - cursorUpdateTimer) > CURSOR_TIMEOUT)
  {
    cursorOn = !cursorOn;
    cursorUpdateTimer = millis();
    *refreshScreen = true;
  }

  //Test for change in value
  if (rotaryDirection != 0)
  {
    //Rotary encoder has been turned
    switch (menuMode)
    {
      case TRIGGER:
        ee.triggerDelay += rotaryDirection * TRIGGER_DELAY_INTERVAL;
        ee.triggerDelay = min(max(ee.triggerDelay, 0),1000-TRIGGER_DELAY_INTERVAL);
        updateTriggerDelay();
        eePromDirty = true;
        break;

      default:
        c = &channel[(int)menuMode - (int)CHAN_1];
        c->curThreshold += rotaryDirection * CURRENT_THRESHOLD_INTERVAL;
        c->curThreshold = min(max(c->curThreshold, 0.2),MAX_CURRENT_THRESHOLD);
        ee.cuThreshold[c->hss] = c->curThreshold;
        updateStatusLine(c, (cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
        eePromDirty = true;
        break;
    }
    rotaryDirection = 0;  
  }
}

/*-----------------------------------------------------------------------------------------
 * MEASURE CURRENT
 ------------------------------------------------------------------------------------------*/

//Measure current on each channel and handle any exceeding threshold
void checkAllCurrent()
{
  CHANNEL* c;
  
  for(int i = 0; i < NUM_OF_CHANNELS; i++)        // measure the current in all high-side switches
  {
    if (checkCurrent(&channel[i]))
    {
      if(!currentExceededFlag)
      {
        currentMeasurementTimer = millis();       // Reset timer
        currentExceededFlag = true;
      }
    }
  }

  if(((millis() - currentMeasurementTimer) > ee.triggerDelay) && currentExceededFlag)
  {
     
    // Check the single outputs for overcurrent
    float currentSum = 0.0;
    for(int i = 0; i < NUM_OF_CHANNELS; i++)        //Check the single outputs for overcurrent
    {
      c = &channel[i];
      if (checkCurrent(c))
      {
        HSS.switchHxOff(c->hss);          // If threshold was exceeded, switch HSS off
        c->status = CHAN_OVR;
        updateStatusLine(c, ST7735_BLACK);
        tone(SPEAKER, OVR_TONE);
      }
      currentSum += c->curMeasurementAvg;
    }
    
    // check if summarized current exceeds limit
    if (currentSum > ee.cuThresholdSum)
    {
      for(int i = 0; i < NUM_OF_CHANNELS; i++)        //Check the single outputs for overcurrent
      {
        c = &channel[i];
        HSS.switchHxOff(c->hss);
        c->status = CHAN_OVR;
        updateStatusLine(c, ST7735_BLACK);
        tone(SPEAKER, ALL_TONE);
      }
    }
    currentExceededFlag = false;
  }
}

//Get the average current and return true if it exceeds the threshold
bool checkCurrent(CHANNEL* c)
{
  if (c->status == CHAN_ON)
  {
    float readAmps = HSS.readIsx(c->hss);
    if (c->curMeasurementCount == AMOUNT_MEASUREMENTS)
    {
      //Remove oldest value from running total
      c->curMeasurementTotal = c->curMeasurementTotal - c->curMeasurement[c->curMeasurementTail];
      c->curMeasurementTail = (c->curMeasurementTail + 1) & (AMOUNT_MEASUREMENTS - 1);
      c->curMeasurementCount--;
    }
    //Add new value to running total
    c->curMeasurement[c->curMeasurementHead] = readAmps;
    c->curMeasurementHead = (c->curMeasurementHead + 1) & (AMOUNT_MEASUREMENTS - 1);
    c->curMeasurementTotal = c->curMeasurementTotal + readAmps;
    c->curMeasurementCount++;
    c->curMeasurementAvg = c->curMeasurementTotal / c->curMeasurementCount;
    
    if (c->curMeasurementAvg > c->curThreshold)
    {
      return true;
    }
  }
  return false;
}

/*-----------------------------------------------------------------------------------------
 * SPLASH SCREEN
 ------------------------------------------------------------------------------------------*/

//Show Infinion logo
void setupSplashScreen()
{
  tft.fillScreen(ST7735_WHITE);
  tft.setRotation(3);
  tft.drawRGBBitmap(0,5,ImageBits,ImageWidth,ImageHeight);

  tft.setTextColor(ST7735_BLACK);
  tft.setTextSize(2);
  drawCentreString("PROFET+2", 80, 85);
  tft.setTextSize(1);
  tft.setCursor(25, 110);
  tft.println("Max Current:");

  //Handle the setting of the maximum current
  bool first = true;
  unsigned long timeout = 0;
  while (first || millis() < timeout)
  {
    if (first || rotaryDirection != 0)
    {
      //Rotary encoder has been turned
      ee.cuThresholdSum += rotaryDirection * CURRENT_SUM_THRESHOLD_INTERVAL;
      ee.cuThresholdSum = min(max(ee.cuThresholdSum, 1.0),99.9);
      rotaryDirection = 0;  

      //Display the change
      dtostrf(ee.cuThresholdSum, 2, 1, buf);
      strcat(buf,"A ");
      tft.setTextColor(ST7735_MAGENTA, ST7735_WHITE);
      tft.setCursor(100, 110);
      tft.println(buf);
      
      //Restart timeout again
      timeout = millis() + SLASH_SCREEN_TIMEOUT;
      first = false;
    }
    yield();
  }
  writeEepromData();    //Write back any changes
}

//Draw a centred string
void drawCentreString(const char *buf, int x, int y)
{
    int16_t x1, y1;
    uint16_t w, h;
    tft.getTextBounds(buf, x, y, &x1, &y1, &w, &h); //calc width of new string
    tft.setCursor(x - w / 2, y);
    tft.print(buf);
}

/*-----------------------------------------------------------------------------------------
 * STATUS SCREEN
 ------------------------------------------------------------------------------------------*/

#define CHANNEL_X 5
#define STATE_X 30
#define BATTERY_X 38
#define CURRENT_X 72
#define THRESHOLD_X 119
#define TD_X 100
#define TIME_X 122

//Setup the static text
void setupStatusScreen()
{
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(3);
  tft.drawRect(0, 0, 160, 16, ST7735_WHITE);
  tft.drawRect(0, 20, 160, 108, ST7735_WHITE);
  tft.setTextSize(1);
  
  tft.setTextColor(ST7735_WHITE);
  tft.setCursor(CHANNEL_X, LINE_1_Y);
  tft.println("Batt:");
  tft.setCursor(TD_X, LINE_1_Y);
  tft.println("TD:");

  tft.setTextColor(ST7735_WHITE);
  tft.setCursor(CHANNEL_X, LINE_2_Y);
  tft.println("#");
  tft.setCursor(STATE_X, LINE_2_Y);
  tft.println("State");
  tft.setCursor(CURRENT_X, LINE_2_Y);
  tft.println("Flow");
  tft.setCursor(THRESHOLD_X, LINE_2_Y);
  tft.println("Trig");

  tft.setTextColor(ST7735_RED);
  tft.setCursor(CHANNEL_X, LINE_3_Y);
  tft.println("1.");

  tft.setTextColor(ST7735_YELLOW);
  tft.setCursor(CHANNEL_X, LINE_4_Y);
  tft.println("2.");

  tft.setTextColor(ST7735_GREEN);
  tft.setCursor(CHANNEL_X, LINE_5_Y);
  tft.println("3.");

  tft.setTextColor(ST7735_CYAN);
  tft.setCursor(CHANNEL_X, LINE_6_Y);
  tft.println("4.");
}


//update the dynamic text
void updateStatusScreen()
{
  updateBatteryVoltage();
  updateTriggerDelay();
  updateStatusLine(&channel[0],(menuMode == CHAN_1 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
  updateStatusLine(&channel[1],(menuMode == CHAN_2 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
  updateStatusLine(&channel[2],(menuMode == CHAN_3 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
  updateStatusLine(&channel[3],(menuMode == CHAN_4 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
}

//update the battery voltage
void updateBatteryVoltage()
{
  tft.setTextColor(ST7735_MAGENTA, ST7735_BLACK);
  tft.setCursor(BATTERY_X, LINE_1_Y);
  dtostrf(HSS.readVss(), 2, 1, buf);
  strcat(buf,"V");
  spadr(buf,5);
  tft.println(buf);
}

//update the trigger delay
void updateTriggerDelay()
{
  tft.setTextColor(ST7735_MAGENTA, (menuMode == TRIGGER && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
  tft.setCursor(TIME_X, LINE_1_Y);
  sprintf(buf,"%dmS",ee.triggerDelay);
  spadr(buf,5);
  tft.println(buf);
}

//update a status line
void updateStatusLine(CHANNEL* c, uint32_t bkgndColor)
{
  tft.setTextColor(c->color, ST7735_BLACK);
  tft.setCursor(STATE_X, c->lineY);
  tft.println(statusMessages[(int)c->status]);
  
  tft.setCursor(CURRENT_X, c->lineY);
  dtostrf(c->curMeasurementAvg, 2, 1, buf);
  strcat(buf,"A");
  spadr(buf,5);
  tft.print(buf);
  
  tft.setTextColor(c->color, bkgndColor);
  tft.setCursor(THRESHOLD_X, c->lineY);
  dtostrf(c->curThreshold, 2, 1, buf);
  strcat(buf,"A");
  spadr(buf,5);
  tft.print(buf);
}

//Pad string right with spaces
// - p pointer to start of string
// - l length of final string
void spadr(char* p, int l)
{
  int k = strlen(p);
  int i = k;
  for(; i < l; i++)
  {
    p[i] = ' ';
  }
  p[i] = '\0';
}

/*-----------------------------------------------------------------------------------------
 * BUTTONS & ROTARY ENCODER
 ------------------------------------------------------------------------------------------*/

void setupButtons()
{
  analogReference(VDD);
  pinMode(SWITCHES,INPUT);
  pinMode(ENC_A,INPUT);
  pinMode(ENC_B,INPUT);
  attachInterrupt(ENC_A, rotaryInterrupt, CHANGE);
}

// Interrupt Handler: Rotary encoder has moved
void rotaryInterrupt()
{

  bool a = (digitalRead(ENC_A) == LOW);
  bool b = (digitalRead(ENC_B) == LOW);
  if (a != lastRotA) 
  {
    lastRotA = a;
    if (b != lastRotB) 
    {
      lastRotB = b;
      if (b)
      {
        rotaryDirection = (a == b) ? -1 : 1;
      }
    }
  }
}

//Get state of switch, debounce and wait for release
// returns: 0-3 for channel switches, 98 for rotary switch, 99 when no switch pressed
int getSwitchState()
{
  int result = SW_NONE;
  int value = analogRead(SWITCHES);
  if (value < 1000)
  {
    delay(10);  //debounce
    value = analogRead(SWITCHES);
    
    if (value >= 750 && value < 900)
    {
      result = 3;
    }
    else if (value >= 600 && value < 750)
    {
      result = 2;
    }
    else if (value >= 400 && value < 600)
    {
      result = 1;
    }
    else if (value >= 200 && value < 400)
    {
      result = 0;
    }
    else if (value < 100)
    {
      result = SW_ROTARY;
    }
    //Wait for release
    while (analogRead(SWITCHES) < 1000)
    {
      yield();
    }
  }
  return result;
}

/*-----------------------------------------------------------------------------------------
 * CHANNEL LEDS
 ------------------------------------------------------------------------------------------*/

void setupChannelLeds()
{
  for (int i = 0; i < NUM_OF_CHANNELS; i++)
  {
    pinMode(channel[i].greenPin,OUTPUT);
    pinMode(channel[i].redPin,OUTPUT);
    setChannelLeds(&channel[i]);
  }
}

//Set the LEDs to match the channel's status - OFF: no leds, ON: green, OVR: red
void setChannelLeds(CHANNEL* c)
{
  switch (c->status)
  {
    case CHAN_OFF: digitalWrite(c->greenPin,HIGH); digitalWrite(c->redPin,HIGH); break;
    case CHAN_ON: digitalWrite(c->greenPin,LOW); digitalWrite(c->redPin,HIGH); break;
    default: digitalWrite(c->greenPin,HIGH); digitalWrite(c->redPin,LOW); break;
  }
}

Infineon.h

C/C++
#pragma once
#define ImageWidth 160
#define ImageHeight 71
static const unsigned int ImageBits[] PROGMEM = {
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBF,
  0xFF7D, 0xFF5D, 0xFF1C, 0xFF1C, 0xFEDB, 0xFEDB, 0xFE9A, 0xFE9B,
  0xFE9A, 0xFE7A, 0xFE79, 0xFE7A, 0xFE7A, 0xFE9A, 0xFEBB, 0xFF1C,
  0xFF3C, 0xFF7E, 0xFF9E, 0xFFDF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBE, 0xFF9E, 0xFF5D,
  0xFEBB, 0xF5F8, 0xFD35, 0xF411, 0xF2AD, 0xE989, 0xF16A, 0xE949,
  0xF129, 0xE8E8, 0xF16A, 0xF24B, 0xF30E, 0xF36F, 0xF3F1, 0xF4F4,
  0xFDD7, 0xFE59, 0xFEFC, 0xFF5D, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFF7D, 0xFE7A, 0xF515, 0xF34F, 0xEAAC, 0xF24B, 0xE9A9, 0xF108,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE969, 0xF1EA, 0xEA4B, 0xF452,
  0xF5B7, 0xFEDB, 0xFF9E, 0xFFDF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFDF, 0xFEBB, 0xFD76, 0xF432, 0xF34F, 0xE9CA,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF109, 0xF411, 0xFDB7, 0xFEDB, 0xFF5E, 0xFFBF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E, 0xFE9A,
  0xF555, 0xF3D0, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xEB2E, 0xF515, 0xF618, 0xFF1C,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFDF, 0xFF3D, 0xFDF8, 0xF34E, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF30E, 0xF472, 0xFE39, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF,
  0xFF1C, 0xF4B3, 0xEA2B, 0xF149, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE969, 0xF28C, 0xF515, 0xFF5D,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF,
  0xB5FB, 0x7498, 0x7498, 0x9539, 0xF79F, 0xFFFF, 0xFFBF, 0xF30E,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8E8, 0xF26C, 0xF5B7, 0xFF7E, 0xFFDF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5E, 0x5C18,
  0x0336, 0x0356, 0x0336, 0x0357, 0x2376, 0xCE9C, 0xFFFF, 0xFDD8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF2EE,
  0xF5B7, 0xFF3D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7C99, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x3397, 0xF79F, 0xFFFF,
  0xF1CA, 0xE8C8, 0xF0C8, 0xE8C8, 0xF2CD, 0xF514, 0xFF1C, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73E, 0x0336, 0x0356,
  0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0xADFB, 0xFFFF,
  0xF4D4, 0xF1CA, 0xF3D0, 0xFEFC, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE3B, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x7C99, 0xFFFF,
  0xFF3D, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFEBB, 0xF4D4, 0xFFFF, 0xC67C, 0x0336, 0x0357,
  0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356, 0x84D9, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFF5D, 0xF472, 0xF0C8, 0xF24B, 0xFFDF, 0xF79F, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0xD6BD, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFDF8,
  0xE969, 0xF0C8, 0xE8C8, 0xF0C8, 0xFE59, 0xFFFF, 0xA59A, 0x0356,
  0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x6438, 0xF7DF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xDEFD, 0x84D9, 0x1356, 0x1356, 0x5C17, 0xB61B, 0xEF9E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF5D, 0xF32E, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF28C, 0xFF9E, 0xFFFF, 0x9D7A,
  0x3397, 0x0336, 0x0357, 0x1B56, 0x7479, 0xF7BF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA5BA,
  0x1B57, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x43D7, 0xFFDF,
  0xFFFF, 0xFFFF, 0xCE9D, 0x84D9, 0xA5BB, 0xF7BF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF5D7, 0xF1CA, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF3B0, 0xFFBE, 0xFFFF,
  0xEF7E, 0xD6DD, 0xCE9C, 0xEF5E, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357,
  0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356, 0x9D5A, 0xFFFF,
  0xFFFF, 0xA59A, 0x0336, 0x0357, 0x0336, 0x53F7, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xF4B3, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF129, 0xFE18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7478, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0B56, 0xEF5E, 0xFFFF,
  0xF79F, 0x1B56, 0x0357, 0x0336, 0x0357, 0x0336, 0xC65C, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFF9E, 0xEB4E, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF3D0, 0xFF3D, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0x0336, 0x0356,
  0x0336, 0x0357, 0x9539, 0xFFFF, 0xFFDF, 0xCEBD, 0xFFDF, 0xFFFF,
  0xEF5E, 0x1B57, 0x0336, 0x0356, 0x0336, 0x0357, 0xADDA, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFF7E, 0xF26C, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE929, 0xFCF5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFDF, 0xFFDF, 0xF79F, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336,
  0x0357, 0x2377, 0xEF7E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x1B56, 0xEF7F, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E,
  0xEA4B, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE969, 0xFE7A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x6C58, 0x53F7, 0x3B97, 0x1357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE3B, 0x0336, 0x0357,
  0x0336, 0x3397, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF79F, 0x6437, 0x2B77, 0x3396, 0xCEBD, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E, 0xF24B,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xF1EA,
  0xFF1C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB61B, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xEAAC, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xEA2B, 0xFF1C,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE3C, 0x0336, 0x0356,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF411, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xF1EA, 0xFF3D, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xFFDF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFDF, 0xF7BF, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC65C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xF7BF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xEF7F, 0xEF5E, 0xF79F, 0xFFDF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xEF7E, 0xEF5E,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFDF, 0xF79F, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF596, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE908, 0xFEDB, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0xADDA, 0x5C18, 0x3396, 0xB61B, 0xFFFF, 0xFFDF,
  0xADDA, 0x4BD7, 0x3396, 0x3BB7, 0x4BD7, 0xCE9C, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7CB8, 0x53F7, 0x0336, 0x0357,
  0x0336, 0x1356, 0x6458, 0x7478, 0x6C78, 0x7CB9, 0xF7BF, 0xFFFF,
  0xFFFF, 0xE73E, 0x7CB8, 0x5C18, 0x43D7, 0x6C58, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xE73E, 0x9D7A, 0x53F7, 0x2B76, 0xE73E,
  0xFFFF, 0xF7BF, 0x9559, 0x4BD7, 0x3396, 0x3BB7, 0x5417, 0xDF1E,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x6458, 0x3397, 0x0B36, 0x1B57, 0x2B76, 0x53F7,
  0xD6DC, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xDF1E, 0x5417, 0x3397, 0x0B36, 0x1357,
  0x3376, 0x6438, 0xDF1D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xD6DD, 0x953A, 0x4BD7, 0x3B97, 0xF7BF, 0xFFFF,
  0xE75E, 0x8CF9, 0x43B7, 0x3397, 0x3B96, 0x6C78, 0xEF5E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFF1C, 0xF149, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8E8, 0xFE18, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0x8D19, 0x0357, 0x0336, 0x0357, 0x8D19, 0xE73E, 0x53F7,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0xB5FB, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4BD7, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x53F7, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x4BD7, 0x0357, 0x0336, 0x0357, 0xB5FB,
  0xC67C, 0x3BB7, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x1B56,
  0xD6BD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xD6DD, 0x2B76, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0xB5FB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xBE3C, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x1357, 0xBE3B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF7BF, 0x43B7, 0x0336, 0x0357, 0x0336, 0xDEFD, 0xADDB,
  0x3397, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x3B97, 0xEF5E,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xF3B0, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF3B0, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xC65C, 0x0336, 0x0356, 0x0336, 0x43D7, 0x1356, 0x0356,
  0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x2B76, 0xFFDF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0357, 0x0336, 0x0356,
  0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x84D9, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x7CB8, 0x0336, 0x0357, 0x0336, 0x53F7,
  0x1B56, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
  0x5C17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73E,
  0x0B36, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
  0x0336, 0x0357, 0xCE9C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
  0x0336, 0x0357, 0x0336, 0x0356, 0xCE9C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x53F7, 0x0356, 0x0336, 0x0357, 0x6437, 0x1356,
  0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x7498,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFEBB, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF1AA, 0xFF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xDEFD, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0xCE9C,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4BD8, 0x1356, 0x0357, 0x0336,
  0x0357, 0x0336, 0x1B57, 0x1B56, 0x1357, 0xC65C, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xA5BA, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x1B57, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7CB8,
  0x0357, 0x0336, 0x0357, 0x53F7, 0xBE1C, 0xBE3C, 0x7C99, 0x0336,
  0x0357, 0x0336, 0x5C18, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0x53F7, 0x0357, 0x0336, 0x0357, 0x1B56, 0x84F9, 0x7CB8,
  0x0357, 0x0336, 0x0357, 0x0336, 0x53F8, 0xFFDF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x6C78, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x43B7,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xEAED, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xF452, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x0B36, 0x0357, 0x0336, 0x0356, 0x0336, 0x6438,
  0xD6FD, 0xFFDF, 0xB61B, 0x1357, 0x0336, 0x0356, 0x0336, 0xADDB,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xC65C, 0x0336, 0x0357,
  0x0336, 0x3397, 0xEF7E, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xC65C, 0x0336, 0x0356, 0x0336, 0x0357,
  0x0336, 0x7CD9, 0xE75E, 0xF7BF, 0x8D19, 0x0356, 0x0336, 0x0357,
  0x0336, 0xDF1E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1D, 0x0357,
  0x0336, 0x0356, 0x2376, 0xEF7F, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438,
  0x0336, 0x0356, 0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xBE5B, 0x0356, 0x0336, 0x0357, 0x2356, 0xDF1E, 0xFFFF, 0xFFFF,
  0xD6DD, 0x1B57, 0x0336, 0x0357, 0x0336, 0xBE1B, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x8D19, 0x0357, 0x0336, 0x0356, 0x0336, 0x1B57,
  0x9539, 0xF79F, 0xEF7E, 0x7478, 0x0336, 0x0356, 0x0336, 0x2377,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFF5D, 0xF149, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xFF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x1B57, 0x0336, 0x0357, 0x0336, 0x8CF9, 0xFFDF,
  0xFFFF, 0xFFFF, 0xFFDF, 0x4BD7, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCE7C, 0x0357, 0x0336, 0x0357, 0x0336,
  0xBE1B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3397, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8D1A, 0x0336,
  0x0357, 0x0336, 0x84D9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE1B,
  0x0357, 0x0336, 0x0357, 0x7CB9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x6C58, 0x0336, 0x0357, 0x0336, 0x7CD9, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0x6C58, 0x0357, 0x0336, 0x0357, 0x5417, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59B, 0x0336, 0x0357, 0x0336, 0x1B57, 0xCEBD,
  0xFFFF, 0xFFFF, 0xFFFF, 0xEF5E, 0x0357, 0x0336, 0x0357, 0x1356,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFD35, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF36F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xF7DF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x53F7, 0x0336, 0x0357, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x53F7,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x53F7, 0x0336, 0x0356,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0356,
  0x0336, 0x0357, 0xC67C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE75E,
  0x0336, 0x0357, 0x0336, 0x43D7, 0xFFDF, 0xFFFF, 0xFFFF, 0xF7BF,
  0x3B97, 0x0357, 0x0336, 0x0356, 0xD6BD, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xC67C, 0x0336, 0x0356, 0x0336, 0x3397, 0xEF9E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x5C17, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x1356, 0x0357, 0x0336, 0x0356,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF20B, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xF515, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336,
  0x0357, 0x0336, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF,
  0x0357, 0x0336, 0x0357, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xDF1D,
  0x0357, 0x0336, 0x0357, 0x0336, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x0357, 0x0336, 0x0357, 0x0336, 0xE73E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFF5D, 0xF129, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xFDF8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0x0336, 0x0357,
  0x0336, 0x0356, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x0336, 0x0356, 0x0336, 0x2B77, 0xEF7E, 0xFFFF, 0xFFFF, 0xC65C,
  0x0336, 0x0356, 0x0336, 0x43B7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x0336, 0x0357, 0x0336, 0x0356, 0xBE5B, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFEFC, 0xE8E8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xFE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1D, 0x0357, 0x0336,
  0x0357, 0x0336, 0x7479, 0x7498, 0x7499, 0x7498, 0x7C99, 0x7478,
  0x0357, 0x0336, 0x0357, 0x2377, 0xEF7F, 0xFFFF, 0xFFFF, 0x9D7A,
  0x0357, 0x0336, 0x0357, 0x53F7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x3B97, 0x0336, 0x0357, 0x0336, 0xADDB, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFE9A, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xFE7A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0357, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x5417,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0356,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFD, 0x0336, 0x0356,
  0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
  0x0336, 0x0357, 0x0336, 0x2377, 0xE75E, 0xFFFF, 0xFFFF, 0x8D19,
  0x0336, 0x0357, 0x0336, 0x5417, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x3B96, 0x0356, 0x0336, 0x0357, 0x9559, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0357, 0x0336, 0x0356,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFE9A, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xFDD8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x0B56, 0xEF5E, 0xFFFF, 0xFFFF, 0x7CB8,
  0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x43D7, 0x0336, 0x0357, 0x0336, 0x8D19, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFE9A, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF515, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6DD, 0x0336, 0x0357,
  0x0336, 0x0356, 0x6437, 0x6C58, 0x6437, 0x6458, 0x6438, 0x6C58,
  0x6437, 0x6458, 0x6438, 0x6C58, 0xE75E, 0xFFFF, 0xFFFF, 0x8D19,
  0x0336, 0x0356, 0x0336, 0x5C18, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x3B97, 0x0357, 0x0336, 0x0356, 0x9539, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFEDB, 0xE8E8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xF3B0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1D, 0x0357, 0x0336,
  0x0357, 0x0336, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D5A,
  0x0357, 0x0336, 0x0357, 0x53F7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x3397, 0x0336, 0x0357, 0x0336, 0xA59B, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFF3D, 0xF129, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xFFBE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0357, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x5417,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0356,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0x0336, 0x0356,
  0x0336, 0x0357, 0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE1B,
  0x0336, 0x0357, 0x0336, 0x43D7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0x0336, 0x0356, 0x0336, 0x0357, 0xBE3B, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0357, 0x0336, 0x0356,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFDF, 0xE949, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xFD97, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3BB7, 0x0336,
  0x0357, 0x0336, 0xE71E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6DD,
  0x0357, 0x0336, 0x0357, 0x1B56, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x0357, 0x0336, 0x0357, 0x0336, 0xDF1E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF472, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xEB0D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357,
  0x0336, 0x0356, 0xADBA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F,
  0x2356, 0x0356, 0x0336, 0x0357, 0xDF1D, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x2B77, 0xEF9E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFEDB, 0xF109, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xFE9A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8CF9, 0x0336,
  0x0357, 0x0336, 0x43B7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF7BF, 0xDEFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF,
  0x53F8, 0x0336, 0x0357, 0x0336, 0x9D5A, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0x7CB8, 0x0357, 0x0336, 0x0357, 0x4BF7, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFDF, 0xEA6C, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF28C, 0xFFBE, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0357, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x5417,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0356,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6FD, 0x0356,
  0x0336, 0x0357, 0x0336, 0x9D7A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xEF5E, 0x6438, 0x5C17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x8D19, 0x0357, 0x0336, 0x0356, 0x3396, 0xF79F, 0xFFFF, 0xFFFF,
  0xEF7E, 0x3397, 0x0336, 0x0356, 0x0336, 0xA59A, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0357, 0x0336, 0x0356,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFDF8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xFD56, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6C78,
  0x0357, 0x0336, 0x0357, 0x0336, 0x7499, 0xADDB, 0xB5FB, 0x84F9,
  0x3397, 0x0336, 0x0357, 0xC65C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xF77F, 0x0336, 0x0357, 0x0336, 0x0357, 0x5C18, 0xC65C, 0xBE3B,
  0x5C18, 0x0336, 0x0357, 0x0336, 0x3397, 0xF79F, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFDF, 0xF30E, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xFEDB, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
  0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
  0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1E,
  0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357,
  0x0336, 0x0356, 0x0336, 0x53F8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0x953A, 0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357,
  0x0336, 0x0356, 0x0336, 0x0357, 0xA59A, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFE9A, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE9EA, 0xFF7E, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
  0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
  0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xC67C, 0x0B56, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x6438, 0xEF7E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF7BF, 0x6438, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
  0x0357, 0x0336, 0x0357, 0x7CB9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
  0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF515, 0xF0C8, 0xE8C8, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xEB0D, 0xFFBF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0x4BD7, 0x3BB7, 0x3B96, 0x3397, 0xBE3B, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xF79F, 0x43B7, 0x3BB7, 0x3B97, 0x4BD7, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0x6C78, 0x3B97, 0x3BB7, 0x3396, 0xA59A,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE7C, 0x3376, 0x3BB7,
  0x3B97, 0x4BD7, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xCEBD, 0x3B96, 0x3BB7, 0x3B97, 0x6C58, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x3B97, 0x43B7, 0x3B96, 0x6C58,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6C78, 0x3B96, 0x3BB7,
  0x3396, 0xDEDD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xDEFD, 0x4BF7, 0x1B57, 0x0336, 0x0357, 0x0336, 0x0356,
  0x3B97, 0x9D7A, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xF7BF, 0x7CB9, 0x2356, 0x0357, 0x0336, 0x0356,
  0x0336, 0x3397, 0x9559, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xADBA, 0x3BB7, 0x3B97, 0x43B7, 0x6C78, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x53F7, 0x3BB7, 0x3B96, 0x3BB7,
  0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF34F, 0xF0C8, 0xE8C8,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xF34F,
  0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xF7BF, 0xF79F, 0xF7BF, 0xF79F, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFBF, 0xF7BF, 0xFFBF, 0xF7BF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xF7BF, 0xF79F, 0xF7BF, 0xF7BF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xF79F,
  0xF7BF, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFDF, 0xF7BF, 0xF79F, 0xF7BF, 0xF7BF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBF, 0xF7BF, 0xFFBF, 0xF7BF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xF7BF, 0xF79F,
  0xF7BF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFDF, 0xE73E, 0xC65C, 0xADBB, 0xBE1B, 0xDEFD,
  0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7F, 0xC65C, 0xA59A, 0xA5BA,
  0xCE9D, 0xEF7F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xFFBF, 0xF7BF, 0xFFDF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xF79F, 0xF7BF, 0xF79F,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF9E, 0xEA4B, 0xF0C8,
  0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
  0xEB2E, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xF5F8, 0xFFDF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E, 0xF26C,
  0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
  0xF0C8, 0xEA4B, 0xFF1D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
...

This file has been truncated, please download it to see its full contents.

Memory.h

C/C++
/**
 * EEPROM support
 * John Bradnam (jbrad2089@gmail.com)
 * 
 * 2021-11-15 - Updated for Electronic Fuse
 *
*/

#pragma once

//Uncomment to reset EEPROM data
//#define RESET_EEPROM

#ifdef __AVR_ATtiny1614__
#include <avr/eeprom.h>
#else
#include <EEPROM.h>
#endif

//EEPROM handling
#define EEPROM_ADDRESS 0
#define EEPROM_MAGIC 0x0DAD0BAD
typedef struct {
  uint32_t magic;
  int triggerDelay;     // Time in milliseconds, after which the HSS switches off after an overcurrent event.
  float cuThresholdSum; // [A] this should be the maximum current which can be delivered by your power supply
  float cuThreshold[5]; // Stores the threshold values, at which the HSS switches off (configurable via the LCD)
} EEPROM_DATA;

volatile EEPROM_DATA ee;       //Current EEPROM settings

//-----------------------------------------------------------------------------------
// Forward references

void writeEepromData();
void readEepromData();

//---------------------------------------------------------------
//Write the EepromData structure to EEPROM
void writeEepromData()
{
  //This function uses EEPROM.update() to perform the write, so does not rewrites the value if it didn't change.
  #ifdef __AVR_ATtiny1614__
    eeprom_update_block (( void *) &ee , ( const void *) EEPROM_ADDRESS, sizeof(ee));  
  #else
    EEPROM.put(EEPROM_ADDRESS,ee);
  #endif
}

//---------------------------------------------------------------
//Read the EepromData structure from EEPROM, initialise if necessary
void readEepromData()
{
  //Eprom
  #ifdef __AVR_ATtiny1614__
    eeprom_read_block (( void *) &ee , ( const void *) EEPROM_ADDRESS, sizeof(ee));  
  #else
    EEPROM.get(EEPROM_ADDRESS,ee);
  #endif
  #ifndef RESET_EEPROM
  if (ee.magic != EEPROM_MAGIC)
  #endif
  {
    ee.magic = EEPROM_MAGIC;
    ee.triggerDelay = 100;
    ee.cuThresholdSum = 20.0;
    ee.cuThreshold[0] = 0.0;
    ee.cuThreshold[1] = 1.0;
    ee.cuThreshold[2] = 1.0;
    ee.cuThreshold[3] = 1.0;
    ee.cuThreshold[4] = 1.0;
    writeEepromData();
  }
}

high-side-switch-master.zip

Arduino
Infineon High Side Library
No preview (download only).

Credits

John Bradnam

John Bradnam

141 projects • 167 followers
Thanks to Infineon Team.

Comments