diff --git a/README.md b/README.md index 4d7a685..0f6cef6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ access shared data in a manner which ensures data integrity. watchdog: How to access the simpler of the Pyboard's watchdog timers. +reverse: Fast reverse a bytearray. + +font: Convert a C file produced by GLCD Font Creator to Python for storage as persistent byte code. + ds3231_pb: Driver for the DS3231 low cost precison RTC, including a facility to calibrate the Pyboard's RTC from the DS3231 diff --git a/font/CfontToPython.py b/font/CfontToPython.py new file mode 100644 index 0000000..1b1b76a --- /dev/null +++ b/font/CfontToPython.py @@ -0,0 +1,103 @@ +#! /usr/bin/python3 + +# Convert a font C source file to Python source. + +# Copyright Peter Hinch 2016 +# Released under the MIT licence +# Files created by GLCD Font Creator http://www.mikroe.com/glcd-font-creator/ +# The code attempts two ways of deducing font height and width in pixels. +# Files produced by the GLCD Font Creator have a '//GLCD FontSize' comment line which species these. +# This is used if it exists. However some files on the website lack this and have an initial record +# written into the data: this is used if necessary. + +# Usage: +# ./CfontToPython -i Arial16x16.c -o arial16x16.py +import argparse +chars_processed = 0 +horiz, vert = 0, 0 + +def process(infile, outfile, sourcefile): + global chars_processed, horiz, vert + phase = 0 + header_done = False + for line in infile: + if phase == 0: + start = line.find('//GLCD FontSize') + if start >= 0: # Found the font size: parse line + start = line.find(':') + line = line[start +1:] + operator = line.find('x') + if operator > 0 : + horiz = int(line[ : operator]) + vert = int(line[operator +1 :]) + print('Header found') + outfile.write('# Code generated by CfontToPython.py\n') + outfile.write('import pyfont\n') + outfile.write("_font = b'") + header_done = True + phase = 1 + elif line.find('{') >= 0: + phase = 1 + if phase == 1: # Skip to 1st data after '{' + start = line.find('{') + if start >= 0: + line = line[start +1:] + phase = 2 + if phase == 2: + if not (line == '' or line.isspace()): + comment = line.find('//') + if comment > 0 : + line = line[:comment] + hexnums = line.split(',') + if header_done: # Ignore manually entered header data + if len(hexnums) > 5: + phase = 3 # Real font data will have many more fields per line + else: + if len(hexnums) <= 5: + nums = [x for x in hexnums if not x.isspace()] + h = nums[1] + v = nums[2] + horiz, vert = int(h, 16), int(v, 16) + print('Header found') + outfile.write('import pyfont\n') + outfile.write("_font = b'") + header_done = True + else: + break # No header data + if phase == 3: # Process data until '}' + end = line.find('}') + if end > 0 : + line = line[:end] + phase = 4 + comment = line.find('//') + if comment > 0 : + line = line[:comment] + hexnums = line.split(',') + if hexnums[0] != '': + for hexnum in [x for x in hexnums if not x.isspace()]: + outfile.write('\\') + outfile.write(hexnum.strip()[1:5]) + chars_processed += 1 + outfile.write("\\\n") + if phase == 4 : + outfile.write("'\n") + outfile.write('font = pyfont.PyFont(_font, {}, {}, {})'.format(vert, horiz, chars_processed)) + outfile.write('\n\n') + print("Characters in font = ", chars_processed) + else: + print(''.join(("File: '", sourcefile, "' is not a valid C font file"))) + +def load_c(sourcefile, destfile): + try: + with open(sourcefile, 'r') as f: + with open(destfile, 'w') as outfile: + process(f, outfile, sourcefile) + except OSError as err: + print(err) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(__file__, description="Convert C font generated by GLCD font creator to Python.\nSample usage:\n ./CfontToPython -i Arial16x16.c -o arial16x16.py") + parser.add_argument("--outfile", "-o", help="Path and name of output file", required=True) + parser.add_argument("--infile", "-i", help="Path and name of C font file", required=True) + args = parser.parse_args() + load_c(args.infile, args.outfile) diff --git a/font/README.md b/font/README.md new file mode 100644 index 0000000..eee1b7c --- /dev/null +++ b/font/README.md @@ -0,0 +1,29 @@ +# Fonts + +This code sample demonstrates a way to get from a system font or other font file to Python code +which may be used normally or stored as frozen bytecode. The latter enables major savings in +scarce RAM. + +Alas this process uses a closed source Windows program. It is available +[here](http://www.mikroe.com/glcd-font-creator/) but it is free (as in beer) and it will run +under Wine. + +To convert a system font to Python follow these steps. +Start the Font Creator. Select File - New Font - Import an Existing System Font and select a font. +Accept the defaults. Assuming you have no desire to modify it click on the button "Export for GLCD". +Select the microC tab and press Save, following the usual file creation routine. + +On a PC with Python 3 installed issue (to convert a file Ubuntu_Medium17x19.c to Python ubuntu.py) +``` +python3 CfontToPython.py -i Ubuntu_Medium17x19.c -o ubuntu.py``` +To test issue +```python +import ubuntu +ubuntu.font.test('ghi') +``` + +The machine generated Python file can be run under cPython, copied to the Pyboard and run, or +copied to the scripts directory and used to build firmware with the file as a frozen module. + +This assumes Linux but CfontToBinary.py is plain Python3 and should run on other platforms. + diff --git a/font/Ubuntu_Medium17x19.c b/font/Ubuntu_Medium17x19.c new file mode 100644 index 0000000..fa9574f --- /dev/null +++ b/font/Ubuntu_Medium17x19.c @@ -0,0 +1,110 @@ + +//WARNING: This Font Require X-GLCD Lib. +// You can not use it with MikroE GLCD Lib. + +//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 +//MikroElektronika 2011 +//http://www.mikroe.com + +//GLCD FontName : Ubuntu_Medium17x19 +//GLCD FontSize : 17 x 19 + +const unsigned short Ubuntu_Medium17x19[] = { + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x6F, 0x00, 0xFC, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " + 0x0C, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x6C, 0x00, 0x60, 0x7F, 0x00, 0xF0, 0x1F, 0x00, 0xFC, 0x0D, 0x00, 0x6C, 0x6C, 0x00, 0x60, 0x7F, 0x00, 0xF0, 0x1F, 0x00, 0xFC, 0x0D, 0x00, 0x6C, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char # + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x30, 0x00, 0xF0, 0x71, 0x00, 0x98, 0x61, 0x00, 0x1E, 0xE3, 0x01, 0x1E, 0xE3, 0x01, 0x18, 0x67, 0x00, 0x38, 0x7E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $ + 0x10, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x8C, 0x41, 0x00, 0x8C, 0x71, 0x00, 0xFC, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0xC0, 0x07, 0x00, 0xE0, 0x1F, 0x00, 0x78, 0x3F, 0x00, 0x1C, 0x63, 0x00, 0x04, 0x63, 0x00, 0x00, 0x63, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, // Code for char % + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x70, 0x3E, 0x00, 0xF8, 0x73, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x63, 0x00, 0x8C, 0x67, 0x00, 0xFC, 0x6C, 0x00, 0x78, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char & + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' + 0x06, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0xF8, 0xFF, 0x00, 0x3E, 0xE0, 0x03, 0x07, 0x00, 0x07, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( + 0x05, 0x02, 0x00, 0x02, 0x07, 0x00, 0x07, 0x3E, 0xE0, 0x03, 0xF8, 0xFF, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x01, 0x00, 0xB0, 0x03, 0x00, 0xFC, 0x00, 0x00, 0xEC, 0x00, 0x00, 0xB0, 0x03, 0x00, 0x30, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char * + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xC0, 0x3F, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , + 0x06, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . + 0x08, 0x00, 0x80, 0x07, 0x00, 0xF0, 0x03, 0x00, 0x7E, 0x00, 0x80, 0x0F, 0x00, 0xF0, 0x03, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / + 0x0A, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0xF8, 0x3F, 0x00, 0x1C, 0x70, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x1C, 0x70, 0x00, 0xF8, 0x3F, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 0 + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 + 0x09, 0x00, 0x00, 0x00, 0x08, 0x70, 0x00, 0x18, 0x78, 0x00, 0x0C, 0x6C, 0x00, 0x0C, 0x66, 0x00, 0x0C, 0x63, 0x00, 0x8C, 0x61, 0x00, 0xF8, 0x61, 0x00, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 2 + 0x0A, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x1C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0xF8, 0x73, 0x00, 0x70, 0x3F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 3 + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0F, 0x00, 0xC0, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0x70, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 4 + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xFC, 0x61, 0x00, 0xFC, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x0C, 0x73, 0x00, 0x0C, 0x3F, 0x00, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5 + 0x0A, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x3F, 0x00, 0xB0, 0x71, 0x00, 0x98, 0x61, 0x00, 0x98, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x73, 0x00, 0x0C, 0x3F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6 + 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x70, 0x00, 0x0C, 0x7E, 0x00, 0x8C, 0x0F, 0x00, 0xEC, 0x01, 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7 + 0x0A, 0x00, 0x00, 0x00, 0x70, 0x1C, 0x00, 0xF8, 0x3E, 0x00, 0x9C, 0x73, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x63, 0x00, 0x9C, 0x73, 0x00, 0xF8, 0x3E, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8 + 0x0A, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x61, 0x00, 0x9C, 0x63, 0x00, 0x0C, 0x63, 0x00, 0x0C, 0x73, 0x00, 0x0C, 0x33, 0x00, 0x1C, 0x3F, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9 + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0xF0, 0x03, 0xC0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0xC0, 0x30, 0x00, 0xC0, 0x30, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char < + 0x0A, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char = + 0x0A, 0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0xC0, 0x30, 0x00, 0xC0, 0x30, 0x00, 0xC0, 0x39, 0x00, 0x80, 0x19, 0x00, 0x80, 0x19, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > + 0x07, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x6E, 0x00, 0x0C, 0x6F, 0x00, 0x8C, 0x03, 0x00, 0xF8, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ? + 0x11, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0xF0, 0xFF, 0x00, 0x78, 0xE0, 0x01, 0x1C, 0x80, 0x03, 0x0C, 0x1F, 0x03, 0xCE, 0x3F, 0x07, 0xE6, 0x70, 0x06, 0x66, 0x60, 0x06, 0x66, 0x60, 0x06, 0x66, 0x60, 0x06, 0xE6, 0x7F, 0x06, 0xEC, 0x7F, 0x06, 0x1C, 0x60, 0x00, 0x38, 0x70, 0x00, 0xF0, 0x3F, 0x00, 0xC0, 0x0F, 0x00, // Code for char @ + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x7C, 0x00, 0x80, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0x7C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x7C, 0x0C, 0x00, 0xF0, 0x0F, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char A + 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0xF8, 0x73, 0x00, 0x70, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char B + 0x0B, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0xF0, 0x1F, 0x00, 0x38, 0x38, 0x00, 0x18, 0x70, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x1C, 0x70, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char C + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x18, 0x30, 0x00, 0x38, 0x38, 0x00, 0xF0, 0x1F, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char D + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x8C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F + 0x0C, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0x38, 0x38, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x1C, 0x7F, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char G + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char H + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I + 0x09, 0x00, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char J + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x80, 0x03, 0x00, 0xC0, 0x03, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x1E, 0x00, 0x38, 0x3C, 0x00, 0x1C, 0x78, 0x00, 0x0C, 0x60, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char K + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1F, 0x00, 0xE0, 0x03, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char M + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char N + 0x0E, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0x38, 0x38, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x18, 0x30, 0x00, 0x38, 0x38, 0x00, 0xF0, 0x1F, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char O + 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x0C, 0x03, 0x00, 0x0C, 0x03, 0x00, 0x0C, 0x03, 0x00, 0x0C, 0x03, 0x00, 0x9C, 0x03, 0x00, 0xF8, 0x01, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char P + 0x0E, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0x38, 0x38, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0xE0, 0x01, 0x0C, 0xE0, 0x03, 0x0C, 0x60, 0x03, 0x18, 0x70, 0x07, 0x38, 0x38, 0x06, 0xF0, 0x1F, 0x02, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Q + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x0C, 0x03, 0x00, 0x0C, 0x03, 0x00, 0x0C, 0x07, 0x00, 0x0C, 0x0F, 0x00, 0x9C, 0x3D, 0x00, 0xF8, 0x79, 0x00, 0xF0, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char R + 0x09, 0x00, 0x00, 0x00, 0x70, 0x20, 0x00, 0xF8, 0x70, 0x00, 0x8C, 0x61, 0x00, 0x8C, 0x61, 0x00, 0x0C, 0x63, 0x00, 0x0C, 0x63, 0x00, 0x1C, 0x3F, 0x00, 0x08, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char S + 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T + 0x0C, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char U + 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7C, 0x00, 0x80, 0x1F, 0x00, 0xF0, 0x03, 0x00, 0x7C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char V + 0x11, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC, 0x01, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0xE0, 0x3F, 0x00, 0xFC, 0x03, 0x00, 0x1C, 0x00, 0x00, // Code for char W + 0x0B, 0x04, 0x40, 0x00, 0x0C, 0x60, 0x00, 0x3C, 0x78, 0x00, 0x70, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x80, 0x03, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x1C, 0x00, 0x3C, 0x78, 0x00, 0x0C, 0x60, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char X + 0x0C, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x80, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0xE0, 0x01, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Y + 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x78, 0x00, 0x0C, 0x7E, 0x00, 0x0C, 0x67, 0x00, 0x8C, 0x63, 0x00, 0xEC, 0x60, 0x00, 0x7C, 0x60, 0x00, 0x3C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Z + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x07, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ + 0x09, 0x01, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x80, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash + 0x05, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] + 0x0A, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x01, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ^ + 0x0A, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char _ + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` + 0x09, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x60, 0x7C, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0xC0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char a + 0x0A, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0xE0, 0x30, 0x00, 0xC0, 0x3F, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char b + 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0xE0, 0x70, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0xE0, 0x60, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char c + 0x0A, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0xC0, 0x3F, 0x00, 0xE0, 0x30, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char d + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0xC0, 0x76, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0xE0, 0x66, 0x00, 0xC0, 0x37, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char e + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xC0, 0x3F, 0x03, 0xC0, 0x70, 0x06, 0x60, 0x60, 0x06, 0x60, 0x60, 0x06, 0x60, 0x60, 0x06, 0x60, 0x30, 0x07, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char g + 0x0A, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x7F, 0x00, 0xE6, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i + 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0xE6, 0xFF, 0x07, 0xE6, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j + 0x0A, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x1D, 0x00, 0xC0, 0x38, 0x00, 0x60, 0x70, 0x00, 0x20, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char k + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l + 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char m + 0x0A, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char n + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0xC0, 0x3F, 0x00, 0xE0, 0x70, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0xE0, 0x70, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char o + 0x0A, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0x60, 0x30, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0xC0, 0x70, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char p + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0xC0, 0x70, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0xE0, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char q + 0x07, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r + 0x08, 0x00, 0x00, 0x00, 0xC0, 0x61, 0x00, 0xE0, 0x63, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0x60, 0x66, 0x00, 0x60, 0x7C, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s + 0x07, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0xFC, 0x7F, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t + 0x0A, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char u + 0x0A, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7C, 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char v + 0x0E, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7E, 0x00, 0xC0, 0x0F, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7F, 0x00, 0xE0, 0x1F, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char w + 0x0A, 0x20, 0x40, 0x00, 0x60, 0x60, 0x00, 0xE0, 0x70, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x70, 0x00, 0x60, 0x60, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char x + 0x0A, 0x00, 0x00, 0x06, 0x60, 0x00, 0x06, 0xE0, 0x03, 0x06, 0x80, 0x1F, 0x07, 0x00, 0xFC, 0x03, 0x00, 0xE0, 0x01, 0x00, 0xFC, 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y + 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x78, 0x00, 0x60, 0x7C, 0x00, 0x60, 0x6E, 0x00, 0xE0, 0x67, 0x00, 0xE0, 0x61, 0x00, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char z + 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, 0x07, 0x00, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char { + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | + 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0xFF, 0xFC, 0x07, 0xFE, 0xFF, 0x03, 0x80, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x07, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x80, 0x07, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ~ + 0x09, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char  + }; + diff --git a/font/ubuntu.py b/font/ubuntu.py new file mode 100644 index 0000000..de5e033 --- /dev/null +++ b/font/ubuntu.py @@ -0,0 +1,99 @@ +# Code generated by CfontToPython.py +import pyfont +_font = b'\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\xFC\x6F\x00\xFC\x6F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x00\x00\x00\x00\x00\x3E\x00\x00\x3E\x00\x00\x00\x00\x00\x00\x00\x00\x3E\x00\x00\x3E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\x60\x0C\x00\x60\x6C\x00\x60\x7F\x00\xF0\x1F\x00\xFC\x0D\x00\x6C\x6C\x00\x60\x7F\x00\xF0\x1F\x00\xFC\x0D\x00\x6C\x0C\x00\x60\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x00\x00\xF0\x30\x00\xF0\x71\x00\x98\x61\x00\x1E\xE3\x01\x1E\xE3\x01\x18\x67\x00\x38\x7E\x00\x00\x3C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x10\x00\x00\x00\x78\x00\x00\xFC\x00\x00\x8C\x01\x00\x8C\x41\x00\x8C\x71\x00\xFC\x3C\x00\xF8\x0F\x00\xC0\x07\x00\xE0\x1F\x00\x78\x3F\x00\x1C\x63\x00\x04\x63\x00\x00\x63\x00\x00\x3F\x00\x00\x3E\x00\x00\x00\x00\ +\x0D\x00\x00\x00\x00\x1C\x00\x70\x3E\x00\xF8\x73\x00\x8C\x61\x00\x8C\x63\x00\x8C\x67\x00\xFC\x6C\x00\x78\x3C\x00\x00\x38\x00\x00\x7E\x00\x00\x66\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\x3E\x00\x00\x3E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x06\x00\x00\x00\xC0\x1F\x00\xF8\xFF\x00\x3E\xE0\x03\x07\x00\x07\x02\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x05\x02\x00\x02\x07\x00\x07\x3E\xE0\x03\xF8\xFF\x00\xC0\x1F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x00\x00\x00\x20\x00\x00\x30\x01\x00\xB0\x03\x00\xFC\x00\x00\xEC\x00\x00\xB0\x03\x00\x30\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\xC0\x3F\x00\xC0\x3F\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x01\x00\xF0\x03\x00\xF0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x06\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x80\x07\x00\xF0\x03\x00\x7E\x00\x80\x0F\x00\xF0\x03\x00\x7E\x00\x00\x0F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xE0\x0F\x00\xF8\x3F\x00\x1C\x70\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x1C\x70\x00\xF8\x3F\x00\xE0\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x00\x00\x00\x00\x00\x20\x00\x00\x30\x00\x00\x30\x00\x00\x18\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x00\x00\x00\x08\x70\x00\x18\x78\x00\x0C\x6C\x00\x0C\x66\x00\x0C\x63\x00\x8C\x61\x00\xF8\x61\x00\x70\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x08\x30\x00\x1C\x60\x00\x0C\x60\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\xF8\x73\x00\x70\x3F\x00\x00\x1E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x0E\x00\x00\x0F\x00\xC0\x0F\x00\xE0\x0C\x00\x70\x0C\x00\x18\x0C\x00\xFC\x7F\x00\xFC\x7F\x00\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x30\x00\xFC\x61\x00\xFC\x61\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\x0C\x73\x00\x0C\x3F\x00\x0C\x1E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x80\x0F\x00\xE0\x3F\x00\xB0\x71\x00\x98\x61\x00\x98\x61\x00\x8C\x61\x00\x8C\x73\x00\x0C\x3F\x00\x00\x1E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x0C\x00\x00\x0C\x00\x00\x0C\x70\x00\x0C\x7E\x00\x8C\x0F\x00\xEC\x01\x00\x7C\x00\x00\x3C\x00\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x70\x1C\x00\xF8\x3E\x00\x9C\x73\x00\x8C\x61\x00\x8C\x61\x00\x8C\x63\x00\x9C\x73\x00\xF8\x3E\x00\x70\x1C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xF0\x00\x00\xF8\x61\x00\x9C\x63\x00\x0C\x63\x00\x0C\x73\x00\x0C\x33\x00\x1C\x3F\x00\xF8\x1F\x00\xE0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\xC0\x60\x00\xC0\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x01\xC0\xF0\x03\xC0\xF0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x0F\x00\x00\x0F\x00\x80\x19\x00\x80\x19\x00\xC0\x30\x00\xC0\x30\x00\x40\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x80\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x40\x20\x00\xC0\x30\x00\xC0\x30\x00\xC0\x39\x00\x80\x19\x00\x80\x19\x00\x00\x0F\x00\x00\x0F\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x07\x18\x00\x00\x0C\x00\x00\x0C\x6E\x00\x0C\x6F\x00\x8C\x03\x00\xF8\x01\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x11\x00\x00\x00\x80\x3F\x00\xF0\xFF\x00\x78\xE0\x01\x1C\x80\x03\x0C\x1F\x03\xCE\x3F\x07\xE6\x70\x06\x66\x60\x06\x66\x60\x06\x66\x60\x06\xE6\x7F\x06\xEC\x7F\x06\x1C\x60\x00\x38\x70\x00\xF0\x3F\x00\xC0\x0F\x00\ +\x0C\x00\x00\x00\x00\x60\x00\x00\x7C\x00\x80\x1F\x00\xF0\x0F\x00\x7C\x0C\x00\x1C\x0C\x00\x7C\x0C\x00\xF0\x0F\x00\x80\x1F\x00\x00\x7C\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0B\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\xF8\x73\x00\x70\x3E\x00\x00\x1E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0B\x00\x00\x00\xC0\x0F\x00\xF0\x1F\x00\x38\x38\x00\x18\x70\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x1C\x70\x00\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0D\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x18\x30\x00\x38\x38\x00\xF0\x1F\x00\xC0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\x8C\x61\x00\x0C\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x8C\x01\x00\x8C\x01\x00\x8C\x01\x00\x8C\x01\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\xC0\x07\x00\xF0\x1F\x00\x38\x38\x00\x18\x30\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x1C\x7F\x00\x08\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x80\x01\x00\x80\x01\x00\x80\x01\x00\x80\x01\x00\x80\x01\x00\x80\x01\x00\xFC\x7F\x00\xFC\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x00\x20\x00\x00\x70\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x70\x00\xFC\x3F\x00\xFC\x1F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x80\x03\x00\xC0\x03\x00\xE0\x07\x00\x70\x1E\x00\x38\x3C\x00\x1C\x78\x00\x0C\x60\x00\x04\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0F\x00\x00\x00\x00\x00\x00\xF0\x7F\x00\xFC\x7F\x00\x3C\x00\x00\xF8\x00\x00\xE0\x03\x00\x00\x1F\x00\x00\x1C\x00\x00\x1F\x00\xE0\x03\x00\xF8\x00\x00\x3C\x00\x00\xFC\x7F\x00\xE0\x7F\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x78\x00\x00\xF0\x00\x00\xC0\x01\x00\x80\x07\x00\x00\x0E\x00\x00\x3C\x00\xFC\x7F\x00\xFC\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0E\x00\x00\x00\xC0\x07\x00\xF0\x1F\x00\x38\x38\x00\x18\x30\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x0C\x60\x00\x18\x30\x00\x38\x38\x00\xF0\x1F\x00\xC0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0B\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x0C\x03\x00\x0C\x03\x00\x0C\x03\x00\x0C\x03\x00\x9C\x03\x00\xF8\x01\x00\xF0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0E\x00\x00\x00\xC0\x07\x00\xF0\x1F\x00\x38\x38\x00\x18\x30\x00\x0C\x60\x00\x0C\x60\x00\x0C\xE0\x01\x0C\xE0\x03\x0C\x60\x03\x18\x70\x07\x38\x38\x06\xF0\x1F\x02\xC0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\x00\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x0C\x03\x00\x0C\x03\x00\x0C\x07\x00\x0C\x0F\x00\x9C\x3D\x00\xF8\x79\x00\xF0\x60\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x00\x00\x00\x70\x20\x00\xF8\x70\x00\x8C\x61\x00\x8C\x61\x00\x0C\x63\x00\x0C\x63\x00\x1C\x3F\x00\x08\x1E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0B\x00\x00\x00\x0C\x00\x00\x0C\x00\x00\x0C\x00\x00\x0C\x00\x00\xFC\x7F\x00\xFC\x7F\x00\x0C\x00\x00\x0C\x00\x00\x0C\x00\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\xFC\x0F\x00\xFC\x3F\x00\x00\x30\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x30\x00\xFC\x3F\x00\xFC\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x00\x00\x00\x0C\x00\x00\x7C\x00\x00\xF0\x03\x00\x80\x1F\x00\x00\x7C\x00\x00\x70\x00\x00\x7C\x00\x80\x1F\x00\xF0\x03\x00\x7C\x00\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x11\x00\x00\x00\x0C\x00\x00\xFC\x01\x00\xF0\x3F\x00\x00\x7E\x00\x00\x78\x00\x00\x3F\x00\xE0\x07\x00\xF8\x00\x00\xF8\x00\x00\xE0\x07\x00\x00\x3F\x00\x00\x78\x00\x00\x7C\x00\xE0\x3F\x00\xFC\x03\x00\x1C\x00\x00\ +\x0B\x04\x40\x00\x0C\x60\x00\x3C\x78\x00\x70\x1C\x00\xE0\x07\x00\x80\x03\x00\xE0\x07\x00\x70\x1C\x00\x3C\x78\x00\x0C\x60\x00\x04\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0C\x04\x00\x00\x1C\x00\x00\x3C\x00\x00\xF8\x00\x00\xE0\x01\x00\x80\x7F\x00\x80\x7F\x00\xE0\x01\x00\xF0\x00\x00\x3C\x00\x00\x1C\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x0C\x60\x00\x0C\x78\x00\x0C\x7E\x00\x0C\x67\x00\x8C\x63\x00\xEC\x60\x00\x7C\x60\x00\x3C\x60\x00\x0C\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x07\x00\x00\x00\x00\x00\x00\xFF\xFF\x07\xFF\xFF\x07\x03\x00\x06\x03\x00\x06\x03\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x01\x00\x00\x0F\x00\x00\x7E\x00\x00\xF0\x03\x00\x80\x0F\x00\x00\x7E\x00\x00\xF0\x03\x00\x80\x07\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x05\x03\x00\x06\x03\x00\x06\x03\x00\x06\xFF\xFF\x07\xFF\xFF\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x80\x00\x00\xC0\x01\x00\xF0\x00\x00\x3C\x00\x00\x0C\x00\x00\x3C\x00\x00\xF0\x00\x00\xC0\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x06\x00\x00\x00\x00\x00\x00\x02\x00\x00\x07\x00\x00\x0E\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x09\x00\x00\x00\x00\x3C\x00\x60\x7C\x00\x60\x66\x00\x60\x66\x00\x60\x66\x00\x60\x66\x00\xC0\x7F\x00\x80\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xFE\x7F\x00\xFE\x7F\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\xE0\x30\x00\xC0\x3F\x00\x80\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x00\x00\x00\x1F\x00\xC0\x3F\x00\xE0\x70\x00\x60\x60\x00\x60\x60\x00\xE0\x60\x00\x40\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x80\x0F\x00\xC0\x3F\x00\xE0\x30\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\xFE\x7F\x00\xFE\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x1F\x00\xC0\x3F\x00\xC0\x76\x00\x60\x66\x00\x60\x66\x00\x60\x66\x00\xE0\x66\x00\xC0\x37\x00\x80\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x00\x00\x00\x00\x00\xF8\x7F\x00\xFC\x7F\x00\x66\x00\x00\x66\x00\x00\x66\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x1F\x00\xC0\x3F\x03\xC0\x70\x06\x60\x60\x06\x60\x60\x06\x60\x60\x06\x60\x30\x07\xE0\xFF\x03\xE0\xFF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xFE\x7F\x00\xFE\x7F\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\xE0\x00\x00\xC0\x7F\x00\x80\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\xE6\x7F\x00\xE6\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x06\x00\x00\x06\xE6\xFF\x07\xE6\xFF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xFE\x7F\x00\xFE\x7F\x00\x00\x06\x00\x00\x0F\x00\x80\x1D\x00\xC0\x38\x00\x60\x70\x00\x20\x60\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x06\x00\x00\x00\x00\x00\x00\xFE\x3F\x00\xFE\x7F\x00\x00\x60\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0F\x00\x00\x00\xE0\x7F\x00\xE0\x7F\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\xE0\x00\x00\xE0\x7F\x00\xE0\x7F\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\xE0\x00\x00\xC0\x7F\x00\x80\x7F\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xE0\x7F\x00\xE0\x7F\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\xE0\x00\x00\xC0\x7F\x00\x80\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x0F\x00\xC0\x3F\x00\xE0\x70\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\xE0\x70\x00\xC0\x3F\x00\x00\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xE0\xFF\x07\xE0\xFF\x07\x60\x30\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\xC0\x70\x00\xC0\x3F\x00\x00\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x00\x1F\x00\xC0\x3F\x00\xC0\x70\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\xE0\xFF\x07\xE0\xFF\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x07\x00\x00\x00\xE0\x7F\x00\xE0\x7F\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x00\x00\xC0\x61\x00\xE0\x63\x00\x60\x66\x00\x60\x66\x00\x60\x66\x00\x60\x7C\x00\x60\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x07\x00\x00\x00\xFC\x1F\x00\xFC\x7F\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\x60\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\xE0\x1F\x00\xE0\x3F\x00\x00\x70\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\x00\x60\x00\xE0\x7F\x00\xE0\x7F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x00\x60\x00\x00\xE0\x03\x00\x80\x1F\x00\x00\x7C\x00\x00\x70\x00\x00\x7C\x00\x80\x1F\x00\xE0\x03\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0E\x00\x00\x00\xE0\x00\x00\xE0\x1F\x00\x00\x7F\x00\x00\x70\x00\x00\x7E\x00\xC0\x0F\x00\xE0\x01\x00\xE0\x0F\x00\x00\x7E\x00\x00\x70\x00\x00\x7F\x00\xE0\x1F\x00\xE0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x20\x40\x00\x60\x60\x00\xE0\x70\x00\x80\x1F\x00\x00\x0F\x00\x00\x0F\x00\x80\x1F\x00\xE0\x70\x00\x60\x60\x00\x20\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x0A\x00\x00\x06\x60\x00\x06\xE0\x03\x06\x80\x1F\x07\x00\xFC\x03\x00\xE0\x01\x00\xFC\x00\x80\x1F\x00\xE0\x03\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x08\x00\x00\x00\x60\x60\x00\x60\x78\x00\x60\x7C\x00\x60\x6E\x00\xE0\x67\x00\xE0\x61\x00\xE0\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x07\x00\x00\x00\x00\x03\x00\x80\x07\x00\xFE\xFF\x03\xFF\xFC\x07\x03\x00\x06\x03\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x04\x00\x00\x00\x00\x00\x00\xFF\xFF\x07\xFF\xFF\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x06\x03\x00\x06\x03\x00\x06\xFF\xFC\x07\xFE\xFF\x03\x80\x07\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +' +font = pyfont.PyFont(_font, 19, 17, 94) + diff --git a/reverse/reverse.py b/reverse/reverse.py new file mode 100644 index 0000000..9e7fe52 --- /dev/null +++ b/reverse/reverse.py @@ -0,0 +1,23 @@ +@micropython.asm_thumb +def reverse(r0, r1): # bytearray, len(bytearray) + add(r4, r0, r1) + sub(r4, 1) # end address + label(LOOP) + ldrb(r5, [r0, 0]) + ldrb(r6, [r4, 0]) + strb(r6, [r0, 0]) + strb(r5, [r4, 0]) + add(r0, 1) + sub(r4, 1) + cmp(r4, r0) + bpl(LOOP) + +def test(): + a = bytearray([0, 1, 2, 3]) # even length + reverse(a, len(a)) + print(a) + a = bytearray([0, 1, 2, 3, 4]) # odd length + reverse(a, len(a)) + print(a) + +